ODBC ドライバーを介して Microsoft Access で Java を使用しています。主キーの重複エントリを挿入すると、エラーが発生します: java.sql.SQLException: General error
. このレコードが既に存在するというメッセージをユーザーに表示したいのですが、他の場合でも ODBC によってこの例外がスローされる可能性があると思います。そのため、各メッセージ ( ref ) に対してエラー コードがあることがわかりましたが、主キー違反のエラー コードは見つかりませんでした。MS Access での ODBC の主キー違反のエラー コードを教えてください。
ここに基本的なコードがあります
String qry = "INSERT INTO customers VALUES ('" + txtReg.getText()
+ "' ,'" + txtName.getText() + "', '" + txtCity.getText() + "' ,'" + txtCell.getText() + "')";
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:MyDB");
Statement st = con.createStatement();
st.executeQuery(qry);
st.close();
con.close();
} catch (ClassNotFoundException ex) {
JOptionPane.showMessageDialog(this, "Error: " + ex, "Error!", JOptionPane.ERROR_MESSAGE);
} catch (SQLException ex) {
JOptionPane.showMessageDialog(this, "Error: " + ex, "Error!", JOptionPane.ERROR_MESSAGE);
}
これらtxtName
などはJTextFields
. ここに完全なスタック トレースがあります
connected
st created
Error code: 0
SQLState: S1000
Messsage: General error
java.sql.SQLException: General error
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6986)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3110)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:288)
at gui.InsertFileCode.btnInsertActionPerformed(insertFileCode.java:399)