Java SQL自动增量

Java SQL自动增量,sql,sqlite,Sql,Sqlite,我正在尝试使用Java在SQLite数据库中创建一个新表。它一次又一次地给我同样的错误,我对此感到非常沮丧。任何帮助都将不胜感激 try { Connection conn = getConnection(); Statement s = conn.createStatement(); s.execute( "CREATE TABLE IF NOT EXISTS Lo

我正在尝试使用Java在SQLite数据库中创建一个新表。它一次又一次地给我同样的错误,我对此感到非常沮丧。任何帮助都将不胜感激

        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