【发布时间】:2021-12-03 04:12:57
【问题描述】:
这是我的桌子
CREATE TABLE "client" (
"id" INTEGER,
"name" TEXT COLLATE NOCASE,
"surname" TEXT COLLATE NOCASE,
"number" TEXT UNIQUE COLLATE NOCASE,
"car_brand" TEXT,
"modele" TEXT,
"phone_nbr" TEXT,
PRIMARY KEY("id" AUTOINCREMENT));
当我从我的 java 应用程序添加一个新语句时,我只能向列号添加一次 NULL,但我可以从 db 浏览器添加许多空值 这是我使用的代码
String number = tf_number.getText();
if(tf_number.getText().trim().isEmpty())
number = null;
String name = tf_name.getText();
String surname = tf_surname.getText();
String phoneNbr = tf_phoneNbr.getText();
String car_brand = tf_brand.getText();
String modele = tf_modele.getText();
Client c = new Client(name, surname, number, car_brand, modele, phoneNbr);
ClientCRUD pcd = new ClientCRUD();
pcd.addClient(p);
这是sql错误
[SQLITE_CONSTRAINT_UNIQUE] UNIQUE 约束失败(UNIQUE 约束失败:client.number)
这是 addClient() 函数
public void addClient(Client t) {
try {
String requete = "INSERT INTO CLIENT(name,surname,number,car_brand,MODELE,phone_nbr)"
+ "VALUES ('"+t.getClientName()+"','"+t.getClientSurname()+"','"+t.getNumber()+"',"
+ "'"+t.getCarBrand()+"','"+t.getModele()+"','"+t.getPhone()+"')";
Statement st = MyConnection.getInstance().getCnx()
.createStatement();
st.executeUpdate(requete);
System.out.println("Client added");
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}
有什么办法吗?
【问题讨论】:
-
我猜你正在使用 SQLite 数据库,因为 SQLite 现在允许 Unique 字段为空值。但 MySQL 确实支持唯一字段的空值。
-
@ShofiullahBabor 我正在使用 SQLITE
-
这就是为什么你不能这样做
-
贴出 addClient() 方法的代码。
-
@ShofiullahBabor 你能解释更多吗?
标签: java sqlite jdbc null unique-constraint