-1

没有为 setDate(int,java.util.Date) 方法找到合适的方法 PreparedStatement.setDate(int,java.sql.Date,Calendar) 不适用

public void update (Pasien dp) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
PreparedStatement statement = null;
try {
    statement =  connection.prepareStatement(update);

    statement.setString(1, dp.getId_pemeriksaan());
    statement.setString(2,dp.getNama());
    statement.setString(3,dp.getAlamat());
    statement.setString(4,dp.getUmur());
    statement.setString(5,dp.getJenis_kelamin());
    statement.setString(6,dp.getGolongan_darah());
    statement.setString(7,dp.getSpesimen());
    statement.setString(8,dp.getPengirim());
    statement.setString(9,dp.getPemeriksaan());
    statement.setDate(10, dp.getTanggal()df.format(getTanggal));
    statement.setString(11, dp.getNo_rekam_medik());
    statement.executeUpdate();

} catch (SQLException ex) {
    System.out.println("error karena" +ex.getMessage());
}finally{
    try {
        statement.close();
    } catch (SQLException ex) {
        System.out.println("error karena" +ex.getMessage());
    }
   }
  }
4

3 回答 3

2

这行代码很可疑:

statement.setDate(10, dp.getTanggal()df.format(getTanggal));

也许应该是:statement.setDate(10, df.parse(dp.getTanggal()));

(如果dp.getTanggal()方法是 a String)。


显然你还没有检查PreparedStatement.setDate()方法。

该方法具有以下签名:

void setDate(int parameterIndex, java.sql.Date x) throws SQLException;

它不是一个对象,java.util.Date而是一个java.sql.Date对象。

如果你想使用Calendar那么:

void setDate(int parameterIndex, java.sql.Date x, Calendar cal) throws SQLException;

是要打电话的人。显然,这仍然需要java.sql.Date对象。


要将 a 转换java.util.Date为 a java.sql.Date,您可以执行以下操作:

java.util.Date date = df.parse(...);
java.sql.Date = new java.sql.Date(date.getTime());
于 2013-01-02T08:27:13.307 回答
1

异常说明了确切的错误。

没有找到适合 setDate(int,java.util.Date) 方法 PreparedStatement.setDate(int,java.sql.Date,Calendar) 的方法不适用]

在您的 src 中,以下行

dp.getTanggal()df.format(getTanggal)

正在回归java.util.Date。但该PreparedStatement.setDate()方法期望java.sql.Date

于 2013-01-02T08:29:50.987 回答
0
statement.setDate(10, dp.getTanggal()df.format(getTanggal));

你忘了放comma(,)。:)

但有趣的部分是DateFormat#format返回日期的格式化String表示。这需要通过它的槽setString方法。

于 2013-01-02T08:26:14.053 回答