我应该如何在MS Access .mdb数据库中使用INSERT INTO?

时间:2014-10-09 00:07:15

标签: sql ms-access vbscript

这是一个工作项目,但我无法使用"插入"对于MS Access DB。

我已经尝试了以下3个脚本并且都返回了不同的错误,当然我希望我的初始问题得到解决,但我也很想知道为什么他们都失败了,以及有什么不同/最佳实践。这些脚本都是我在搜索时找到的经过修改的脚本:

SCRIPT1:

Const adOpenStatic = 3
Const adLockOptimistic = 3

Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")

objConnection.Open _
    "Provider = Microsoft.Jet.OLEDB.4.0; " & _
        "Data Source = C:\Users\itsupport\Documents\test.mdb"

objRecordSet.Open _
  "INSERT INTO Users" & _
  "(Id, Name, " & _
  "CertificateName, Password) " & _
    "VALUES ('michaelr', 'Michael Raymond', " & _
      "'NULL', '888')", _
        objConnection, adOpenStatic, _
        adLockOptimistic

错误1:

INSERT INTO语句中的语法错误

脚本2:

Set objConn = CreateObject("ADODB.Connection")
Dim rsData
strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:\Users\itsupport\Documents\test.mdb'" 
objConn.Open strConnection
strInsertSQL = "INSERT INTO Users (iD,Name,CertificateName,Password) VALUES('" & _
                         michaelr & "','" & Michael Jenkins & "','" & - & "','" & 888 & "', objConnection, adOpenStatic, adLockOptimistic);"
Set rsData = objConn.Execute(strInsertSQL)

错误2:

预期声明结束

脚本3:

sql1="INSERT INTO Users  VALUES ('michaelr','Michael Jenkins',NULL,'888')"
constring="Provider=Microsoft.Jet.OLEDB.4.0;
  Data Source=C:\Users\itsupport\Documents\test.mdb;
    User Id=admin;Password=;" 
set con=createobject("adodb.connection")
con.open constring
con.execute sql1
con.close

错误3:

未终止的字符串常量

1 个答案:

答案 0 :(得分:2)

<强> SCRIPT1:

  1. 在普通的VBScript中定义ad *常量是必要的(没有要引用的库)
  2. 应将非平凡的连接字符串分配给变量并显示以进行外观检查
  3. INSERT INTO Users(Id, Name, CertificateName, Password) VALUES ('michaelr', 'Michael Raymond', 'NULL', '888')引用NULL并使用保留字&#34;密码&#34; (见here
  4. 脚本2:

    1. 连接&#39;工作&#39;如果你加倍引用michaelr,迈克尔詹金斯和 - (无论那意味着什么)

    2. VBScript中的字符串连接很乱;应该避免不必要的连接(如脚本3)

    3. 脚本3:

      1. 语法错误是由错误的引用和丢失&amp;引起的。 _在constring的定义中(你在脚本1中正确地做了)
      2. 一般情况下:

        1. 如果使用参数化查询,很多构建(并安全使用)SQL语句的问题就会消失

        2. VBScript中的字符串连接很乱;使用数组和连接,专用的引用函数和占位符的替换(这里没有变量插值/扩展)将产生更好的代码