2011-05-26 151 views
2

我正在從我的應用程序生成數據表,並且我想將整個數據表保存到一個數據庫表中。將DataTable保存到數據庫表中

DataTable ds = //add the info from the queue in the application 

是如何產生的數據表,但怎麼做next.Show我一些syntax.I並不真正需要有select語句要麼,我只是想插入所有從DataTable中的信息爲已創建數據庫表(更新表格)。 我會使用ODBC連接訪問MySQL數據庫

我想通過數據集直接

public void update(DataTable ds) 
{ 
    try 
    { 
    lock (myLockHolder) 
    { 
     X1 = 1; 
     OdbcConnection con = 
     new OdbcConnection(LocalConnection.GetLocalConnetionString()); 
     OdbcCommand cmd; 
     OdbcDataAdapter da; 
     DataSet ds1=new DataSet(); 
     string query = ""; 
     query = "update parameter" + Environment.NewLine; 
     query += "set paramvalue=paramvalue,date_logged1=date_logged1," 
     + Environment.NewLine; 
     query += " Quality=Quality,date_logged=date_logged" 
     + Environment.NewLine; 
     query += " where itemID=itemID"; 
     cmd = new OdbcCommand(query, con); 
     da = new OdbcDataAdapter(cmd); 
     ds1=new DataSet(); 
     ds1.Tables.Add(ds); 
     da.Update(ds1);     

    } 
    } 
    catch { } 
    finally { } 
} 

它會像使用這種方法捕獲該異常 「更新無法更新數據到數據庫找到TableMapping ['Table']或DataTable'Table'。「

回答

1

您應該創建插入sql字符串,循環遍歷數據表中的所有行,爲數據表中的每列添加參數並執行此查詢。

string sql = "INSERT INTO T (A, B, C) VALUES (@A, @B, @C)"; 
using (SqlConnection conn = new SqlConnection(connectionString)) 
{ 
    conn.Open(); 
    foreach (DataRow r in myTable.Rows) 
    {  
     SqlCommand cmd = conn.CreateCommand();  
     cmd.CommandText = sql;  
     cmd.Parameters.AddWithValue("@A", r["A"]);  
     cmd.Parameters.AddWithValue("@B", r["B"]);  
     cmd.Parameters.AddWithValue("@C", r["C"]);  
     cmd.ExecuteNonQuery(); 
    } 
} 
+1

我想沒有foreach循環 – vrushali 2011-05-26 07:12:56

+1

這是醜陋的,但有點作品:)除了它不清除表開始。 – 2011-06-20 19:45:15

0

您寫道:>我想不foreach循環

嘗試使用MySqlDataTable類dotConnect for MySQL。閱讀有關MySqlDataTable.Update()方法和MySqlDataTable.CachedUpdates狀態的更多信息。

+0

我想通過數據集直接更新數據到數據庫 – vrushali 2011-05-26 08:56:40

+0

請看我的更改 – vrushali 2011-05-26 09:08:42

+2

看看這篇文章:'用DataAdapters(ADO.NET)更新數據源' - http://msdn.microsoft.com/zh-cn/ -us/library/33y2221y.aspx – Devart 2011-05-30 06:42:25

1
using (SqlConnection conn = new SqlConnection(connectionString)) 
{ 
    conn.Open(); 
    foreach (DataRow r in dataTable2.Rows) 
    { 
    string sql = "INSERT INTO BALREP (ACODE, ANAME, QTY) VALUES ('" +r["CODE"] + "', '" + r["NAME"] + "', '" + r["CELL"] + "')"; 
    SqlCommand cmd2 = con.CreateCommand(); 
    cmd.CommandText = sql; 
    cmd.ExecuteNonQuery(); 
    } 
} 
+0

這很容易受到SQL注入的影響,應該避免。 – Zorgarath 2016-04-22 16:29:24