首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将DataTable保存到数据库表中

问将DataTable保存到数据库表中
EN

Stack Overflow用户
提问于 2011-05-26 13:52:32
回答 4查看 37.1K关注 0票数 2

我正在从我的应用程序生成一个数据表,我想将整个数据表保存到一个数据库表中。

代码语言:javascript
复制
DataTable ds = //add the info from the queue in the application

DataTable正在生成,但我不需要select语句,我只想将DataTable中的所有信息插入到已经创建的db表中(更新表)。我将使用ODBC连接来访问MYSQL数据库

我想通过dataset直接将数据更新到数据库中

代码语言:javascript
复制
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‘”。

EN

回答 4

Stack Overflow用户

发布于 2011-05-26 15:04:02

您应该创建插入sql字符串,循环遍历datatable中的所有行,为datatable中的每一列添加参数,并执行此查询。

代码语言:javascript
复制
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();   
   }
}
票数 2
EN

Stack Overflow用户

发布于 2014-01-24 14:35:52

代码语言:javascript
复制
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();
  }
}
票数 1
EN

Stack Overflow用户

发布于 2011-05-26 16:15:37

你写道:>我希望不使用foreach循环

尝试在dotConnect for MySQL中使用MySqlDataTable类。阅读有关MySqlDataTable.Update()方法和MySqlDataTable.CachedUpdates状态的更多信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6134256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档