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

标签 java sql derby embedded-database

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

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”类型的值。

最佳答案

为此,请改用准备好的语句并使用 setter。

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

关于java - 将 Java.sql.Date 插入 Derby 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6769580/

相关文章:

java - 重命名 Derby 架构

java - 使用线程捕获进程输出

java - XMLStreamWriter.writeStartElement(前缀,本地名称,命名空间URI): no binding of prefix to namespace

maven-2 - Derby 卡住了吗?

sql - 在 Apache derby 中将现有列的数据类型从 bigint 更改为 varchar

mysql - 想在 mysql 中按月计算休假天数

java - Spring Hibernate,避免语句重复注册和关闭

javax jws deploy 无法获取端点

sql - 在不改变数据类型string的情况下计算hive中string类型两列的时间差

java - 删除 Hibernate 中的类 id