【问题标题】:VB6 ADO INSERT of TEXT field into .MDBVB6 ADO INSERT 将 TEXT 字段插入 .MDB
【发布时间】:2011-08-14 01:29:40
【问题描述】:

我的示例 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中运行没有任何问题。

【问题讨论】:

标签: ms-access vb6 odbc ado


【解决方案1】:

不应该是这样的:

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()

【讨论】:

  • 实际上该行不是语法但它确实提醒我可以在文本周围使用单引号而不是双引号,这解决了问题......现在......直到我不得不逃避单引号,但我确信某处已经有帮助!谢谢米奇!
  • 解决这个问题的最好方法是使用参数化查询。
猜你喜欢
  • 2012-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-30
  • 1970-01-01
  • 2015-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多