Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.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 在c3p0连接池中设置SQLite连接属性_Java_Sqlite_C3p0 - Fatal编程技术网

Java 在c3p0连接池中设置SQLite连接属性

Java 在c3p0连接池中设置SQLite连接属性,java,sqlite,c3p0,Java,Sqlite,C3p0,要指定SQLite连接属性,可以使用org.SQLite.SQLiteConfig,如下所示: org.sqlite.SQLiteConfig config = new org.sqlite.SQLiteConfig(); config.setReadOnly(true); config.setPageSize(4096); //in bytes config.setCacheSize(2000); //number of pages config.set

要指定SQLite连接属性,可以使用org.SQLite.SQLiteConfig,如下所示:

    org.sqlite.SQLiteConfig config = new org.sqlite.SQLiteConfig();
    config.setReadOnly(true);
    config.setPageSize(4096); //in bytes
    config.setCacheSize(2000); //number of pages
    config.setSynchronous(SQLiteConfig.SynchronousMode.OFF);
    config.setJournalMode(SQLiteConfig.JournalMode.OFF);
    SQLiteConnectionPoolDataSource dataSource = new SQLiteConnectionPoolDataSource();
        ComboPooledDataSource cpds = new ComboPooledDataSource();
        cpds.setDriverClass("org.sqlite.JDBC");
        cpds.setJdbcUrl("jdbc:sqlite:/foo/bar");
        cpds.setMaxPoolSize(10);
使用c3p0创建连接池的过程如下:

    org.sqlite.SQLiteConfig config = new org.sqlite.SQLiteConfig();
    config.setReadOnly(true);
    config.setPageSize(4096); //in bytes
    config.setCacheSize(2000); //number of pages
    config.setSynchronous(SQLiteConfig.SynchronousMode.OFF);
    config.setJournalMode(SQLiteConfig.JournalMode.OFF);
    SQLiteConnectionPoolDataSource dataSource = new SQLiteConnectionPoolDataSource();
        ComboPooledDataSource cpds = new ComboPooledDataSource();
        cpds.setDriverClass("org.sqlite.JDBC");
        cpds.setJdbcUrl("jdbc:sqlite:/foo/bar");
        cpds.setMaxPoolSize(10);
问题:如何创建一个结合了这两者的数据源,让我设置连接池的最大池大小和sqlite的同步模式

//put the imports where they really go, obviously...
import javax.sql.*;
import org.sqlite.*;
import com.mchange.v2.c3p0.*;

// configure SQLite
SQLiteConfig config = new org.sqlite.SQLiteConfig();
config.setReadOnly(true);
config.setPageSize(4096); //in bytes
config.setCacheSize(2000); //number of pages
config.setSynchronous(SQLiteConfig.SynchronousMode.OFF);
config.setJournalMode(SQLiteConfig.JournalMode.OFF);

// get an unpooled SQLite DataSource with the desired configuration
SQLiteDataSource unpooled = new SQLiteDataSource( config );

// get a pooled c3p0 DataSource that wraps the unpooled SQLite DataSource
DataSource pooled = DataSources.pooledDataSource( unpooled );
数据源
pooled
现在将是一个c3p0 PooledDataSource,它封装了一个SQLite未冷却的数据源,该数据源已按照您的意愿进行了配置

请参阅c3p0的文档,以及工厂类的API文档


另请参阅我从下载的javadocs for SQLite JDBC来回答这个问题。

您不需要ConnectionPoolDataSource吗?很抱歉我之前的评论。我想问的是:SQLite有一个ConnectionPoolDataSource。使用它有什么好处吗?不,您最好使用简单的数据源,让c3p0提供自己的ConnectionPoolDataSource。您可以让c3p0包装驱动程序的ConnectionPoolDataSource(请参阅c3p0的文档,类似于“高级:构建您自己的数据源”),但您将无法访问c3p0的某些功能,并且通常只能获得很少的收益。这是可行的,但由于我是新手,我花了一点时间才明白我必须使用
unmooled.setUrl(“jdbc:sqlite:”+dbPath)
而不是
unmooled.setDatabaseName(dbPath)
指定要连接到的数据库。在我这么做之前,我看到了奇怪的错误。如何从中获取ConnectionPoolDataSource?该示例显示如何获取数据源,但不显示如何获取ConnectionPoolDataSource