| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 720 人关注过本帖
标题:求助:下面的这个例子总是有并发冲突异常,可否帮助解决一下
取消只看楼主 加入收藏
huifeng2000
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-2-21
收藏
 问题点数:0 回复次数:4 
求助:下面的这个例子总是有并发冲突异常,可否帮助解决一下

数据库中也只有一个表book,这个问题困扰我几天了,哪位大虾帮我解决一下


总是显示:未处理的“System.Data.DBConcurrencyException”类型的异常出现在 system.data.dll 中。其他信息: 并发冲突: UpdateCommand 影响 0 个记录

Dim cnn As OleDbConnection
Dim dp As OleDbDataAdapter
Dim ds As DataSet
Dim cnnStr As String
Dim sql, updatesql As String
Dim dr As DataRow

cnnStr = "provider=microsoft.jet.oledb.4.0;data source=book.mdb"

cnn = New OleDbConnection(cnnStr)

cnn.Open()
MsgBox("连接成功")


dp = New OleDbDataAdapter

sql = "select * from book"
dp.SelectCommand = New OleDbCommand(sql, cnn)

updatesql = "update book set writer=@writer,name=@name,press=@press where ID=@ID"
dp.UpdateCommand = New OleDbCommand(updatesql, cnn)

Dim paramID = New OleDbParameter("@ID", OleDbType.VarChar, 50, "ID")
Dim paramName = New OleDbParameter("@name", OleDbType.VarChar, 50, "name")
Dim paramWriter = New OleDbParameter("@writer", OleDbType.VarChar, 50, "writer")
Dim paramPress = New OleDbParameter("@press", OleDbType.VarChar, 50, "press")

dp.UpdateCommand.Parameters.Add(paramID)
dp.UpdateCommand.Parameters.Add(paramName)
dp.UpdateCommand.Parameters.Add(paramWriter)
dp.UpdateCommand.Parameters.Add(paramPress)

paramID.Sourceversion = DataRowVersion.Original


ds = New DataSet

dp.Fill(ds, "book")

dg.DataSource = ds.Tables("book")

dr = ds.Tables("book").Rows(2)
If Not (dr Is Nothing) Then
dr("writer") = txt_writer.Text
Else
MsgBox("无此记录")
End If


dp.Update(ds, "book")
cnn.Close()


MsgBox("成功")

搜索更多相关主题的帖子: 例子 
2006-03-16 20:59
huifeng2000
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-2-21
收藏
得分:0 

贴出来几天了,为什么就没有人指导一下啊,难道大家都和我一样菜
帮帮忙啦!~!~!~!


QQ.271969483
2006-03-18 21:43
huifeng2000
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-2-21
收藏
得分:0 

谢谢指导
我改了一下,用insertcommand就可以用,但是用updatecommand就不可以了,你再帮我看了一下

可以正常运行的程序:
Dim cnn As OleDbConnection
Dim dp As OleDbDataAdapter
Dim ds As DataSet
Dim cnnStr As String
Dim sql, insertsql As String
Dim dr As DataRow

cnnStr = "provider=microsoft.jet.oledb.4.0;data source=book.mdb"

cnn = New OleDbConnection(cnnStr)

cnn.Open()
MsgBox("连接成功")


dp = New OleDbDataAdapter

sql = "select * from book"
dp.SelectCommand = New OleDbCommand(sql, cnn)

insertsql = "insert into book (writer,name,press,ID) values (?,?,?,?)"
dp.InsertCommand = New OleDbCommand(insertsql, cnn)

Dim paramID = New OleDbParameter("ID", OleDbType.VarChar, 50, "ID")
Dim paramName = New OleDbParameter("name", OleDbType.VarChar, 50, "name")
Dim paramWriter = New OleDbParameter("writer", OleDbType.VarChar, 50, "writer")
Dim paramPress = New OleDbParameter("press", OleDbType.VarChar, 50, "press")

dp.InsertCommand.Parameters.Add(paramID)
dp.InsertCommand.Parameters.Add(paramName)
dp.InsertCommand.Parameters.Add(paramWriter)
dp.InsertCommand.Parameters.Add(paramPress)

paramID.Sourceversion = DataRowVersion.Original


ds = New DataSet

dp.Fill(ds, "book")

dg.DataSource = ds.Tables("book")

dr = ds.Tables("book").NewRow

dr("writer") = txt_writer.Text
dr("ID") = txt_id.Text
dr("press") = txt_press.Text
dr("name") = txt_name.Text
ds.Tables("book").Rows.Add(dr)

 dp.Update(ds, "book")
cnn.Close()


MsgBox("成功")

不能运行的,还是出现以前的并发冲突,说是返回0行记录:
Dim cnn As OleDbConnection
Dim dp As OleDbDataAdapter
Dim ds As DataSet
Dim cnnStr As String
Dim sql, updatesql As String
Dim dr As DataRow

cnnStr = "provider=microsoft.jet.oledb.4.0;data source=book.mdb"

cnn = New OleDbConnection(cnnStr)

cnn.Open()
MsgBox("连接成功")


dp = New OleDbDataAdapter

sql = "select * from book"
dp.SelectCommand = New OleDbCommand(sql, cnn)

updatesql = "update book set writer=?,name=?,press=? where ID=?"
dp.UpdateCommand = New OleDbCommand(updatesql, cnn)

Dim paramID = New OleDbParameter("ID", OleDbType.VarChar, 50, "ID")
Dim paramName = New OleDbParameter("name", OleDbType.VarChar, 50, "name")
Dim paramWriter = New OleDbParameter("writer", OleDbType.VarChar, 50, "writer")
Dim paramPress = New OleDbParameter("press", OleDbType.VarChar, 50, "press")

dp.UpdateCommand.Parameters.Add(paramID)
dp.UpdateCommand.Parameters.Add(paramName)
dp.UpdateCommand.Parameters.Add(paramWriter)
dp.UpdateCommand.Parameters.Add(paramPress)

paramID.Sourceversion = DataRowVersion.Original

ds = New DataSet

dp.Fill(ds, "book")

dg.DataSource = ds.Tables("book")

dr = ds.Tables("book").Rows(0)

dr("writer") = txt_writer.Text
dr("ID") = txt_id.Text
dr("press") = txt_press.Text
dr("name") = txt_name.Text


dp.Update(ds, "book")
cnn.Close()


QQ.271969483
2006-03-19 16:21
huifeng2000
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-2-21
收藏
得分:0 
别沉啊,问题还没有解决呢,

QQ.271969483
2006-03-21 16:49
huifeng2000
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2006-2-21
收藏
得分:0 
谢谢你,其实这个例子的其它实现方式我都做过,也能够通过,我现在想用最终用oledbdataadapter.update 的方法重新实现一下,而且不用commandbuilder,以适应复杂数据库编程的需要,我是初学者,想多了解一些ADO.NET的机制,不过还是要谢谢楼上的大哥.还是要慨叹一句,这个论坛上的热心人不多啊

QQ.271969483
2006-03-21 20:33
快速回复:求助:下面的这个例子总是有并发冲突异常,可否帮助解决一下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012109 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved