zoukankan      html  css  js  c++  java
  • c#将Excel数据传入Oracle数据库的方法和Oracle的传参规范

    1.如果传递的是到Oracle中是date类型的string.Format()方式的问题实例:

       string strinsert=string.Format("insert into tabextotab(ID,name,thetime) values({0},'{1}',to_date('{2}','yyyy-mm-dd hh24:mi:ss') )",id,name,ptime);

    2.使用规范传参方式实现Excel指入oracle


             public void GetInsertToOracle(string Path)
             {
                 DataSet ds;
                 if (File.Exists(Path))
                     ds = ImportExcel(Path);   //获得Excel
                 else
                     return;

                 int odr = 0;

                 OracleConnection conn = new OracleConnection("Data Source=orcl;User ID=scott;Password=leiyinghua");//获得conn连接

                 try
                 {
                      conn.Open();

                      OracleCommand cmd = conn.CreateCommand();

                      cmd.CommandText = "INSERT INTO kk.kkhmd (xh,hpzl,hphm,bz,larq,fdjh,clpp,cjh,jdcsyr,cllx,csys) VALUES(:xh,:hpzl,:hphm,:bz,:larq,:fdjh,:clpp,:cjh,:jdcsyr,:cllx,:csys) ";//删除记录

                      int dsLength = ds.Tables[0].Rows.Count;//获得Excel中数据长度

                      for (int i = 1; i < dsLength; i++)
                      {
                       cmd.Parameters.Add("xh", OracleType.VarChar).Value = ds.Tables[0].Rows[i][0];
                       cmd.Parameters.Add("hpzl", OracleType.VarChar).Value = ds.Tables[0].Rows[i][1];
                       cmd.Parameters.Add("hphm", OracleType.VarChar).Value = ds.Tables[0].Rows[i][2];
                       cmd.Parameters.Add("bz", OracleType.VarChar).Value = ds.Tables[0].Rows[i][3];
                       cmd.Parameters.Add("larq", OracleType.DateTime).Value = ds.Tables[0].Rows[i][4];
                       cmd.Parameters.Add("fdjh", OracleType.VarChar).Value = ds.Tables[0].Rows[i][5];

                       cmd.Parameters.Add("clpp", OracleType.VarChar).Value = ds.Tables[0].Rows[i][6];
                       cmd.Parameters.Add("cjh", OracleType.VarChar).Value = ds.Tables[0].Rows[i][7];
                       cmd.Parameters.Add("jdcsyr", OracleType.VarChar).Value = ds.Tables[0].Rows[i][8];

                       cmd.Parameters.Add("cllx", OracleType.VarChar).Value = ds.Tables[0].Rows[i][9];
                       cmd.Parameters.Add("csys", OracleType.VarChar).Value = ds.Tables[0].Rows[i][10];

                       odr = cmd.ExecuteNonQuery();//提交
                  }

                  //如果查到了数据,才使控制分页按钮生效
                  if (odr > 0 )
                       MessageBox.Show("导入成功");
                  conn.Close();
                 }
                 catch (Exception ee)
                 {
                     MessageBox.Show(ee.Message.ToString(), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                 }
             }        

            /// <summary>
            /// 将Excel读取到Dataset对象中
            /// </summary>
            /// <param name="strPath">Excel文件路径</param>
            /// <returns>填冲Excel数据的Dataset对象</returns>      
            public static DataSet ImportExcel(string file)
            {
                 FileInfo fileInfo = new FileInfo(file);
                 if (!fileInfo.Exists)
                  return null;

                 string strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + file + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1'";
                 OleDbConnection objConn = new OleDbConnection(strConn);
                 DataSet dsExcel = new DataSet();
                 try
                 {
                  objConn.Open();
                  string strSql = "select * from  [Sheet1$]";
                  OleDbDataAdapter odbcExcelDataAdapter = new OleDbDataAdapter(strSql, objConn);
                  odbcExcelDataAdapter.Fill(dsExcel);
                  return dsExcel;
                 }
                 catch (Exception ex)
                 {
                  throw ex;
                 }
           }

           // 还可以用oledb方式读取excel到datatable,然后再写入数据库。

          /// <summary>
          /// 将Excel读取到DataTab对象中
          /// </summary>
          /// <param name="strPath">Excel文件路径</param>
          /// <returns>填冲Excel数据的DatTable对象</returns>

          private DataTable GetData(string strPath)
          {
            DataTable dtbl = new DataTable();
            try
            {
                string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + strPath + ";" + "Extended Properties=Excel 8.0;";
                string strSheetName = "";
                using (OleDbConnection con = new OleDbConnection(strCon))
                {
                    con.Open();
                    DataTable dtbl1 = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                    //dataGridView2.DataSource = dtbl1;
                    strSheetName = dtbl1.Rows[0][2].ToString().Trim();
                }
                String strCmd = "select * from [" + strSheetName + "]";
                OleDbDataAdapter cmd = new OleDbDataAdapter(strCmd, strCon);
                cmd.Fill(dtbl);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            return dtbl;
          }

  • 相关阅读:
    【转】C#中的委托和事件
    ASP.NET上传文件实例代码
    我在配置OpenCV环境以及使用VS2013运行代码时遇到的问题
    JAVA_HOME环境变量失效的解决办法
    一道int和unsigned char之间强制类型转换的题目
    为什么不看好OpenStack:它的没落不可避免[转]
    一个销前谈云桌面的适用场景(再议云桌面营销之选择正确的客户环境)
    云桌面的前世今生
    云桌面三大谎言之GPU虚拟化
    如何理解清零心态
  • 原文地址:https://www.cnblogs.com/yingger/p/2687720.html
Copyright © 2011-2022 走看看