oracle dbf文件读取,读取oracle数据表,导出到DBF文件。
后台单线程每隔一定时间自动更新,从oracle数据库用两种方式读取数据,并将数据导出到DBF文件。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Data.OracleClient;
using System.Threading;
using System.Data.Odbc;
namespace RealtimeReadOrcaleSite
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
WebpageCrawling();
//SqlInterface();
}
//每隔一定时间自动抓取网页数据,并更新数据库
private void WebpageCrawling()
{
//创建线程
Thread mythread = new Thread(UpdateCrawlingThread);
mythread.SetApartmentState(ApartmentState.STA);//属性设置成单线程
mythread.IsBackground = true;//设置为后台线程
mythread.Start();
}
//单线程,每隔一段时间抓取一次
private void UpdateCrawlingThread(Object state)
{
while (true)
{
OneCrawling();
Thread.Sleep(10 * 60 * 1000);//毫秒为单位
}
}
//一次抓取过程
private void OneCrawling()
{
//时间性能测试
DateTime starttime = DateTime.Now;
try
{
string strConn = "data source=portal_rac;user id=name_user;password=name_user123";
using (OracleConnection oracleConn = new OracleConnection(strConn))
{
oracleConn.Open();
OracleCommand oracleCommand = oracleConn.CreateCommand();
string strComm = " SELECT stano FROM observe.ele_awst_traffic3";
//oracleCommand.CommandText = strComm;
//OracleDataReader oracleReader = oracleCommand.ExecuteReader();//C#的话,如果返回结果超过500行,建议使用DataAdapter,返回少量行数,就像分页显示的,
////建议用,DataReader前者适合于返回大量数据,后者适合返回小量数据。
//int i = 0;
//while (oracleReader.Read())
//{
// break;
// i++;
// //MessageBox.Show("1", oracleReader[0].ToString());
// //break;
// if (i % 10000 == 0)
// {
// MessageBox.Show(i.ToString(), oracleReader[0].ToString());
// }
//}
//MessageBox.Show(oracleReader.VisibleFieldCount.ToString(), oracleReader[18].ToString());
//oracleReader.Close();
OracleDataAdapter myda = new OracleDataAdapter(strComm, oracleConn);
DataSet myds = new DataSet();
myda.Fill(myds, "temp");
//MessageBox.Show(myds.Tables["temp"].Rows[0]["TEMP"].ToString());
oracleConn.Close();//
System.Data.Odbc.OdbcConnection conn = new System.Data.Odbc.OdbcConnection();
string table = @"C:\test.dbf";
string connStr = @"Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=" + table + ";Exclusive=No;NULL=NO;Collate=Machine;BACKGROUNDFETCH=NO;DELETED=NO";
conn.ConnectionString = connStr;
conn.Open();
OdbcCommand cmd = new OdbcCommand();
cmd.Connection = conn;
string sql = "CREATE TABLE " + table + " (cc int(10));";
sql += "insert into " + table + " (stano) values (33000);";
cmd.CommandText = sql;
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
//sql = @"select * from " + table;
//OdbcDataAdapter da = new OdbcDataAdapter(sql, conn);
//DataTable dt = new DataTable();
//da.Fill(dt);
//this.GridView1.DataSource = dt.DefaultView;
//this.GridView1.DataBind();
}
}
catch (WebException webEx)
{
Console.WriteLine(webEx.Message.ToString());
}
//时间性能测试
DateTime endtime = DateTime.Now;
System.TimeSpan ts = endtime.Subtract(starttime);
MessageBox.Show("ok\n" + Convert.ToString(ts.TotalMilliseconds) + "ms");
}
//执行SQL数据存储语句
private void Insert(string sqlstr)
{
}
}
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)