将Java.sql.Date插入Derby数据库

时间:2011-07-20 23:05:49

标签: java sql derby embedded-database

我正在尝试将日期对象插入数据库,但它说我试图插入一个Integer。这是我的代码:

public void insertAssignment(long studentId, String newAssignment, int ptsTotal, int ptsRecieved, String category, Date dueDate, String term, int yr) {
    java.sql.Date temp = new java.sql.Date(dueDate.getTime());
    try{
        s.execute("INSERT INTO Assignments " +
                  "VALUES (" + studentId + ",'" + newAssignment + "'," + ptsTotal +
                  "," + ptsRecieved + ",'" + category + "'," + temp
                  + ",'" + term + "'," + yr + ")");
        System.out.println("Assignment inserted.");
    }
    catch(SQLException error){
        System.err.println("Unable to insertAssignment.");
        error.printStackTrace(System.err);
        System.exit(0);
    }
} 

我的错误: java.sql.SQLSyntaxErrorException:“DATE”类型的列不能包含“INTEGER”类型的值。

1 个答案:

答案 0 :(得分:4)

为此,请使用预准备语句并使用setter。

目前,您将日期展平为字符串值(需要采用正确的格式才能使数据库正常工作)并丢失它是一个日期,因此数据库需要对其进行解析。你可以使用准备好的声明来避免这种情况。