Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何正确地将当前时间戳设置到这个将值插入MySql表的Java CRUD方法中?_Java_Mysql_Sql_Timestamp - Fatal编程技术网

如何正确地将当前时间戳设置到这个将值插入MySql表的Java CRUD方法中?

如何正确地将当前时间戳设置到这个将值插入MySql表的Java CRUD方法中?,java,mysql,sql,timestamp,Java,Mysql,Sql,Timestamp,我将下表放入MySql数据库: CREATE TABLE log( timestamp TIMESTAMP NOT NULL, action ENUM('addPerson', 'getPerson', 'getPeople', 'updatePerson', 'deletePerson', 'deleteAll') NOT NULL, PRIMARY KEY (timestamp) ); 现在我正在实现一个JAVAinsertCRUD方法到DAO中,但是我发现在相关的

我将下表放入MySql数据库:

CREATE TABLE log(
    timestamp TIMESTAMP NOT NULL,
    action ENUM('addPerson', 'getPerson', 'getPeople', 'updatePerson', 'deletePerson', 'deleteAll') NOT NULL,
    PRIMARY KEY (timestamp)
);
现在我正在实现一个JAVAinsertCRUD方法到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,新的时间戳(System.currentTimeMillis())

注意:我建议您在发布SO之前检查Javadoc。这真的很有帮助。

java.time 现代方法使用java.time类,这些类在几年前取代了可怕的
java.sql.Timestamp
类。具体来说,JDBC4.2及更高版本支持这一点

OffsetDateTime odt = OffsetDateTime.now( ZoneOffset.UTC ) ;
写入数据库

myPreparedStatement.setObject( … , odt ) ;
找回

OffsetDateTime odt = myResultSet.getObject( … , OffsetDateTime.class ) ;

默认当前时间戳

更好的是,自动化。在表的定义上使用
DEFAULT
,在插入行时自动捕获当前时刻。有关标准SQL和MySQL语法的详细信息,请参阅。

尝试以下操作:
p.setTimestamp(1,新时间戳(System.currentTimeMillis())
如果你用它作为答案,我会接受它的重复:可怕的
java.sql.Timestamp
类现在是遗留的,被现代的java.time类
java.time.OffsetDateTime
所取代。