读取oracle数据表,导出到DBF文件。

来源:互联网 发布:王力宏 爱一点 知乎 编辑:程序博客网 时间:2024/04/28 14:07

后台单线程每隔一定时间自动更新,从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)        {                    }    }}


 

原创粉丝点击