如何将时间(HH:MM:SS)插入Java 中的MySQL 数据库table?

How to insert Time ( HH:MM:SS) into MySQL Database table in Java?

我有一个 table,其列为 TIME 类型(名为 myTime)。 字符串 t = "15:50:00"; 如何转换此字符串并将其插入 myTime 列 (HH:MM:SS)。

谢谢!

您可以使用 TIME 数据类型。 例如,

CREATE TABLE tests (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(500) NOT NULL,
    start_time TIME,
    end_time TIME
);

您可以使用 setString() 设置任何 SQL 数据类型。尝试这样的事情:

prepStatement.setString("myTime", "15:50:00");

我自己没有经验,但你能做的最好的事情就是把你的时间保存在Java中的一个LocalTime对象中,然后使用yourPreparedStatement.setObject(parameterIndex, yourTime);来设置时间作为 SQL insertupdate 语句中的值。我相信您可以在那里找到代码示例、教程、文档等。请去搜索。

那么你从哪里得到 LocalTime 对象?

LocalTime yourTime = LocalTime.parse(t);

(其中 t 是您的时间字符串,例如问题中的 15:50:00

可以使用String数据类型来表示Time值,也可以使用MySQLTime数据输入并在您的 Java 代码中使用 preparedStatement.setTime(),例如:

您的 table 是:

CREATE my_table (
    id          INT          PRIMARY KEY AUTO_INCREMENT,
    name        VARCHAR2(30) NOT NULL,
    time_from   TIME
);

您的 Java 代码可能如下所示:

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.Time;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class MySQLDatabaseDemo {

   Connection conn = null;
   PreparedStatement preparedStatement = null;

   public static Connection getConnection() throws Exception {
      String driver = "org.gjt.mm.mysql.Driver";
      String url = "jdbc:mysql://localhost/databaseName";
      String username = "root";
      String password = "root";
      Class.forName(driver);
      Connection conn = DriverManager.getConnection(url, username, 
                                                    password);
      return conn;
   }

   /**
    * @param args [0] = value of "id"
    *             [1] = value of "name"
    *             [2] = value of "time_from"
    */
   public void insertRowWithTimeDatatype(String[] args) {

      String query = "insert into my_table (id, name, timefrom) " + 
                                   "values (?, ?, ?)";      

      DateFormat sdf = new SimpleDateFormat("hh:mm:ss");
      Date date = sdf.parse(args[2]);
      Time time = new Time(date.getTime());

      try {
         conn = getConnection();  // getConnection() is YOUR method

         preparedStatement = conn.prepareStatement(query);

         preparedStatement.setInt(1, Integer.parseInt(args[0]));
         preparedStatement.setString(2, args[1]);
         preparedStatement.setTime(3, time);

         // Execute statement and return the number of rows affected
         int rowCount = preparedStatement.executeUpdate();
         System.out.println("Number of rows affected: " + rowCount);
      } finally {
         preparedStatement.close();
         conn.close();
      }
   }
}