【问题标题】:How can I use sqlite user function api with HikariCP?如何将 sqlite 用户函数 api 与 HikariCP 一起使用?
【发布时间】:2017-02-20 21:17:50
【问题描述】:

我正在使用 mybatis / hikaricp 访问一个 sqlite 数据库。

此数据库使用 sqlite 用户函数来扩展数据库功能(通过更新触发器)

使用这种函数un sqlite jdbc驱动程序是可能的:

Connection connection = DriverManager.getConnection("jdbc:sqlite:" + databasePath);
Function.create(connection, "title_sort", new Function()
{
    @Override
    protected void xFunc() throws SQLException
    {
        result(value_text(0));
    }
});

如您所见,我们必须使用 sqlite 驱动程序管理器,它将返回一个围绕 JDBC4Connection 的 SQLiteConnection 包装器(围绕实现 java.sql.Connection 的 JDBC3Connection)

Function.create 函数检查连接实例如下:

if (conn == null || !(conn instanceof SQLiteConnection))
{
    throw new SQLException("connection must be to an SQLite db");
}

所以这是我的问题:如何将这个 api 与 hikaricp 一起使用?

【问题讨论】:

    标签: java sqlite jdbc hikaricp


    【解决方案1】:

    像这样:

    Connection conn = hikariDataSource.getConnection();
    Function.create(connection.unwrap(SQLiteConnection.class),
                    "title_sort",
                    new Function() {
                       @Override
                       protected void xFunc() throws SQLException {
                          result(value_text(0));
                       }
                    }
    );
    

    关键部分是connection.unwrap(SQLiteConnection.class)

    【讨论】:

    • 谢谢!我没有尝试这个解决方案,因为我昨天使用 JPA / Eclipslink 失败了,因为展开无法返回我 SQLiteConnection 的实例。但是有了 HikariCP,您的解决方案就会奏效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 2018-10-11
    • 2021-08-28
    • 2011-12-06
    • 1970-01-01
    相关资源
    最近更新 更多