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

C# 怎么把excel 或者DatagridView的数据“更新”到数据库里面?
怎么把Excel 中的数据 更新到原有的数据表里面。或者把Datagridview 显示的数据更新到数据库里面。
datagridview 中的数据也是读取Excel 显示的。更新,不是插入。


------解决方案--------------------
逐行遍历Excel和DataGridView,判断与数据库中有什么不同,然后更新
更新的效率,可以将所有更新的sql一次执行,而不必要一次只更新一个
------解决方案--------------------
C# code


public static DataSet SelectSqlSrvRows(string myConnection, string mySelectQuery, string myTableName)
{
  SqlConnection myConn = new SqlConnection(myConnection);
  SqlDataAdapter myDataAdapter = new SqlDataAdapter();
  myDataAdapter.SelectCommand = new SqlCommand(mySelectQuery, myConn);
  SqlCommandBuilder cb = new SqlCommandBuilder(myDataAdapter);

  myConn.Open();

  DataSet ds = new DataSet();
  myDataAdapter.Fill(ds, myTableName);

  //code to modify data in DataSet here

  //Without the SqlCommandBuilder this line would fail
  myDataAdapter.Update(ds, myTableName);

  myConn.Close();

  return ds;
}

------解决方案--------------------
这只能解决有主键的数据表,对于没有主键的是不能解决的啊!
探讨
C# code



public static DataSet SelectSqlSrvRows(string myConnection, string mySelectQuery, string myTableName)
{
SqlConnection myConn = new SqlConnection(myConnection);
SqlDataAdapter myD……

------解决方案--------------------
你先分析出表里的主键,然后手动写一个update的sql语句,然后用带参数的格式,然后循环数据源,给command设置参数并执行就行了。外层还应该套用事务。
------解决方案--------------------
如果你使用DatagridView,那你最好使用DataAdapter获取和更新数据表。从数据库获取了数据表(DataSet或DataTable)之后,使用bindingSource为桥绑定到DataGridView。这样你更改了数据之后,对应的数据表(DataTable)相应的数据行就会更改,提交数据时可以只提交已更改的行(用GetChanges()方法)。使用Adapter的Update更新。