' 方式一:Connection.Execute 返回 Recordset
Set conn = CreateObject("ADODB.Connection")
conn.Open "Provider=SQLOLEDB;Data Source=.;Initial Catalog=TestDB;UID=sa;PWD=123"
Set rs = conn.Execute("SELECT TOP 1 UserName FROM Users WHERE Id = 1")
If Not rs.EOF Then
Dim userName
userName = rs("UserName").Value ' 或 rs.Fields("UserName").Value
MsgBox "用戶名: " & userName
Else
MsgBox "無記錄"
End If
rs.Close
conn.Close
' 方式二:Recordset.Open 靜態游標
Set rs = CreateObject("ADODB.Recordset")
rs.Open "SELECT UserName FROM Users WHERE Id = 1", conn, 1, 1 ' adOpenKeyset, adLockReadOnly
If Not rs.EOF Then
MsgBox rs("UserName")
End If
rs.Close
Set rs = ...,漏寫導致「語句未結束」語法錯。If Not rs.EOF Then 確保有記錄再讀取字段。rs("ColumnName") 返回 Field 對象,再取 .Value 屬性(默認屬性可省略)。rs.Close、conn.Close,釋放數據庫連接。1, 1 (adOpenKeyset, adLockReadOnly) 適合單次讀取;只讀可用 3, 1 (adOpenStatic, adLockReadOnly)。| 錯誤寫法 | 正確寫法 | 原因 |
|---|---|---|
rs=conn.Execute(...) | Set rs = conn.Execute(...) | 對象賦值缺 Set |
if not rs.eof then msgbox rs("name") | If Not rs.EOF Then MsgBox rs("name") : End If | VBScript 單行 If 需冒號分隔,多行需 End If |
rs.open SQL,conn,1,1 | rs.Open SQL, conn, 1, 1 | 方法名大小寫、參數逗號分隔 |
VBScript ADO 查單值:**Set 對象賦值、EOF 判斷、rs("字段名").Value 取值、Close 釋放**。模板代碼可直接複製適配連接字符串與 SQL 即用。