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

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

谁能帮忙?

【问题讨论】:

    标签: java sql sqlite jdbc readonly


    【解决方案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) 中

          希望这对某人有所帮助

          【讨论】:

            猜你喜欢
            • 2014-04-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多