代码之家  ›  专栏  ›  技术社区  ›  Christian Nill

无法创建表;为什么此代码会失败?

  •  2
  • Christian Nill  · 技术社区  · 8 年前

    我对SQLite v3.22.0和AutoIt v3.3.14.3有问题。尝试创建数据库可以工作,但无法创建表。我使用AutoIt示例代码:

    #include <MsgBoxConstants.au3>
    #include <SQLite.au3>
    #include <SQLite.dll.au3>
    
    Local $hQuery, $aRow, $sMsg
    _SQLite_Startup()
    ConsoleWrite("_SQLite_LibVersion=" & _SQLite_LibVersion() & @CRLF)
    _SQLite_Open() ; open :memory: Database
    _SQLite_Exec(-1, "CREATE TABLE aTest (a,b,c);") ; CREATE a Table
    _SQLite_Exec(-1, "INSERT INTO aTest(a,b,c) VALUES ('c','2','World');") ; INSERT Data
    _SQLite_Exec(-1, "INSERT INTO aTest(a,b,c) VALUES ('b','3',' ');") ; INSERT Data
    _SQLite_Exec(-1, "INSERT INTO aTest(a,b,c) VALUES ('a','1','Hello');") ; INSERT Data
    _SQLite_Query(-1, "SELECT c FROM aTest ORDER BY a;", $hQuery) ; the query
    While _SQLite_FetchData($hQuery, $aRow) = $SQLITE_OK
        $sMsg &= $aRow[0]
    WEnd
    _SQLite_Exec(-1, "DROP TABLE aTest;") ; Remove the table
    MsgBox($MB_SYSTEMMODAL, "SQLite", "Get Data using a Query : " & $sMsg)
    _SQLite_Close()
    _SQLite_Shutdown()
    
    ; Output:
    ; Hello World
    

    如果我请求SQLite错误,我会得到“库使用不正确”。这个案子有什么问题?

    2 回复  |  直到 7 年前
        1
  •  1
  •   user4157124 Marko Jesus Narvaez Sarco    8 年前

    这种情况有什么问题?

    根据 Documentation - Script breaking changes :

    _SQLite_Startup() 函数不再自动从autoitscript下载SQLite DLL文件。通用域名格式。大多数用户完全不知道每次运行脚本时都会发生这种下载,这也是网站严重的带宽占用。现在必须手动下载SQLite DLL。请参见 _SQLite_Startup() 详细信息文档。

    如果 _SQLite\u启动() 的第一个参数被省略,则dll文件必须位于 @SystemDir , @WindowsDir , @ScriptDir @WorkingDir 使此功能成功。

    1. Download sqlite3.dll ,
    2. 去除 #include <SQLite.dll.au3> 然后
    3. 提供 _SQLite\u启动() 的第一个参数,其中包含dll文件的位置(如果在前面提到的四个位置之一存在,则为冗余)。

    Related .

        2
  •  0
  •   user4157124 Marko Jesus Narvaez Sarco    8 年前

    自动IT v3.3.14.3 has a bug ; 安装AutoIt v3.3.14.2或 get the bug-fix .

    推荐文章