C#读取excel并保存到Oracle数据库

来源:互联网 发布:槟榔淘宝店铺怎么装修 编辑:程序博客网 时间:2024/06/04 17:42

         前几天要做一个功能,设计到c#方面的知识,但是在之前从没有学习过c#,顶多也就是之前上大学的时候学过一点基础,但是现在已经全都忘了。于是各种谷歌,找了很多方面的东西,但是都是残缺不全,找了很久,最后还是解决了这个问题,实现了功能,所以最后准备记录下来防止以后再次使用的时候忘记,可以到时候拿出来看看。

         首先c#连接数据库,我这边使用的是Oracle 11g的数据库,使用OracleConnection来连接,需要安装Oracle的客户端,并且在程序中引入 System.Data.OracleClient; 。下面的就是c#连接Oracle的代码:  

         

            try {                //1,创建Oracle的连接对象                OracleConnection oc = new OracleConnection("Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XE)));User Id=amls;Password=amls;");                oc.Open();            }catch(Exception ex){                MessageBox.Show("error: "+ex.Message);            } MessageBox.Show("数据库连接成功!");
        注:    c#连接Oracle数据库的时候,可能会出现  “ 未找到oracle客户端和网络组件  ” 的错误提示,出现这个错误的解决方案就是:     需要安装Oracle 的客户端( 因为只能上传70M的资源文件,所以文件上传不了,没办法了……,自己搜索一下 win32_11gR2_client.zip  );   安装了OracleClient之后,数据库的连接就正常了;

           

         数据库连接好了,下面开始说一下C#读取excel文档:   (大致界面是这样的)

          

        当点击 " 数据导入 "按钮的时候,会开始触发事件,读取Excel文档并将读取的数据保存在 DataSet 集合,然后在保存到Oracle数据库中。首先来看看当点击 "  选择文件 "按钮的时候触发的事件代码: 

       

         OpenFileDialog openFiledialog1 = new OpenFileDialog();         openFiledialog1.Filter = "Excel文件|*.xls";         openFiledialog1.ShowDialog();         textBox1.Text = openFiledialog1.FileName;

       点击 “ 数据导入 ” 按钮的时候所触发的事件代码:

     

            DataSet dts = LoadDataFromExcel(textBox1.Text);            if(dts==null){              MessageBox.Show("数据为空!");            }else{                MessageBox.Show("数据不为空!");                addData(dts);            }

    

       public DataSet LoadDataFromExcel(string filePath)        {            try            {                string strConn;                strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";                OleDbConnection OleConn = new OleDbConnection(string.Format(strConn));                OleConn.Open();                String sql = "SELECT * FROM  [Sheet1$]";//可是更改Sheet名称,比如sheet2,等等                   OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);                DataSet OleDsExcle = new DataSet();                OleDaExcel.Fill(OleDsExcle, "Sheet1");                OleConn.Close();                return OleDsExcle;            }            catch (Exception err)            {                MessageBox.Show("数据绑定Excel失败!失败原因:" + err.Message, "提示信息",                    MessageBoxButtons.OK, MessageBoxIcon.Information);                return null;            }        }          public void addData(DataSet obj){            try            {                string strConnect = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XE)));User Id=amls;Password=amls;";                //string strConnect = "Provider=MSDATASHAPE;Data Provider=OraOLEDB.Oracle;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XE)));User Id=amls;Password=amls;";                OracleConnection dbConn = new OracleConnection(strConnect);                dbConn.Open();                foreach (DataTable dt in obj.Tables) //MyDataSet是自已定义并已赋值的DataSet对象。                {                   foreach (DataRow dr in dt.Rows) ///遍历所有的行                  {                      string sql = string.Format("INSERT INTO aml_blacklist_new(id,BATGROUPID,CTNM,YTNM,SCAC,CTID,SUS_ACTER,TYPE_DIS) VALUES(seq_aml_blacklist_new.nextval," + Convert.ToInt32(dr["编号"]) + ",'" + dr["中文名称"] + "','" + dr["英文名称"] + "','" + dr["基金账号"] + "','" + dr["证件号码"] + "','" + dr["可疑特征"] + "','" + dr["披露类型"] + "')");                      MessageBox.Show(sql);                      OracleCommand aCommand = new OracleCommand(sql, dbConn);                      aCommand.ExecuteNonQuery();                  }                 }                MessageBox.Show("成功了!");                dbConn.Close();            }            catch (Exception e){                MessageBox.Show(e.Message);            }         }
     

         以上代码就是 c#读取excel并保存到Oracle 11g的数据库的功能代码,希望这个代码可以帮助到需要帮助的人,另如果在实践的过程中有什么错误,可以在评论中留言,我会及时回复的! 我已经把这个Demo 例子给上传到网络上了,大家不懂的话也可以进行下载看看源码 (  c#读取excel并保存到Oracle 11g )

未找到oracle客户端和网络 “

1 0
原创粉丝点击