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

保存datatable到数据库的方法
有个datatable是从数据库中查出来的,我的步骤是这样的:

连接数据库,用一个SQL语句从库出查出数据并Fill到这个datatable中,然后跟数据库的连接就断开了

接着我又对这个datatable做了增行,删行或是修改的任意操作

现在的问题就是:我在做完增删改操作后想把这个datatable保存到数据库中,我不想自己手工生成SQL语句,想用SqlDataAdapter的update来更新这个我修改后的datatable到数据库中,有什么好的方法吗?

------解决方案--------------------
建议你看一下MSDN
参考http://www.cnblogs.com/ChangTan/archive/2011/12/27/2303901.html
------解决方案--------------------
C# code
public static SqlDataAdapter AdapterUpdate(string SelectString, DataTable table,string connectionString)

 { 

SqlDataAdapter Adapter =new SqlDataAdapter();

using (SqlConnection connetion=new SqlConnection(connectionString))

 { 

Adapter.SelectCommand =new SqlCommand(SelectString, connetion);

SqlCommandBuilder builder =new SqlCommandBuilder(Adapter);

Adapter.UpdateCommand = builder.GetUpdateCommand();

Adapter.Update(table); 

table.AcceptChanges(); 

return Adapter;

} 

}
//调用
string  SelectSql="select * from tablename";

AdapterUpdate(SelectSql, table,connectionString)//SelectSql为查询语句 connectionString//为数据库连接语句

------解决方案--------------------
探讨

C# code
public static SqlDataAdapter AdapterUpdate(string SelectString, DataTable table,string connectionString)

{

SqlDataAdapter Adapter =new SqlDataAdapter();

using (SqlConnection connetion=n……

------解决方案--------------------
这个头像好眼熟。
SQL语句完全可以在SQL管理工具里面自动创建,然后通过正则过滤为所需形式,写个工具一劳永逸(我写过)。
不要用SqlCommandBuilder,它生成的SQL语句出问题根本看不出原因,不利于分析问题。
------解决方案--------------------
其实使用实体类的话,更加方便,连SQL语句都不用写,当然,设计实体类本身是非常耗时且难度大的(使用现有的ORM框架的除外)
------解决方案--------------------
探讨
C# code
public static SqlDataAdapter AdapterUpdate(string SelectString, DataTable table,string connectionString)

{

SqlDataAdapter Adapter =new SqlDataAdapter();

using (SqlConnection connet……

------解决方案--------------------
SqlCommandBuilder 的update 只能更新一张表 多表更新是不可以 的额
------解决方案--------------------
如果楼主用的是SQL Server数据库,并且DataTable与你需要输入的表有一一对应关系,那楼上的几位都复杂了

参阅MSDN中的SqlBulkCopy