[英]VB6 ADO INSERT of TEXT field into .MDB
我的示例 VB6 程序:
Dim conn As New connection
conn.Open "Driver={Microsoft Access Driver (*.mdb)};Dbq=" & App.Path & "\adatabase.mdb;"
conn.Execute "INSERT INTO atable (afield) VALUES (""some text"")"
End Sub
(“adatabase.mdb”包含一個表“atable”,其中一個字段“afield”的類型為“Text”,長度為 255。Access 2002,Access 文件格式 2000。VB6 引用包括“Microsoft ActiveX Data Objects 2.8 Library”。)
conn.Execute 得到:
運行時錯誤 '-2147217904 (80040e10' [Microsoft][ODBC Access Driver] 參數太少。預期為 1。
查詢
INSERT INTO atable (afield) VALUES ("some text")
直接在Access中運行沒有任何問題。
那不應該是:
conn.Execute "INSERT INTO atable (afield) VALUES ("""some text""")"
即你需要引用雙引號嗎?
更新:或作為海報解決,使用單引號引用文本。
或者更好的是,使用參數化查詢:
Dim Conn1 As ADODB.Connection
Dim Cmd1 As ADODB.Command
Dim Param1 As ADODB.Parameter
Dim Rs1 As ADODB.Recordset
' Create and Open Connection Object.
Set Conn1 = New ADODB.Connection
Conn1.ConnectionString = "DSN=Biblio;UID=admin;PWD=;"
Conn1.Open
' Create Command Object.
Set Cmd1 = New ADODB.Command
Cmd1.ActiveConnection = Conn1
Cmd1.CommandText = "SELECT * FROM Authors WHERE AU_ID < ?"
' Create Parameter Object.
Set Param1 = Cmd1.CreateParameter(, adInteger, adParamInput, 5)
Param1.Value = 5
Cmd1.Parameters.Append Param1
Set Param1 = Nothing
' Open Recordset Object.
Set Rs1 = Cmd1.Execute()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.