java + sqlite:如何以只读方式打开数据库?

Posted

技术标签:

【中文标题】java + sqlite:如何以只读方式打开数据库?【英文标题】:java + sqlite: how to open database as read-only? 【发布时间】:2011-06-02 05:42:33 【问题描述】:

我有一个大型数据库,我想以只读模式打开...我正在使用 SQLiteJDBC,但不知道用什么来让它以只读模式工作。

谁能帮忙?

【问题讨论】:

【参考方案1】:

Test 演示如何将连接设置为只读:

SQLiteConfig config = new SQLiteConfig();

config.setReadOnly(true); 

Connection conn = DriverManager.getConnection("jdbc:sqlite:sample.db",
config.toProperties());

【讨论】:

???我从哪里获得 SQLiteConfig?从 SQLiteJDBC v056 中似乎看不到它。 谢谢,但不,它不是 SQLiteJDBC 标准版本的一部分。【参考方案2】:

试试这个。

Properties config = new Properties();
config.setProperty("open_mode", "1");  //1 == readonly
Connection conn = DriverManager.getConnection("jdbc:sqlite:sample.db", config);

【讨论】:

【参考方案3】:

只想补充一点,使用HikariCP时,需要两个数据源属性:

readOnly=true
dataSource.open_mode=1

【讨论】:

【参考方案4】:

我的情况略有不同,但问题相同。如果您有使用 Hikari 的 Spring Boot 服务,则需要在 application.properties 中提供 2 个配置设置

spring.datasource.url=jdbc:sqlite:myDatabase.db?open_mode=1
spring.datasource.hikari.read-only=true

【讨论】:

【参考方案5】:

我看到了你的帖子,这对我有帮助: 我建立了一个类似于此处列出的http://www.shoaibinamdar.in/blog/?p=313 的连接,但插入了

    ds.setUrl("jdbc:sqlite::resource:"+
    getClass().getResource("sample.db").toString());

我放了

    ds.setUrl("jdbc:sqlite:resource/sample.db");

sample.db 进入 /myprojectname/resource/sample.db,资源位于与 /myprojectname/src/ 相同的目录 (myprojectname) 中

希望这对某人有所帮助

【讨论】:

以上是关于java + sqlite:如何以只读方式打开数据库?的主要内容,如果未能解决你的问题,请参考以下文章

Access 数据库以只读方式打开

它已经被别的用户以独占方式打开,或没有查看数据的权限。

excel中使用vba以只读方式打开工作薄的操作方法

如何以独占的方式打开串口

数据存储

如何在 ios 中打开一个 sqlite 文件进行阅读而不复制到文档?