java sql自动增量

rjzwgtxy  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(326)

**结案。**此问题不可复制或由打字错误引起。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

11个月前关门了。
改进这个问题
我正在尝试使用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)```
mv1qrgav

mv1qrgav1#

将执行更改为:

s.execute(
                "CREATE TABLE IF NOT EXISTS Loot (" +
                "LootID INTEGER PRIMARY KEY AUTOINCREMENT," +
                "Chance INTEGER NOT NULL," +
                "Material VARCHAR(50) NOT NULL" +
                ")"
        );

也请花时间复习https://sqlite.org/autoinc.html 以了解是否需要特定的自动增量列。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

你可能已经知道了,也可能不知道,所以我想我应该让你知道罗维德的存在。

v8wbuo2f

v8wbuo2f2#

请使用以下代码:
代码更改-自动增量到自动增量

try {
            Connection conn = getConnection();
            Statement s = conn.createStatement();

            s.execute(
                    "CREATE TABLE IF NOT EXISTS Loot (" +
                    "LootID INT PRIMARY KEY AUTOINCREMENT," +
                    "Chance INT NOT NULL," +
                    "Material VARCHAR(50) NOT NULL" +
                    ")"
            );

            s.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

相关问题