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)、これら 2 つの列 (フィールド) の値はすべての行で一意である必要があります。つまり、次のような行を挿入できます

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ます。

その 2 行目を挿入する必要がある場合は、テーブルの主キーを変更する必要があります。

于 2015-06-01T10:36:38.693 に答える