c#逐条修改数据问题

来源:百度知道 编辑:UC知道 时间:2024/05/27 04:08:39
用c#2005连接SQL SERVER 2005数据库,逐行读取查询出的的据进行应用操作(返回的数据不止一条),把读取出的数据应用完后,修改该条数据的状态位,表示我已经对该数据进行操作过,下次查询就不会返回该条数据,意思是边读取数据库,边修改,没读取一条就修改一条,同步操作,即一次查询有多条语句,但是要逐条读,读后该条要马上状态位要立即修改,请问这个功能怎么实现?求高手解决!
全部要用程序实现,如果数据应用操作不成功,状态位就不改了,求详细实现代码…!比如数据库中有三个字段,int id(主键),varchar(50) data(数据项),int state(状态位),求详细代码…!

使用存储过程呗,执行两条sql语句就行了,一句是把要查询的记录标示成正在修改
然后把状态为正在修改的查处来不就行了

逐条读取的问题很好结决,使用C#Syetem.Data类中访问SqlServer的Reader对象和相应的方法打开数据库记录集就可以了。

对于读取后修改然后修改标志位,那就看你需要怎么更改了。
a,如果可以使用1条sql语句完成修改和标志位的更改那就很简单了,按照主键修改当前记录就可以。
b,如果使用1条sql语句无法完成以上2个修改,那就必须使用事务机制。C#提供了事务执行的方案。不过这个地根据实际情况,需要看帮助了,一句两句说不清楚。

总之,你的需求并不难实现。

数据操作不成功,状态位就不改了。

只需启用事务处理,其它的事情交给SQL2005吧。

先取出要处理的数据序列为List<String> ls
foreach (string data in ls)
{
using (System.Transactions.TransactionScope tx = new System.Transactions.TransactionScope())
{
try
{数据操作;
修改状态位;
}
tx.Complete();
result = "删除成功!";
catch (Exception e)
{
tx.Dispose();
result = "删除失败!";