0

我的 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() 包含相同的字符串,以确保变量包含正确的信息,并且它们确实如此。

有人可以告诉我我做错了什么吗?

4

1 回答 1

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已经存在于表中。是的,该行“不存在”,因为TextTime值不同,但主键约束不在乎;它只查看TitleDate列。

如果您确实需要插入第二行,则需要更改表的主键。

于 2015-06-01T10:36:38.693 回答