我知道这个问题已被无数次询问过,但由于某些原因我无法解决这个问题。我正在尝试使用以下架构在sqlite中创建一个非常基本的用户帐户表。
CREATE TABLE Account (
User_id INTEGER PRIMARY KEY,
Password VARCHAR(50) NOT NULL,
First_name VARCHAR(25) NOT NULL,
Last_name VARCHAR(25) NOT NULL,
Usage_plan INT NOT NULL
);
根据我的阅读,它看起来像一个标记为INTEGER PRIMARY KEY的列应该自动自动增加。
见这里:https://www.sqlite.org/faq.html#q1
CREATE TABLE t1(
a INTEGER PRIMARY KEY,
b INTEGER
);
With this table, the statement
INSERT INTO t1 VALUES(NULL,123);
is logically equivalent to saying:
INSERT INTO t1 VALUES((SELECT max(a) FROM t1)+1,123);
有了这个说法,我希望以下声明能够奏效。
String sql = "INSERT INTO Account VALUES (NULL, '" + password + "', '" + firstName + "', '" + lastName + "', " + "1);";
System.out.println(sql);
try {
statement.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
System.out.println("Error adding " + firstName + " to netflix users.");
}
但事实并非如此。当我运行我的程序时,我收到一个错误,即Account.User_id失败了非null NULL constaint。我尝试了很多这方面的变化。有人能指出我正确的方向吗?