java - 在 SQL 数据库中存储时间戳

标签 java sql jdbc jodatime

我在将值存储到我在 Netbeans 中创建的 SQL 数据库中时遇到问题。

String bladeSerial;
String bladeType;
LocalTime startTime1;

private void startButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                             


    Connection conn = null; 
    Statement st = null;
try {
    conn = DriverManager.getConnection ("jdbc:derby://localhost:1527/db01", "Administrator", "admin"); //run procedure getConnection to connect to the database - see below
     st = conn.createStatement(); //set up a statement st to enable you to send SQL statements to the database.
} catch (SQLException ex) {
    Logger.getLogger(FormTwo1.class.getName()).log(Level.SEVERE, null, ex);
}


        System.out.println ("Successful Connection");


String query = "insert into TB01(SERIAL,BLADETYPE,STARTT1) values ('+bladeSerial+', '+itemText+', '+(String.valueOf(startTime1))+')";
try (PreparedStatement pstmt = conn.prepareStatement(query)) {
    pstmt.setString(1, bladeSerial);
    pstmt.setString(2, bladeType);
    pstmt.setString(3, String.valueOf(startTime1));
    pstmt.executeUpdate();
} catch (SQLException ex) {
    // Exception handling
    Logger.getLogger(FormTwo1.class.getName()).log(Level.SEVERE, null, ex);
}

startTime1 变量以 HH:mm:ss.SSS 格式保存。运行代码时,出现错误:

java.sql.SQLSyntaxErrorException: Syntax error: Encountered ":" at line 1, column 65.

错误指的是时间中的冒号,但我不知道如何解决这个问题。

SERIALVARCHAR(5)BLADETYPEVARCHAR(80) STARTT1 是一个 VARCHAR(12)。所有列都在 DATA 表中。

最佳答案

改用PreparedStatement,并使用set*方法设置参数:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss.SSS");
String query = "insert into DATA(SERIAL,BLADETYPE,STARTT1) values (?, ?, ?)";
try (PreparedStatement pstmt = conn.prepateStatement(query)) {
    pstmt.setString(1, bladeSerial);
    pstmt.setString(2, bladeType);
    pstmt.setString(3, startTime1.format(formatter));
    pstmt.executeUpdate();
} catch (SQLException e) {
    // Exception handling
}

关于java - 在 SQL 数据库中存储时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38375238/

相关文章:

java - 使用参数化 'jmh' 测量对多线程算法进行基准测试时出错

java - 即使 char 存在,char 数组中的 indexof char 也会返回 -1

java - 从服务器获取所有信息还是分阶段获取?

sql - Postgresql:创建一个插入查询,在一个范围内插入多条记录

.NET DataReader 和 ORDER BY

java - 如何为 Oracle SQL Developer 加载 JDBC 驱动程序

Java Spring JDBC SPRING_SESSION 表不存在

java - 如何向 Android 小部件添加传感器?

sql - 递归查询中不允许使用聚合函数。是否有其他方法来编写此查询?

java - 打印整个数据库列的方法