我是否需要为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")我还没有已尝试和PostgreSQL或MySQL。
发布于 2020-09-30 03:42:30
是的,您需要安装与数据库后端匹配的驱动程序。
(非常好的) 文档 to BaseX状态,在"SQL模块“一节中
本模块使用JDBC连接到SQL服务器。因此,您的JDBC驱动程序也需要添加到类路径中。如果使用BaseX的完整发行版,则可以将驱动程序复制到lib目录中。例如,要连接到MySQL,请下载Connector/J驱动程序并将存档解压缩到这个目录中。
对于SQLite来说,这可能是xerial/sqlite。将这个JAR添加到您的类路径(或lib/安装目录中的BaseX目录)应该可以让您运行起来。
您的语法似乎也可能是错误的,因为您的示例缺少对驱动程序初始化的任何提示,以及使用与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>https://stackoverflow.com/questions/63979877
复制相似问题