我的Java程序出现问题。 我使用MS Access作为数据库,使用UCanAccess连接数据库。
当我试图将文本插入数据库时,我得到一个例外:
net.ucanaccess.jdbc.UcanaccessSQLException: integrity constraint violation: unique constraint or index violation; ENTRIES_PRIMARYKEY table: ENTRIES
这是SQL语句,导致异常:
"INSERT INTO Entries (Text, Title, Date, Time) VALUES"
+ "(\"" + text + "\", \"" + title + "\", \"" + date + "\", \"" + time + "\");";
表条目的主键是(标题,日期)。 我插入的信息不存在于表格中。
我已经制作了一个包含相同字符串的System.out.println(),以确保变量包含正确的信息,并且确实如此。
有人能告诉我我做错了吗?
答案 0 :(得分:1)
(从评论到问题:)
我尝试插入一行,但它确实有效。但是当我尝试插入更多行时,问题就出现了。
如果表的主键为(Title, Date)
,那么这两列(字段)中的值必须在所有行中都是唯一的。也就是说,您可以插入一个看起来像
Text Title Date Time
---------- ------ ---------- --------
some text Title1 2015-06-01 05:56:15
但是如果你尝试插入这样的另一行
Text Title Date Time
---------- ------ ---------- --------
other text Title1 2015-06-01 06:15:44
插入将失败,因为表中已存在Title
和Date
的组合。是的,那一行"不存在"因为Text
和Time
值不同,但主键约束并不关心;它只会查看Title
和Date
列。
如果您确实需要插入第二行,那么您需要更改该表的主键。