当前位置:编程学习 > C#/ASP.NET >>

vb.net中ExecuteNonQuery返回值的问题 急!!

我的sql语句是 begin update EMP set DEPID='1' where NID=:NID; end

在程序中设定了parameter,但实际上数据库中没有数据,所以不会更新任何纪录。

执行 ExecuteNonQuery()后 所取得的返回值为什么是1,而不是0? --------------------编程问答-------------------- 你把begin end去掉看看 --------------------编程问答-------------------- 去掉后返回值是正确的,但是程序要求加入begin end 因为有执行多条sql的情况 --------------------编程问答-------------------- 那假如多条SQL中含有两条更新的语句,你说让它返回哪条语句的更新结果

为什么要一次搞多条,用事务处理不行吗 --------------------编程问答-------------------- 多条执行用事务来处理。 --------------------编程问答-------------------- 原来还可以这样用Begin,End --------------------编程问答-------------------- 如果要执行多条语句的话 最好还是用事务来处理 不知道要求用Begin end是什么意思…… --------------------编程问答-------------------- 它返回的是数据库在更新等操作时所受影响的行数. --------------------编程问答--------------------
引用 1 楼 yjcel1988 的回复:
你把begin end去掉看看

它返回的是数据库执行非查询语句[NONQUERY]操作时所受影响的行数. --------------------编程问答-------------------- 经高人指点后自己写的事务,给你参考,可能很乱,或者还有错,希望还有高人指点

 sqlconn.Open()
                Dim sqlTrans As SqlTransaction = sqlconn.BeginTransaction()
                Dim sqlCom As New SqlCommand
                Dim sqlComClass As New SqlCommand
                sqlCom.Transaction = sqlTrans
                sqlComClass.Transaction = sqlTrans
                Try
                    sqlCom.Connection = sqlconn
                    '编辑进入时
                    sqlCom.CommandText = "update student set student.name='" & name & "',student.sex= '" & sex & "',student.age='" & age & "',student.class='" & banji & "',student.birthday='" & birthday & "',student.leave='" & leave & "'  where sid=" & sid
                    sqlCom.ExecuteNonQuery()
                    sqlComClass.Connection = sqlconn
                    sqlComClass.CommandText = "update stuAddress set stuAddress.address_first='" & address_fst & "',stuAddress.address_second='" & address_snd & "'  where sid=" & sid
                    count = sqlComClass.ExecuteNonQuery()
                    If count = 0 Then
                        sqlComClass.CommandText = "insert into stuAddress (stuAddress.address_first,stuAddress.address_second,sid) values('" & address_fst & "','" & address_snd & "'," & sid & ")"
                        MsgBox(sqlComClass.CommandText)
                        count = sqlComClass.ExecuteNonQuery()
                    End If
                    MsgBox(count)
                    '结束事务处理
                    sqlTrans.Commit()

                Catch ex As Exception

                    '事务回滚
                    sqlTrans.Rollback()
                    Console.Write("<script language=javascript>alert(\'数据库操作失败!\')</script>")
                    Return

                Finally

                    sqlCom.Dispose()
                    sqlCom.Connection.Close()
                    sqlconn.Close()
                End Try
--------------------编程问答-------------------- begin update EMP set DEPID='1' where NID=:NID; SET @C = @@ROWCOUNT end

作为参数@C返回
补充:.NET技术 ,  VB.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,