9

I have a large database that I want to open in read-only mode... I'm using SQLiteJDBC and am not sure what to use to get it to work as read-only.

Can anyone help?

5 Answers 5

13

Test demonstrate how to set connection to be read-only:

SQLiteConfig config = new SQLiteConfig();

config.setReadOnly(true); 

Connection conn = DriverManager.getConnection("jdbc:sqlite:sample.db",
config.toProperties());
Sign up to request clarification or add additional context in comments.

2 Comments

??? Where do I get SQLiteConfig from? It doesn't seem to be visible from SQLiteJDBC v056.
Thanks but no, it's not part of the standard release of SQLiteJDBC.
5

Try this.

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

Comments

2

Just want to add that when using HikariCP, you need two datasource properties:

readOnly=true
dataSource.open_mode=1

Comments

2

I had a slightly different scenario, but the same issue. If you have a spring boot service using Hikari you need to provide 2 configuration settings in your application.properties

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

Comments

-1

I came across your post and this is what helped me: I made a connection similar to the one listed here http://www.shoaibinamdar.in/blog/?p=313 but insread of

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

I put

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

the sample.db went in /myprojectname/resource/sample.db, with resource being in the same dir (myprojectname) as /myprojectname/src/

Hope this helps someone

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.