日期:2014-05-17  浏览次数:20995 次

SqlDataAdapter 是请教
最近使用SqlDataAdapter 来进行批量的insert 和 update

现在问题是,如果我自己创建了一个相对应的datatable,并且添加了10条数据。
这个时候用的是insert,可是问题是如何判断这10条数据在数据库里面是不是存在的。
总不能根据key一条一条的去搜索,不知道有没有什么思路来解决这个问题。


我原来是一条一条更新的,先update 然后根据返回值的大小来判断是不是进行insert的。

这里先谢谢,谢谢,再谢谢了。

------解决方案--------------------
也不想多说什么了
只想提问一下,假设用人工完成这件事,该如何做?
在程序中检查数据无论语句怎么写能离开逐条检查?
总结:无论人工或程序有不同?
我也静待高招看。。。。。。
------解决方案--------------------
你不一个个对比怎么知道这一个个是不是在数据里了,你这些数据又是随机的,别想太多了,一条条来吧
------解决方案--------------------
直接用SqlDataAdapter 批量更新 会自动检查 执行insert 或者update语句
比如:

string constr = "server=localhost\\sqlserver2008;initial catalog=test;uid=sa;pwd=123456;";
SqlConnection conn = new SqlConnection(constr);
//设置select查询命令,SqlCommandBuilder要求至少有select命令
SqlCommand selectCMD = new SqlCommand("select top 0 SNo,SName,SAge from Student", conn);
DataTable dt = new DataTable();
SqlDataAdapter sda = new SqlDataAdapter(selectCMD);
//上面的语句中使用select 0,不是为了查询出数据,而是要查询出表结构以向DataTable中填充表结构
sda.Fill(dt);
//给DataTable添加10条记录
for(int i=1;i<=10;i++)
dt.Rows.Add(new object[] { i, "aaa"+i, 20+i });
SqlCommandBuilder scb = new SqlCommandBuilder(sda);
//执行更新
sda.Update(dt.GetChanges());
//使DataTable保存更新
dt.AcceptChanges();