UCanAccessSQLException:违反约束

UCanAccessSQLException: constraint violation

我的 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 + "\");";

table 个条目的主键是(标题,日期)。 table.

中不存在我要插入的信息

我制作了一个包含相同字符串的 System.out.println() 以确保变量包含正确的信息,它们确实如此。

谁能告诉我哪里做错了?

(从评论到问题:)

I tried inserting a row, and it worked. But when I tried to insert more rows, the problem occurred.

如果 table 的主键是 (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

插入将失败,因为 TitleDate 的组合已经存在于 table 中。是的,那行 "doesn't exist" 因为 TextTime 值不同,但是主键约束不在乎;它只查看 TitleDate 列。

如果您确实需要插入第二行,那么您需要更改 table 的主键。