在java中更新sqlite\u序列表

68de4m5k  于 2021-08-01  发布在  Java
关注(0)|答案(1)|浏览(328)

我在java中使用sqlite jdbc,我生成了一个sqlite表(在java中),我想给autoincrement一个自定义值,以4521开头,但我不知道如何在java中实现,我知道我必须改变 SQLITE_SEQUENCE 但我不知道如何在java中实现它。这是我的java代码:)请帮我谢谢。

  1. private static void hasDatabase() throws ClassNotFoundException,
  2. SQLException {
  3. // TODO Auto-generated method stub
  4. Connection myConn = null;
  5. Statement myStmt = null;
  6. Statement mystmtTwo = null;
  7. Class.forName("org.sqlite.JDBC");
  8. myConn = DriverManager.getConnection("jdbc:sqlite:mylibrary.db");
  9. myStmt = myConn.createStatement();
  10. myStmt.execute("CREATE TABLE mymembers ( idmymembers INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL,"
  11. + "membername VARCHAR (45) NOT NULL,"
  12. + "memberlastname VARCHAR (45) NOT NULL,"
  13. + "memberage INT (11) NOT NULL,"
  14. + "membergender VARCHAR (45) NOT NULL);");
  15. mystmtTwo = myConn.createStatement();
  16. mystmtTwo.execute("UPDATE SQLITE_SEQUENCE SET seq = 98111 WHERE name = 'mymembers';");
  17. }
hivapdat

hivapdat1#

如果你需要设置 autoincrement 空表上的序列 insert 将此值转换为 sqlite_sequence ,不是 update .
考虑以下示例(jcabi jdbc用于处理查询):

  1. final JdbcSession session = new JdbcSession(src);
  2. session
  3. .sql("CREATE TABLE members(id INTEGER PRIMARY KEY AUTOINCREMENT UNIQUE NOT NULL)")
  4. .execute();
  5. session
  6. .sql("INSERT INTO sqlite_sequence values(?,?)")
  7. .set("members")
  8. .set(123)
  9. .insert(Outcome.VOID);
  10. session
  11. .sql("INSERT INTO members values(null)")
  12. .execute();
  13. session
  14. .sql("INSERT INTO members values(null)")
  15. .execute();
  16. final List<Integer> values = session
  17. .sql("SELECT id FROM members")
  18. .select(new ListOutcome<>(rset -> rset.getInt("id")));
  19. MatcherAssert.assertThat(
  20. values,
  21. Matchers.equalTo(Arrays.asList(124, 125))
  22. );
展开查看全部

相关问题