更新数据库的问题,不知错的哪里???

wangchong 2005-08-04 12:01:30
Dim UpdateCnn As New Odbc.OdbcConnection
Dim tx As Odbc.OdbcTransaction
Dim Cmm As Odbc.OdbcCommand
Dim SQL As String
UpdateCnn = New Odbc.OdbcConnection(‘连接数据库’)
UpdateCnn.Open()
tx = UpdateCnn.BeginTransaction(IsolationLevel.ReadCommitted)
SQL = "update pub.yusr_mstr set yusr__chr01 = '' where yusr_name = 'qqc'"
Cmm = New Odbc.OdbcCommand(SQL, UpdateCnn)
Cmm.CommandType = CommandType.Text
Cmm.ExecuteNonQuery() ' 在这里执行半天也没做完!!!!!
tx.Commit()
UpdateCnn.Close()



在 Cmm.ExecuteNonQuery() ' 在这里执行半天也没做完!!!!! 为什么??
...全文
133 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangjianyou 2005-08-04
  • 打赏
  • 举报
回复
Dim Cn As New SqlConnection
Dim Cm As New SqlCommand
Cn.ConnectionString = 连接串
Cn.Open()
Cm.Connection = Cn
Cm.CommandText = SQL语句
Cm.ExecuteNonQuery()
Cn.Close()
Cm = Nothing
Cn = Nothing

上面的是一个成功的例子。

你主要是检查你的数据库是否连接成功。

^_^
huangjianyou 2005-08-04
  • 打赏
  • 举报
回复
Cmm.CommandType = CommandType.Text

不要这句试试。

^_^
wangchong 2005-08-04
  • 打赏
  • 举报
回复
是的,我没有加:Cmm.Transaction = tx
mathsword 2005-08-04
  • 打赏
  • 举报
回复
就是你的事务没与OdbcCommand关联起来

odbc的例子

Public Sub RunOdbcTransaction(myConnString As String)
Dim myConnection As New OdbcConnection(myConnString)
myConnection.Open()

Dim myCommand As OdbcCommand = myConnection.CreateCommand()
Dim myTrans As OdbcTransaction

' Start a local transaction
myTrans = myConnection.BeginTransaction(IsolationLevel.ReadCommitted)
' Assign transaction object for a pending local transaction
myCommand.Transaction = myTrans

Try
myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')"
myCommand.ExecuteNonQuery()
myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')"
myCommand.ExecuteNonQuery()
myTrans.Commit()
Console.WriteLine("Both records are written to database.")
Catch e As Exception
Try
myTrans.Rollback()
Catch ex As OdbcException
If Not myTrans.Connection Is Nothing Then
Console.WriteLine("An exception of type " & ex.GetType().ToString() & _
" was encountered while attempting to roll back the transaction.")
End If
End Try

Console.WriteLine("An exception of type " & e.GetType().ToString() & _
"was encountered while inserting the data.")
Console.WriteLine("Neither record was written to database.")
Finally
myConnection.Close()
End Try
End Sub
mathsword 2005-08-04
  • 打赏
  • 举报
回复
只执行一个语句没必要用事务,而且你又不用撤销操作。

例子
[Visual Basic]
Public Sub RunOracleTransaction(myConnString As String)
Dim myConnection As New OracleConnection(myConnString)
myConnection.Open()

Dim myCommand As OracleCommand = myConnection.CreateCommand()
Dim myTrans As OracleTransaction

' Start a local transaction
myTrans = myConnection.BeginTransaction(IsolationLevel.ReadCommitted)
' Assign transaction object for a pending local transaction

Try
myCommand.CommandText = "INSERT INTO Dept (DeptNo, Dname, Loc) values (50, 'TECHNOLOGY', 'DENVER')"
myCommand.ExecuteNonQuery()
myCommand.CommandText = "INSERT INTO Dept (DeptNo, Dname, Loc) values (60, 'ENGINEERING', 'KANSAS CITY')"
myCommand.ExecuteNonQuery()
myTrans.Commit()
Console.WriteLine("Both records are written to database.")
Catch e As Exception
myTrans.Rollback()
Console.WriteLine(e.ToString())
Console.WriteLine("Neither record was written to database.")
Finally
myConnection.Close()
End Try
End Sub


你的错误是:
Cmm.Transaction=tx

mathsword 2005-08-04
  • 打赏
  • 举报
回复
先看数据库是否连上,然后看sql语句是否正确
huangjianyou 2005-08-04
  • 打赏
  • 举报
回复
只是执行一个语句,不加事务行不?

^_^
wangchong 2005-08-04
  • 打赏
  • 举报
回复
错误是:当分配给命令的连接处于挂起的本地事务中时,命令必须具有事务对象才能执行。该命令的 Transaction 属性尚未初始化。

请帮忙
hamadou 2005-08-04
  • 打赏
  • 举报
回复
使用TRY CATCH看下报什么错!
似乎你的SQL语句本身就有问题!

16,721

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧