【发布时间】:2019-09-05 08:11:08
【问题描述】:
org.sqlite.SQLiteException: [SQLITE_CONSTRAINT_NOTNULL] A NOT NULL 约束失败(NOT NULL 约束失败:stock.id)
我的 SQLite 数据库中有三列 id、pname、mrp,但我只想将数据插入两列,
然后我做了这个
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try {
Class.forName("org.sqlite.JDBC");
Connection con = DriverManager.getConnection("jdbc:sqlite:qmb.db");
String query="INSERT INTO stock(pname,mrp) VALUES('"+jTextField2.getText()+"','"+jTextField5.getText()+"');";
executeSQlQuery(query, "Inserted"); // TODO add your handling code here:
} catch (ClassNotFoundException | SQLException ex) {
Logger.getLogger(UpdateStock.class.getName()).log(Level.SEVERE, null, ex);
}
}
我只是希望能够通过单击一个按钮将行插入到数据库中
【问题讨论】:
-
了解 sql 表中的非空约束。这会让你对这个问题有所了解。
-
显示你的表定义。
-
还阅读了如何将值绑定到 sql 语句中的参数,而不是尝试直接在其中使用用户提供的字符串构建语句。不要对 sql 注入敞开心扉。
-
您的表的“id”列似乎有一个约束,说明此列中没有条目可以有“null”值。我的猜测是您的表未配置为为新条目自动生成“id”。要解决这个问题,您可以在输入新条目时提供一个 id(不推荐),或者让您的数据库为您生成它。
-
id很可能是 PRIMARY KEY 但没有自动增量标志。 PK 根据定义不可为空。您要么更改 DDL 以将此列与自动序列一起放置,要么提供值。 PS,请检查如何在java中防止SQL Injection!JTextField值的串联真的很糟糕