2011-05-26 118 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