.net 調用Oracle.DataAccess.Client批量增加資料

來源:互聯網
上載者:User

標籤:des   blog   http   io   ar   os   sp   for   on   

  

1、添加引用

using Oracle.DataAccess.Client;

using System.Configuration;

 2、代碼 增加方法

//DestinationTableName 表名

//connectionString 串連

string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnectionString"].ConnectionString;

config設定檔中 

<add name="DefaultConnectionString" connectionString="Data Source=庫名;User ID=使用者名稱;Password=密碼;" providerName="System.Data.OracleClient"/>

//dataTable 資料

 public void Insert(string DestinationTableName, string connectionString, DataTable dataTable)
        {
            if (dataTable.Rows.Count == 0)
            {
                return;
            }

        //string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnectionString"].ConnectionString;

         string strMainTableName = "表名";
         // 鎖表防止並發產生重複資料 刪除資料表已經存在的同一批資料
        string sSQLLock = "lock table  " + strMainTableName + " in share row exclusive mode";
        string strDeleSqlTemp = string.Format("delete from " + strMainTableName + " where ny=‘{0}‘ and dz in ({1})", strDate, strAdd);

        //串連

        using (OracleConnection conn = new OracleConnection(connectionString))
                        {
                            int recordCount = dtTemp.Rows.Count;//資料條數
                            conn.Open();//開啟串連
                            OracleTransaction trans = conn.BeginTransaction();//串連開啟事務

          try
                            {
                                //鎖表
                                OracleCommand cmdLock = new OracleCommand(sSQLLock, conn);
                                cmdLock.ExecuteNonQuery();
                                //刪除原有資料
                                OracleCommand cmdDele = new OracleCommand(strDeleSqlTemp, conn);
                                cmdDele.ExecuteNonQuery();

            //擷取目標表表結構
                                DataTable DestDataTable = GetOracleTableSchema(strMainTableName);

           //擷取insert 語句
                                string strSql = common.GenerateInserSql(strMainTableName, dtTemp, "");
                                OracleCommand cmd = new OracleCommand(strSql, conn);

           //參數賦值
                                common.GenerateParameter(DestDataTable, dtTemp, cmd);
                                cmd.Transaction = trans;
                                cmd.ArrayBindCount = recordCount;
                                cmd.BindByName = true;
                                cmd.ExecuteNonQuery();
                                trans.Commit(); //執行

          }
                            catch (Exception ex)
                            {
                                trans.Rollback();
                                strRetVal = common.CreateXml("0007", "錯誤資訊:" + ex.Message);
                            }
                            finally
                            {
                                conn.Close();
                            }
                        }

 }

擷取表列的方法GetOracleTableSchema,參數賦值方法GenerateInserSql在部落格中詳細說明http://www.cnblogs.com/xuxin-1989/p/4157697.html

.net 調用Oracle.DataAccess.Client批量增加資料

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.