请教一个关于SQL的问题
达到的目的是:弄一个输入号码的界面,输入号码,然后就根据输入的号码去数据库查询是否有此号码,问题就在这里,在AU3里调用SQL命令如何获取SQL命令返回的结果,如果无法获取查询结果就无法判断是否存在。请高手给出代码在此感激不尽。 请高手赐教... If IsString(_SelectData("Select MachineType From " & $tblname & " where PCName='" & $PCName & "'")) Then ;没有要查询的数据;msgBox(0, $PCName, "没有查询到这台电脑的记录")
;MsgBox(0, "以下数据将写入数据库", $MachineType & " " & $MachineName & " " & $PCName & " " & $IPAddress & " " & $MachineStatus & " " & $SoftwareRev & " " & $ClientRev & " " & $MacAddress & " " & $UpdateDateTime)
_AddDataToDB($MachineType, $MachineName, $PCName, $IPAddress, $MachineStatus, $SoftwareRev, $ClientRev, $MacAddress, $UpdateDateTime)
Else
;MsgBox(0, $PCName, "查询到有这台电脑的记录")
_UpdateData($MachineType, $MachineName, $PCName, $IPAddress, $MachineStatus, $SoftwareRev, $ClientRev, $MacAddress, $UpdateDateTime)
EndIf
;更新指定的数据
Func _UpdateData($MachineType, $MachineName, $PCName, $IPAddress, $MachineStatus, $SoftwareRev, $ClientRev, $MacAddress, $UpdateDateTime)
$addfld = ObjCreate("ADODB.Connection")
$addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & $mdb_data_path & ";Jet Oledb:Database Password=" & $mdb_data_pwd)
$addfld.Execute("update " & $tblname & " set MachineType = '" & $MachineType & "', PCName = '" & $PCName & "', IPAddress = '" & $IPAddress & "', MachineStatus = '" & $MachineStatus & "', SoftwareRev = '" & $SoftwareRev & "', ClientRev = '" & $ClientRev & "', MacAddress = '" & $MacAddress & "', UpdateDateTime = '" & $UpdateDateTime & "' where MachineName = '" & $MachineName & "'")
$addfld.close ;写完结束所有的连接
EndFunc ;==>_UpdateData
;选择是否有指定字段的数据
Func _SelectData($sqlstr) ;查询数据库 ,返回数组,宏保存记录个数
Local $ret = ""
$addfld = ObjCreate("ADODB.Connection")
$addfld.Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & $mdb_data_path & ";Jet Oledb:Database Password=" & $mdb_data_pwd)
$RS = ObjCreate("ADODB.Recordset")
$RS.ActiveConnection = $addfld
$RS.Open($sqlstr)
If $RS.bof And $RS.eof Then
SetError(1)
Else
SetError(0)
$ret = $RS.GetRows
EndIf
$RS.close()
$addfld.Close
Return $ret
EndFunc ;==>_SelectData 3楼威武,提供的是解决办法,不能照搬啊。 回复 4# fcurrk
3楼代码已经足够。想了解的人仔细研究一定可以看懂。 回复 1# kb5077
想法問題......既然 你可以找出 你要的那你就用比數來判斷 不就好了
你說 沒有資料 比對不到如果 你用 COUNT(*)那沒有資料就會變成0 0 就是沒有資料
先取有沒有資料 有資料你在 讀取你要的資料.............. 我不是要返回处理记录数,我是要返回数据,比如查询计算机名为"PC-01",如果查询到计算机名为"PC-01",就返回"PC-01"数据,如果没有查询到就返回""空. #include <Array.au3>
Dim $sServer = '127.0.0.1' , $sUsername = 'sa' , $sPassword = '1234567' ; 三个变量分别是连接数据库用的地址、账号、密码
$Conn = ObjCreate ( "ADODB.Connection" )
$Conn. open ( "DRIVER={SQL Server};SERVER=" & $sServer & ";UID=" & $sUsername & ";PWD=" & $sPassword & ";" )
; 连接成功后我们来读取数据
$Conn. Execute ( "use master" ) ; 首先要指定一个需要操作的库,这里用系统自带的master库来操作
$RS = ObjCreate ( "ADODB.Recordset" ) ; 创建记录集对象
$RS. ActiveConnection = $Conn ; 设置记录集的激活链接属性来自$Conn
$RS. Open ( "Select * from sysdatabases ORDER BY Name" ) ; 执行Sql语句,这个语句是查询数据库中所有的库属性,并且按Name字段的数据进行排序
Dim $Select_Db = [] ; 定义一个数组来存放查询到的数据
Dim $Count = 1 ; 定义一个变量用来记录查询到的数据行数
While Not $RS.eof And Not $RS.bof ; 当记录指针处于第一条记录和最后一条记录之间时,执行while循环
If @error = 1 Then ExitLoop
If $Select_Db = 0 Then ; 当数组二维$Select_Db为0时,重定义数组的第二维大小等于记录集查询到的字段数
ReDim $Select_Db[$RS. Fields . Count + 1] ;$RS.Fields.Count 为记录集查询到的字段数
For $i = 0 To $RS. Fields . Count - 1
$Select_Db[$i + 1] = $RS. Fields ($i). Name ;$RS.Fields($i).Name 为字段名,把字段名存入数组
Next
EndIf
ReDim $Select_Db[$Count + 1][$RS. Fields . Count + 1] ; 数组第一维大小加1,用于存放数据
$Select_Db = $Count ;$Select_Db 存放查询到的数据行数
For $i = 0 To $RS. Fields . Count - 1
$Select_Db[$Count][$i + 1] = $RS. Fields ($i). Value ;$RS.Fields($i).Value 字段数据
Next
$Count += 1 ; 行数加1
$RS. movenext ; 将游标移到下一条数据上
WEnd
$RS. Close ; 关闭记录集对象
_ArrayDisplay ($Select_Db, " 数据库所有库属性" ) ; 显示数组
楼上的很详细,仔细看看吧
页:
[1]