2012-07-05 226 views
2

我有一個DataTable MyDT象下面這樣:做MyDT東西更新DataTable的MySQL數據庫C#

string MyConString = "SERVER=" + sConfig_hostname + ";" + 
       "DATABASE=" + sConfig_dbname + ";" + 
       "UID=" + sConfig_dbusername + ";" + 
       "PASSWORD=" + sConfig_dbpassword + ";Allow Zero Datetime=true;"; 
      MySqlConnection connection = new MySqlConnection(MyConString); 
      string sQuery="Select * from Table"; 
      connection.Open(); 
      MySqlDataAdapter myDA = new MySqlDataAdapter(sQuery, connection); 
      myDA.SelectCommand.ExecuteNonQuery(); 
      DataTable MyDT=new DataTable()// <- My DataTable 
      myDA.Fill(MyDT); 
      connection.Close(); 
... 
... 
// do something with MyDT 
... 
... 

後,我想將其更新到數據庫中,我該怎麼做,我已搜查谷歌了頁面,但幾乎通過循環數據表進行更新。有沒有辦法更新整個datatable沒有循環?請幫助!感謝您閱讀

回答

4

您需要配置DataAdapter的SelectCommand,DeleteCommand,UpdateCommand和和InsertCommand屬性。您可以使用MySqlCommandBuilder來填充三個命令對象(選擇,刪除,更新)。

MySqlConnection connection = new MySqlConnection(MyConString); 
string sQuery="Select * from Table"; 

MySqlDataAdapter myDA = new MySqlDataAdapter(sQuery, connection); 
MySqlCommandBuilder cmb = new MySqlCommandBuilder(myDA); 

DataTable MyDT = new DataTable()// <- My DataTable 
myDA.Fill(MyDT); 

//Add new rows or delete/update existing one 
//and update the DataTable using 

myDA.Update(MyDT); 
+0

嗨AVD,你能送我要配置這些性能有一定的聯繫,我是新手,請原諒我的不好的語言。謝謝:)。 – user1466511

+0

@AVD你的'MySqlCommandBuilder cmb = new MySqlCommandBuilder(myDA)''做了什麼?你似乎沒有把它叫做別的地方。 – Chenxiao

+0

@Chenxiao - 它自動生成單表命令,用於協調對DataSet所做的更改和關聯的數據庫。這是一個只能被繼承的抽象類。 http://msdn.microsoft.com/en-us/library/system.data.common.dbcommandbuilder.aspx – adatapost