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

数据库中也只有一个表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
liuyi197909
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-3-18
收藏
得分:0 
回复
OLedb提供程序的占位符是?
SQL占位符是@vary
所以运行不了
此外你是参数类实例时格式不对

2006-03-18 23:18
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
zhangwei
Rank: 1
等 级:新手上路
威 望:1
帖 子:277
专家分:0
注 册:2005-5-3
收藏
得分:0 

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim x As Integer
OleDbDataAdapter1.UpdateCommand.Parameters("BookName").Value = TextBox1.Text
OleDbDataAdapter1.UpdateCommand.Parameters("Author").Value = TextBox2.Text
OleDbDataAdapter1.UpdateCommand.Parameters("Press").Value = TextBox3.Text
OleDbDataAdapter1.UpdateCommand.Parameters("ISBN").Value = TextBox4.Text
OleDbDataAdapter1.UpdateCommand.Parameters("Price").Value = TextBox5.Text

OleDbConnection1.Open()
Try
x = OleDbDataAdapter1.UpdateCommand.ExecuteNonQuery
MsgBox("该书的资料已经被修改!")
Catch ex As Exception
MsgBox("修改书的资料时出错,请重新修改!")
End Try
OleDbConnection1.Close()
OleDbDataAdapter1.Fill(DataSet11, "books")
End Sub

Access数据库我没用过,这是我找到的代码希望对你有所帮助.


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

QQ.271969483
2006-03-21 20:33
janeju
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2006-3-3
收藏
得分:0 

insert好用update不好用,应该是前一个select的查询结果并未返回的原因吧?我觉得你应该查找一下,是否有select 查找返回的时间函数,应该可以解决问题。

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



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

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