例如我传入的DataTable里面有3条数据.而数据库查询出来的有4条,那么多出的那条如何删除呢?
这里写了dbAdapter.DeleteCommand = autoCmds.GetDeleteCommand();如何让他使用起来
public bool UpdateDataTable(string strSql, DataTable dataTable)
{
DataTable dtTemp = new DataTable();
using (SqlConnection conn = new SqlConnection(connectionString))
{
try
{
conn.Open();
SqlDataAdapter dbAdapter = new SqlDataAdapter(strSql, connection);
dbAdapter.FillSchema(dtTemp, SchemaType.Mapped);
dbAdapter.Fill(tempTable);
dtTemp.Merge(dataTable);
SqlCommandBuilder autoCmds = new SqlCommandBuilder(dbAdapter);
dbAdapter.InsertCommand = autoCmds.GetInsertCommand();
dbAdapter.UpdateCommand = autoCmds.GetUpdateCommand();
dbAdapter.DeleteCommand = autoCmds.GetDeleteCommand();
dbAdapter.Update(tempTable);
return true;
}
catch (Exception e)
{
e.ToString();
}
finally
{
conn.Close();
}
}
}
7 个解决方案
#1
我不太喜欢用批量方法
因为如果有事务的话,假如中间有一条有问题,整个过程都不执行
但有时,我们却是需要有问题的不执行,没有问题的执行
所以我还是用循环处理的方法
因为如果有事务的话,假如中间有一条有问题,整个过程都不执行
但有时,我们却是需要有问题的不执行,没有问题的执行
所以我还是用循环处理的方法
#2
两个表的数据都取到内存中,用linq做处理,判断找出多出的记录,做出标记位,或删除都可以
#3
至于删除,这个是看你业务需求的。
如果是全新的数据要覆盖原来的数据,那就直接根据条件删除原来所有的,直接把新数据插入,这样也不会有所谓的存在就更新了,全部是插入
如果是全新的数据要覆盖原来的数据,那就直接根据条件删除原来所有的,直接把新数据插入,这样也不会有所谓的存在就更新了,全部是插入
#4
哎 你直接把上传的数据类型的数据删除掉 然后在重新插入一次不就可以了吗 郁闷
#5
顶3楼的
#6
感谢回答linq却是可以办到但是速度太慢啊
#7
我有个很好的办法,在数据库里面操作,
一个存储过程搞定,参数为XML
将table里面的数据拼成XML
例如 参数:
<Root>
<Pri StartDate=\"{0}\" ExpirationDate=\"{1}\" />
<Pri StartDate=\"{0}\" ExpirationDate=\"{1}\" />
</Root>
存储过程
解析XML
将数据插入到 新建临时表,然后再操作临时表想怎么操作怎么操作。
一个存储过程搞定,参数为XML
将table里面的数据拼成XML
例如 参数:
<Root>
<Pri StartDate=\"{0}\" ExpirationDate=\"{1}\" />
<Pri StartDate=\"{0}\" ExpirationDate=\"{1}\" />
</Root>
存储过程
解析XML
将数据插入到 新建临时表,然后再操作临时表想怎么操作怎么操作。
#1
我不太喜欢用批量方法
因为如果有事务的话,假如中间有一条有问题,整个过程都不执行
但有时,我们却是需要有问题的不执行,没有问题的执行
所以我还是用循环处理的方法
因为如果有事务的话,假如中间有一条有问题,整个过程都不执行
但有时,我们却是需要有问题的不执行,没有问题的执行
所以我还是用循环处理的方法
#2
两个表的数据都取到内存中,用linq做处理,判断找出多出的记录,做出标记位,或删除都可以
#3
至于删除,这个是看你业务需求的。
如果是全新的数据要覆盖原来的数据,那就直接根据条件删除原来所有的,直接把新数据插入,这样也不会有所谓的存在就更新了,全部是插入
如果是全新的数据要覆盖原来的数据,那就直接根据条件删除原来所有的,直接把新数据插入,这样也不会有所谓的存在就更新了,全部是插入
#4
哎 你直接把上传的数据类型的数据删除掉 然后在重新插入一次不就可以了吗 郁闷
#5
顶3楼的
#6
感谢回答linq却是可以办到但是速度太慢啊
#7
我有个很好的办法,在数据库里面操作,
一个存储过程搞定,参数为XML
将table里面的数据拼成XML
例如 参数:
<Root>
<Pri StartDate=\"{0}\" ExpirationDate=\"{1}\" />
<Pri StartDate=\"{0}\" ExpirationDate=\"{1}\" />
</Root>
存储过程
解析XML
将数据插入到 新建临时表,然后再操作临时表想怎么操作怎么操作。
一个存储过程搞定,参数为XML
将table里面的数据拼成XML
例如 参数:
<Root>
<Pri StartDate=\"{0}\" ExpirationDate=\"{1}\" />
<Pri StartDate=\"{0}\" ExpirationDate=\"{1}\" />
</Root>
存储过程
解析XML
将数据插入到 新建临时表,然后再操作临时表想怎么操作怎么操作。