java sqlite 连接池_java-在c3p0连接池中设置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 );

现在,池中的数据源将是c3p0 PooledDataSource,它包装了已根据需要配置的SQLite未池化数据源.

另请参阅我从here下载的用于SQLite JDBC的javadocs来回答此问题.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLite 是一种嵌入式的数据库,不支持多线程,因此没有像 MySQL 那样的连接。但是,我们可以通过编写一些代码来实现一个简单的 SQLite 连接。 以下是一个使用 Python 编写的 SQLite 连接的示例: ```python import sqlite3 from queue import Queue from threading import Lock class SQLitePool: def __init__(self, max_conn): self.max_conn = max_conn self.pool = Queue(max_conn) self.lock = Lock() self.conn_params = { "database": "test.db" } def get_conn(self): if self.pool.qsize() == 0 and self.max_conn > self.pool.qsize(): conn = sqlite3.connect(**self.conn_params) return conn else: return self.pool.get() def put_conn(self, conn): self.pool.put(conn) def close_all_conn(self): with self.lock: while not self.pool.empty(): conn = self.pool.get() conn.close() ``` 在上面的代码中,我们创建了一个 SQLite 连接类 `SQLitePool`,它有三个方法: - `get_conn()`:从连接池中获取一个连接,如果连接为空,则创建一个新的连接返回。 - `put_conn(conn)`:将连接放回连接池中。 - `close_all_conn()`:关闭连接池中的所有连接。 使用该连接的示例代码如下: ```python def run_sqlite(): pool = SQLitePool(5) conn = pool.get_conn() cursor = conn.cursor() cursor.execute("CREATE TABLE IF NOT EXISTS user (id INTEGER PRIMARY KEY, name TEXT)") cursor.execute("INSERT INTO user (name) VALUES (?)", ("John",)) cursor.execute("INSERT INTO user (name) VALUES (?)", ("Jane",)) cursor.execute("SELECT * FROM user") rows = cursor.fetchall() for row in rows: print(row) cursor.close() pool.put_conn(conn) pool.close_all_conn() ``` 在上面的代码中,我们首先创建了一个 `SQLitePool` 对象,然后从连接池中获取一个连接并执行一些 SQL 语句。最后,我们将连接放回连接池中,并关闭所有连接。 需要注意的是,由于 SQLite 不支持多线程,因此在多线程环境下使用该连接可能会出现问题,需要自行进行线程安全处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值