【发布时间】:2011-02-09 19:14:46
【问题描述】:
我用 OleDB 编写了一个与 DB 连接的模块,但“子 UpdateClients”不起作用,DB 不更新。
有什么遗漏或错误?
这一行 -> "daClient.Update(dsClient, "CLUB_CLIENT")" -> 不起作用 (对不起我的英语,我不太好)
在这一行之后数据库没有更新(如我所料)
我的代码中缺少什么?我希望我的数据库会更新。 “txtid”将在我的表中的“ClntId”中。
Module mdlDB
Const CONNECTION_STRING As String = _
"provider= Microsoft.Jet.OleDB.4.0;Data Source=DbHalf.mdb;mode= Share Deny None"
Dim daClient As New OleDb.OleDbDataAdapter
Dim dsClient As New DataSet
Dim cmClient As CurrencyManager
Public Sub OpenClients(ByVal txtId, ByVal txtName, ByVal BindingContext)
Dim Con As New OleDb.OleDbConnection(CONNECTION_STRING)
Dim sqlClient As New OleDb.OleDbCommand
Con.Open()
sqlClient.CommandText = "SELECT*"
sqlClient.CommandText += "FROM tblClubClient"
sqlClient.Connection = Con
daClient.SelectCommand = sqlClient
dsClient.Clear()
daClient.Fill(dsClient, "CLUB_CLIENT")
cmClient = BindingContext(dsClient, "CLUB_CLIENT")
cmClient.Position = 0
txtId.DataBindings.Add("text", dsClient, "CLUB_CLIENT.ClntId")
txtName.DataBindings.Add("text", dsClient, "CLUB_CLIENT.ClntName")
Con.Close()
End Sub
Public Sub UpdateClients(ByVal txtId, ByVal txtName, ByVal BindingContext)
Dim cb As New OleDb.OleDbCommandBuilder(daClient)
cmClient = BindingContext(dsClient, "CLUB_CLIENT")
dsClient.Tables("CLUB_CLIENT").Rows(cmClient.Position).Item("ClntId") = txtId.Text
dsClient.Tables("CLUB_CLIENT").Rows(cmClient.Position).Item("ClntName") = txtName.Text
daClient.Update(dsClient, "CLUB_CLIENT")
End Sub
End Module
【问题讨论】:
-
缺少的是您对问题所在的描述。
-
您的数据集已断开连接。约翰是对的……很难理解你在寻找什么。
-
这一行 -> "daClient.Update(dsClient, "CLUB_CLIENT")" -> 不起作用(对不起我的英语,我不太好)数据库在之后没有更新这一行(如我所料)我的代码中缺少什么?我希望我的数据库将更新(“txtid”将在我的表中的“ClntId”中。“您的数据集已断开连接”-您的意思是什么?con.open()?
-
是的,您必须重新建立连接,您应该在所有 UpdateClient 方法周围添加一条 try-catch 语句。您可能会发现异常。另一种想法是,您尚未指定更新命令。我不知道绑定上下文是否需要它,但我认为。朱