DataSet批量更新數據庫


     業務需要從一個數據庫復制數據到另一個數據庫。當然可以一條一條的復制,但是兩個數據庫的表結構相同,通過操作DataSet批量復制數據到另一個數據庫,不管從開發效率還是執行效率上來說是不是更好一些呢。

    需要注意的點,如下:

1、數據庫中必須有主鍵,這樣才便於增刪改查;

2、SqlDataAdapter必須放在SqlCommandBuilder中,以用於批量執行DataSet中的修改;

3、修改后的DataSet需執行AcceptChanges()方法后,才能更新DataSet,以便於下一步操作;

4、SqlDataAdapter執行Update的數據庫不一定是Fill的數據庫,只要表結構相同即可。

示例代碼如下:

        public void CopyData(DataSet ds, string conString, string sql, string tableName)
        {
            SqlConnection conn = new SqlConnection(conString);

            try
            {
                conn.Open();
                SqlDataAdapter ada = new SqlDataAdapter(sql, conn);
                SqlCommandBuilder cb = new SqlCommandBuilder(ada);

                DataSet destDataSet = new DataSet();
                ada.Fill(destDataSet, tableName);

                //Delete Rows
                foreach (DataRow item in destDataSet.Tables["Pattern"].Rows)
                {
                    item.Delete();
                }
                DataTable dt = null;

                dt = destDataSet.Tables["Pattern"].GetChanges();
                if (dt != null)
                {
                    ada.Update(dt);
                }

                //Insert Rows
                foreach (DataRow item in ds.Tables["Pattern"].Rows)
                {
                    item.SetAdded();
                }
                dt = ds.Tables["Pattern"].GetChanges();
                if (dt != null)
                {
                    ada.Update(dt);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                conn.Close();
            }
        }

 這是一個復制數據庫的方法,功能為刪除掉原有數據庫中的數據,然后根據傳過來的DataSet,把DataSet中的數據更新到數據庫中。

這只是一個小例子,有不當的地方,希望大家討論指正。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM