【问题标题】:Connect to Sqlite Database using VBA使用 VBA 连接到 Sqlite 数据库
【发布时间】:2021-05-12 13:30:14
【问题描述】:

我的 VBA 代码连接到 Sqlite 数据库

Sub LoadValues()

   Dim conn As Object, rst As Object

   Set conn = CreateObject("ADODB.Connection")
   Set rst = CreateObject("ADODB.Recordset")

  ' OPEN CONNECTION
  'Am getting Error at this line
   conn.Open "DRIVER={Microsoft.ACE.OLEDB.12.0 (*.db,   *.accdb)};DBQ=E:\VBA_Project_Demo\Demo\demo.db;"


  strSQL = "SELECT * FROM test "

  ' OPEN RECORDSET
   rst.Open strSQL, conn

   ' OUTPUT TO WORKSHEET
   Worksheets("results").Range("A1").CopyFromRecordset rst
   rst.Close

  ' FREE RESOURCES
 Set rst = Nothing: Set conn = Nothing

End Sub

执行时的错误信息

控制面板 ODBC 链接

【问题讨论】:

  • 不应该是"DRIVER=SQLite3 ODBC Driver;Database=E:\VBA_Project_Demo\Demo\demo.db;"吗?
  • 对于 SQLite 使用类似 conn.Open "DRIVER=SQLite3 ODBC Driver;Database=E:\VBA_Project_Demo\Demo\demo.db;" 的东西,对于 Access 使用类似 conn.Open "DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=E:\VBA_Project_Demo\Demo\demo.accdb;" 的东西
  • @Jeeped 实际上我也尝试了你提到的那种语法,但又遇到了同样的错误
  • @SiddharthRout 根据您的语法,它用于 MS Access,它需要 *.mbd 文件,但我正在尝试连接 SQLite,请建议一些其他解决方案或语法
  • 我使用了这样的语法==> conn.Open "DRIVER=SQLite3 ODBC Driver;Database=E:\VBA_Project_Demo\Demo\demo.db;" 但是得到同样的错误

标签: excel database vba sqlite


【解决方案1】:

为了连接 SQLite,您在(或其他来源)下载 ODBC 驱动程序 http://www.ch-werner.de/sqliteodbc/

然后修改连接。

希望对你有帮助。

Sub LoadValues()

   Dim conn As Object, rst As Object

   Set conn = CreateObject("ADODB.Connection")
   Set rst = CreateObject("ADODB.Recordset")

  ' OPEN CONNECTION
   conn.Open "DRIVER=SQLite3 ODBC Driver;Database=c:\mydb.db;LongNames=0;Timeout=1000;NoTXN=0;SyncPragma=NORMAL;StepAPI=0;"   'Am getting Error at this line

  strSQL = "SELECT * FROM test "

  ' OPEN RECORDSET
   rst.Open strSQL, conn

   ' OUTPUT TO WORKSHEET
   Worksheets("results").Range("A1").CopyFromRecordset rst
   rst.Close

  ' FREE RESOURCES
 Set rst = Nothing: Set conn = Nothing

End Sub

【讨论】:

  • ,感谢您的回复,但我尝试了您提到的语法,但遇到了同样的错误
  • 您安装的是 32/64 位吗?可以去控制面板添加ODBC链接吗?
  • 我已经安装了 64 位,并且还在控制面板中添加了 ODBC 链接
  • 然后就可以“conn.Open DSN”了
  • 嗨,伙计们,实际上我在不同的机器上执行了上述语法,使用相同的数据库(SQLite)和相应的驱动程序,它工作正常,我仍然没有得到问题所在那台机器没有使用相同的语法和相同的机器配置
【解决方案2】:

使用 32 位 odbc 驱动程序。 64位不兼容

【讨论】:

  • 虽然此代码可以解决问题,including an explanation 说明如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-26
  • 2016-03-27
  • 1970-01-01
相关资源
最近更新 更多