我有一个问题:
sqlPU = "SELECT num_uti FROM myTable WHERE C_IDENT_A = '5'
但我不知道浏览我的结果。
我试试这个,但它不起作用
req.Open sqlPU, oConn
If Not req.EOF Then
Set resultSet = oConn.Execute(sqlPU)
For Each result In resultSet
WScript.Echo resultSet.Fields(num_uti).Value
Next
End if
答案 0 :(得分:3)
尝试重构这样的代码;
Dim oConn, req, sqlPU
'Create connection
Set oConn = CreateObject("ADODB.Connection")
Call oConn.Open("yourconnectionstring")
'Set query
sqlPU = "SELECT num_uti FROM myTable WHERE C_IDENT_A = '5'"
'Open recordset
Set req = CreateObject("ADODB.Recordset")
Call req.Open(sqlPU, oConn)
'Loop the return data
Do While Not req.EOF
'Output field called num_uti.
WScript.Echo req.Fields("num_uti").Value
'Move to next record
Call req.MoveNext()
Loop
'Clean-up
Call req.Close()
Set req = Nothing
Call oConn.Close()
Set oConn = Nothing
问题中的代码有一些问题,
sqlPU
查询字符串缺少字符串终止字符("
),会导致语法错误。.Open()
上致电ADODB.Recordset
时,它会被填充,并且可以使用Do
循环和.MoveNext()
方法遍历,您需要额外的.Execute()
不是必需的,并再次重新运行相同的查询。 .MoveNext()
方法告诉ADODB.Recordset
移动它的指针1记录,一旦到达结尾,.EOF
的值将等于True
。如果没有.MoveNext()
,指针将不会移动到文件末尾(EOF),循环将无限期地运行或直到脚本崩溃,这两种情况都不好。.Fields()
集合引用列需要索引(从0开始的序数值)或包含列的别名的字符串(在本例中为{{1} }})。在原始代码中,列别名不是字符串,这意味着VBScript会认为它是一个名为"num_uti"
的变量,并且因为num_uti
未初始化它会失败。