日期:2014-05-18  浏览次数:20901 次

c# datatable插入数据库
C# 如何将DataTable一次写入数据库

 public void UpdateDataTable(DataTable DT)
  {
  SqlConnection Con = GetConnection();
  string strSQL = "select * from orderitems" ;
  if (Con.State == ConnectionState.Closed)
  {
  Con.Open();
  }
  try
  {
  SqlCommand Cmd = new SqlCommand(strSQL, Con);
  SqlDataAdapter Dad = new SqlDataAdapter(Cmd);
  Dad.Update(DT);
   
  Con.Close();
   
  }
  catch (SqlException ex)
  {
  throw ex;
  }
  }

执行程序后数据并没有插入数据库,请帮忙看看代码该如何修改

------解决方案--------------------
你的SQL语句不正确。
DataAdapter只是一个适配器,它必须有相应的SqlCommand来为其工作,并且有什么样的SqlCommand就执行什么样的工作。
DataAdapter.SelectCommand用于获取数据,因此它的CommandText应该是select语句;
DataAdapter.InsertCommand用于插入数据,因此它的CommandText应该是insert语句;
DataAdapter.DeleteCommand用于删除数据,因此它的CommandText应该是delete语句;
DataAdapter.UpdateCommand用于更新数据,因此它的CommandText应该是update语句;

因此你的代码应该这样写:
SelectSQL="select * from tblName"; 
SqlCommand SelectCmd = new SqlCommand(SelectSQL, Con); 

InsertSQL="insert into tblName (Input_Time,Location_ID) values (@Input_Time,@Location_ID)"; 
SqlCommand InsertCmd = new SqlCommand(InsertSQL, Con); 
InsertCmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Input_Time",System.Data.SqlDbType.Time));
InsertCmd.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Location_ID",System.Data.SqlDbType.NVarChar));

SqlDataAdapter Dad = new SqlDataAdapter(); 
Dad.SelectCommand = SelectCmd; 
Dad.InsertCommand = InsertCmd; 
Dad.Update(DT);