如何将当前时间戳正确设置到此 Java CRUD 方法中,将值插入 MySql table?
How to correctly set the current time stamp into this Java CRUD method that insert a value into a MySql table?
我将以下 table 放入 MySql 数据库中:
CREATE TABLE log(
timestamp TIMESTAMP NOT NULL,
action ENUM('addPerson', 'getPerson', 'getPeople', 'updatePerson', 'deletePerson', 'deleteAll') NOT NULL,
PRIMARY KEY (timestamp)
);
现在我正在将 JAVA insert CRUD 方法实施到 DAO 中,但我发现设置 timestamp 存在一些问题值(用当前日期时间初始化)到相关准备好的语句中。
所以我正在做这样的事情:
public void addEntry(String message) throws SQLException {
// The Connection object is a singleton and the used connection is the same for all the CRUD methods:
Connection conn = Database.getInstance().getConnection();
PreparedStatement p = conn.prepareStatement("insert into log (timestamp, action) values (?,?)");
p.setTimestamp(1, new Timestamp(time));
}
但是它在创建 Timestamp 对象时会出错,因为它需要一个 long 值。所以我认为这不是我想要的!!!
如何将其设置为当前时间戳(当前日期时间)?
Tnx
试试这个:p.setTimestamp(1, new Timestamp(System.currentTimeMillis()));
注意:我建议您在发布到 SO 之前检查 Javadoc。真的很有帮助。
java.time
现代方法使用 java.time classes,多年前取代了可怕的 java.sql.Timestamp
class。具体来说,JDBC 4.2 及更高版本为此支持 OffsetDateTime
。
OffsetDateTime odt = OffsetDateTime.now( ZoneOffset.UTC ) ;
写入数据库。
myPreparedStatement.setObject( … , odt ) ;
检索。
OffsetDateTime odt = myResultSet.getObject( … , OffsetDateTime.class ) ;
DEFAULT CURRENT_TIMESTAMP
更好的是,自动化。在 table 的定义上使用 DEFAULT
以在插入行时自动捕获当前时刻。有关标准 SQL 和 MySQL 语法的详细信息,请参阅 .
我将以下 table 放入 MySql 数据库中:
CREATE TABLE log(
timestamp TIMESTAMP NOT NULL,
action ENUM('addPerson', 'getPerson', 'getPeople', 'updatePerson', 'deletePerson', 'deleteAll') NOT NULL,
PRIMARY KEY (timestamp)
);
现在我正在将 JAVA insert CRUD 方法实施到 DAO 中,但我发现设置 timestamp 存在一些问题值(用当前日期时间初始化)到相关准备好的语句中。
所以我正在做这样的事情:
public void addEntry(String message) throws SQLException {
// The Connection object is a singleton and the used connection is the same for all the CRUD methods:
Connection conn = Database.getInstance().getConnection();
PreparedStatement p = conn.prepareStatement("insert into log (timestamp, action) values (?,?)");
p.setTimestamp(1, new Timestamp(time));
}
但是它在创建 Timestamp 对象时会出错,因为它需要一个 long 值。所以我认为这不是我想要的!!!
如何将其设置为当前时间戳(当前日期时间)?
Tnx
试试这个:p.setTimestamp(1, new Timestamp(System.currentTimeMillis()));
注意:我建议您在发布到 SO 之前检查 Javadoc。真的很有帮助。
java.time
现代方法使用 java.time classes,多年前取代了可怕的 java.sql.Timestamp
class。具体来说,JDBC 4.2 及更高版本为此支持 OffsetDateTime
。
OffsetDateTime odt = OffsetDateTime.now( ZoneOffset.UTC ) ;
写入数据库。
myPreparedStatement.setObject( … , odt ) ;
检索。
OffsetDateTime odt = myResultSet.getObject( … , OffsetDateTime.class ) ;
DEFAULT CURRENT_TIMESTAMP
更好的是,自动化。在 table 的定义上使用 DEFAULT
以在插入行时自动捕获当前时刻。有关标准 SQL 和 MySQL 语法的详细信息,请参阅