【已解决】SQL 在使用 _SQL_Execute执行后没有得到有效的返回值?
本帖最后由 chenronting 于 2012-9-21 20:55 编辑答案在 23#,感谢他。愿主与其同在。
今天在使用SQL的UDF的过程中发现,使用 _SQL_Execute 来更新数据库时,不会得到更新的数量?
这个返回值不是数组,也不是变量,那么 我是该怎么去识别他呢‘?里面是否包涵有我需要的更新数量?
请懂的朋友不涩赐教!在此感谢。
如下是我提取出来的代码~
Global $S_CON
_SQL_RegisterErrorHandler()
Global $_SQL_OBJ_ERROR ;COM错误码句柄
Global $SQL_ERROR = "";SQL最后的错误码
_SQL_Connect($S_CON)
_SQL_OpenDB($S_CON,'forbugserver')
$G_abc = _SQL_Execute($S_CON,"UPDATE ab_jyxx SET img = 0x00 WHERE j_no = '5127012'")
If IsArray($G_abc) Then
MsgBox(0,0,0)
Else
MsgBox(0,$SQL_Error,$G_abc)
EndIf
Func _SQL_Execute(ByRef $c_Con, $Execute_Data)
If Not IsObj($c_Con) Then Return SetError(2, "无效的数据库连接", 0)
$SQL_ERROR = ""
Return $c_Con.Execute($Execute_Data)
EndFunc ;==>_SQL_Execute
Func _SQL_Connect(ByRef $c_Con, $c_Server = "192.168.1.3", $c_UserName = "user", $c_UserPasswORd = "123")
$SQL_ERROR = ""
Local $c_Reg_Key = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers", "SQL Server")
If @error Or $c_Reg_Key = "" Then Return SetError(2, "ODBC驱动未安装", 0);如果ODBC驱动未安装返回 False
$c_Con = ObjCreate("ADODB.Connection")
If Not IsObj($c_Con) Then Return SetError(0, "启动数据库引擎失败", 0);如果启动失败则返回 False
$c_Con.open("DRIVER={SQL Server};SERVER=" & $c_Server & ";UID=" & $c_UserName & ";PWD=" & $c_UserPasswORd & ";")
If @error Then Return SetError(1, "启动数据库引擎失败", 0);如果连接成功返回 False
Return $c_Con;
EndFunc ;==>_SQL_Connect
Func _SQL_OpenDB(ByRef $c_Con, $c_DB_Name)
If Not IsObj($c_Con) Then Return SetError(2, "无效的数据库连接", 0)
$SQL_ERROR = ""
$c_Con.Execute("use " & $c_DB_Name)
If Not @error Then Return 1
EndFunc ;==>_SQL_OpenDB
Func _SQL_RegisterErrorHandler($Func = "_SQL_ErrFunc")
If ObjEvent("AutoIt.Error") = "" Then
$_SQL_OBJ_ERROR = ObjEvent("AutoIt.Error", $Func)
Return 1
Else
Return SetError(0, "错误跳转函数已经注册", 0)
EndIf
EndFunc ;==>_SQL_RegisterErrorHandler 有人来帮帮我吗~~~~~~~ 回复 3# zxxpt6
兄弟啊, 我这个是提问,不是分享~, 你也太水了吧这灌的 在没有回复之前,也只能不停的回复了。。帮助我~ 有人来帮帮我吗, 来吧,Come On!!! 请问到底要如何才能得到,更新数量呢? 2B流求教! 来吧, 兄弟们, 帮帮我。 一长列就我一人在这里蹦达 一长列就我一人在这里蹦达 你这样返回值是一个对象而已,没明白你是想干什么。 回复 12# 水木子
我想得到我执行UPDATE语句后成功与失败的数量,也就是结果,我也不知道他返回的是什么内容,请帮帮我得到我想得到的那种内容。。 整个页面都是我, 我也很无奈 。求助。! 我帮你改一下函数,这样就可以了。执行sql后,@extended宏就是执行sql影响的行数了。Func _SQL_Execute(ByRef $c_Con, $Execute_Data)
If Not IsObj($c_Con) Then Return SetError(2, "无效的数据库连接", 0)
$SQL_ERROR = ""
Local $iRecs = 0
Local $Exec = $c_Con.Execute($Execute_Data,$iRecs)
Return SetError(True, $iRecs, $Exec)
EndFunc ;==>_SQL_Execute 回复 15# 298311657
感谢你的答案, 测试后的结论是不行的,得到的结果都是0 。
页:
[1]
2