我是否需要为SQLite安装驱动程序,或者查询是否有问题?
nicholas $ nicholas $ basex sqlite.xq Stopped at /home/nicholas/xquery/sqlite.xq, 1/23: [sql:error] An SQL exception occurred: No suitable driver found for jdbc:sqlite3://localhost:5432/home/nicholas/.local/share/liferea/liferea.db nicholas $ nicholas $ cat sqlite.xq let $id := sql:connect("jdbc:sqlite3://localhost:5432/home/nicholas/.local/share/liferea/liferea.db") return sql:execute($id, "SELECT title, description FROM items LIMIT 3;") nicholas $
该示例查询:
let $id := sql:connect("jdbc:postgresql://localhost:5432/coffeehouse") return sql:execute($id, "SELECT * FROM coffees WHERE price < 10")
是的,您需要安装与数据库后端匹配的驱动程序。
关于“ BaseX ”的(非常好的)文档,在“ SQL模块”部分中:
该模块使用JDBC连接到SQL Server。因此,您的JDBC驱动程序也需要添加到类路径中。如果使用BaseX的完整发行版,则可以将驱动程序复制到lib目录中。例如,要连接到MySQL,请下载Connector / J驱动程序并将档案解压缩到该目录中。
对于 SQLite, 这可能是xerial / sqlite-jdbc。添加此 JAR 到你的 类路径 (或对lib/目录 BaseX 安装目录)应该让你跑步。
lib/
似乎您的语法也可能是错误的,因为您的示例缺少驱动程序初始化的任何提示,也没有使用与BaseX文档中提到的连接字符串不同的连接字符串。但是我对SQL的了解还不够,因此可能有一些有效的变体。测试文档的示例:
(: Initialize driver :) sql:init("org.sqlite.JDBC"), (: Establish a connection :) let $conn := sql:connect("jdbc:sqlite:database.db") return ( (: Create a new table :) sql:execute($conn, "drop table if exists person"), sql:execute($conn, "create table person (id integer, name string)"), (: Run 10 updates :) for $i in 1 to 10 let $q := "insert into person values(" || $i || ", '" || $i || "')" return sql:execute($conn, $q), (: Return table contents :) sql:execute($conn, "select * from person") )
我得到了记录的结果:
0 0 1 1 1 1 1 1 1 1 1 1 <sql:row xmlns:sql="http://basex.org/modules/sql"> <sql:column name="id">1</sql:column> <sql:column name="name">1</sql:column> </sql:row> <sql:row xmlns:sql="http://basex.org/modules/sql"> <sql:column name="id">2</sql:column> <sql:column name="name">2</sql:column> </sql:row> <sql:row xmlns:sql="http://basex.org/modules/sql"> <sql:column name="id">3</sql:column> <sql:column name="name">3</sql:column> </sql:row> <sql:row xmlns:sql="http://basex.org/modules/sql"> <sql:column name="id">4</sql:column> <sql:column name="name">4</sql:column> </sql:row> <sql:row xmlns:sql="http://basex.org/modules/sql"> <sql:column name="id">5</sql:column> <sql:column name="name">5</sql:column> </sql:row> <sql:row xmlns:sql="http://basex.org/modules/sql"> <sql:column name="id">6</sql:column> <sql:column name="name">6</sql:column> </sql:row> <sql:row xmlns:sql="http://basex.org/modules/sql"> <sql:column name="id">7</sql:column> <sql:column name="name">7</sql:column> </sql:row> <sql:row xmlns:sql="http://basex.org/modules/sql"> <sql:column name="id">8</sql:column> <sql:column name="name">8</sql:column> </sql:row> <sql:row xmlns:sql="http://basex.org/modules/sql"> <sql:column name="id">9</sql:column> <sql:column name="name">9</sql:column> </sql:row> <sql:row xmlns:sql="http://basex.org/modules/sql"> <sql:column name="id">10</sql:column> <sql:column name="name">10</sql:column> </sql:row>