Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将sqlite用户函数api与HikariCP一起使用?_Java_Sqlite_Jdbc_Hikaricp - Fatal编程技术网

Java 如何将sqlite用户函数api与HikariCP一起使用?

Java 如何将sqlite用户函数api与HikariCP一起使用?,java,sqlite,jdbc,hikaricp,Java,Sqlite,Jdbc,Hikaricp,我正在使用mybatis/hikaricp访问sqlite数据库 此数据库使用sqlite用户函数扩展数据库功能(通过更新触发器) 使用这种函数,可以按如下方式使用un sqlite jdbc驱动程序: Connection connection = DriverManager.getConnection("jdbc:sqlite:" + databasePath); Function.create(connection, "title_sort", new Function() { @

我正在使用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));
    }
});
if (conn == null || !(conn instanceof SQLiteConnection))
{
    throw new SQLException("connection must be to an SQLite db");
}
如您所见,我们必须使用sqlite drivermanager,它将围绕JDBC4Connection(围绕实现java.sql.Connection的JDBC3Connection)返回sqlite连接包装器

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

Connection connection = DriverManager.getConnection("jdbc:sqlite:" + databasePath);
Function.create(connection, "title_sort", new Function()
{
    @Override
    protected void xFunc() throws SQLException
    {
        result(value_text(0));
    }
});
if (conn == null || !(conn instanceof SQLiteConnection))
{
    throw new SQLException("connection must be to an SQLite db");
}
因此,我的问题是:如何将此api与hikaricp结合使用?

如下所示:

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)
如下所示:

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,你的解决方案就行了。谢谢!我没有尝试此解决方案,因为我昨天使用JPA/Eclipslink失败,因为展开无法返回SQLiteConnection的实例。但有了HikariCP,你的解决方案就行了。