アクセス用クラスを利用した登録画面の作成。
DB登録画面をアクセス専用のクラスを利用する形で作成しているのですが、
eclipseのJunitテストを行うとエラーが出てしまいます。
(欲しい値は取れているのですが、その直後に表記されるエラーの原因がよく分かりません。)
↓エラーはこのような内容です。↓
org.postgresql.util.PSQLException: ERROR: 列"id"は型integerですが、式は型character varyingでした
Hint: 式を書き換えるかキャストしなければなりません
以下はソースの一部を抜粋です。
//DBアクセス用クラス。
public final class DataBaseAccess {
・・・・
public void setMultiType(int index, Object value) throws SQLException {
statement.setObject(index, value);}
public void setMultiType(int index, boolean value) throws SQLException {
statement.setBoolean(index, value);}
public void setMultiType(int index, byte value) throws SQLException {
statement.setByte(index, value);}
public void setMultiType(int index, short value) throws SQLException {
statement.setShort(index, value);}
public void setMultiType(int index, int value) throws SQLException {
statement.setInt(index, value);}
public void setMultiType(int index, long param) throws SQLException {
statement.setLong(index, param);}
public void setMultiType(int index, float value) throws SQLException {
statement.setFloat(index, value);}
public void setMultiType(int index, double value) throws SQLException {
statement.setDouble(index, value);}
public ResultSet select() throws SQLException {
return statement.executeQuery();}
public void update() throws SQLException {
statement.executeUpdate();}
・・・・
//登録クラス
public class CustomerEntry{
public void entry(CustomerBean customerBean) {
DataBaseAccess db = new DataBaseAccess();
try {/** DB接続。 */
db.open();
String SQL = "INSERT INTO TB_CUSTOMER VALUES ( ? , ? , ? , ?);";
db.setSql(SQL);
for (int i = 0; i < 11; i++)
{/** ?に値をセット */
db.setMultiType(1, "int id");
db.setMultiType(2, "String userid");
db.setMultiType(3, "String name");
・
・
・
db.setMultiType(11, "String tel");
db.update();
}
db.close();
}
}
}
長文で申し訳ありませんが、ご教授お願いいたします。
お礼
回答ありがとうございます。 今StatmentクラスのexecuteUpdateの戻り値を確認したところ確かに処理件数が帰ってきますね。 これで、対象となる行がないことを判定することができます。 ありがとうございました。