Java SQL自动增量
我正在尝试使用Java在SQLite数据库中创建一个新表。它一次又一次地给我同样的错误,我对此感到非常沮丧。任何帮助都将不胜感激Java SQL自动增量,sql,sqlite,Sql,Sqlite,我正在尝试使用Java在SQLite数据库中创建一个新表。它一次又一次地给我同样的错误,我对此感到非常沮丧。任何帮助都将不胜感激 try { Connection conn = getConnection(); Statement s = conn.createStatement(); s.execute( "CREATE TABLE IF NOT EXISTS Lo
try {
Connection conn = getConnection();
Statement s = conn.createStatement();
s.execute(
"CREATE TABLE IF NOT EXISTS Loot (" +
"LootID INT PRIMARY KEY AUTO_INCREMENT," +
"Chance INT NOT NULL," +
"Material VARCHAR(50) NOT NULL" +
")"
);
s.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
我收到的错误是:
[17:19:01 WARN]: java.sql.SQLException: [SQLITE_ERROR] SQL error or missing database (near "AUTO_INCREMENT": syntax error)
[17:19:01 WARN]: at org.sqlite.DB.newSQLException(DB.java:383)
[17:19:01 WARN]: at org.sqlite.DB.newSQLException(DB.java:387)
[17:19:01 WARN]: at org.sqlite.DB.throwex(DB.java:374)
[17:19:01 WARN]: at org.sqlite.NativeDB.prepare(Native Method)
[17:19:01 WARN]: at org.sqlite.DB.prepare(DB.java:123)
[17:19:01 WARN]: at org.sqlite.Stmt.execute(Stmt.java:113)```
请使用以下代码: 代码更改-自动增量到自动增量
将您的执行更改为:
s.execute(
"CREATE TABLE IF NOT EXISTS Loot (" +
"LootID INTEGER PRIMARY KEY AUTOINCREMENT," +
"Chance INTEGER NOT NULL," +
"Material VARCHAR(50) NOT NULL" +
")"
);
还请花时间查看,以了解您是否需要特定的自动增量列。ROWID对你来说可能足够了
假设您没有LootID作为自动递增字段,而是有这样一个表:
create table loot (chance, material);
insert into loot values ('good', 'copper');
insert into loot values ('bad', 'iron');
默认情况下,表将有一个名为ROWID的自动递增列。所以你可以这样做:
select rowid, * from loot;
rowid chance material
---------- ---------- ----------
1 good copper
2 bad iron
这可能是您已经知道的,也可能不是您已经知道的,所以我想我应该让您知道ROWID的存在。这是自动增量,而不是自动增量。谢谢,这对我很有用。仅供参考-我注意到,
创建表如果不存在Loot(LootID INT主键自动增量,Chance INT not NULL,Material VARCHAR(50)not NULL)
抛出一个错误错误:在SQLite版本3.28.0上,仅允许在整数主键上自动递增。使用INTEGER
而不是INT
数据类型可以解决该错误+感谢您检测到问题。
select rowid, * from loot;
rowid chance material
---------- ---------- ----------
1 good copper
2 bad iron