Java sql异常:不一致的数据类型:预期的时间戳编号

Java sql异常:不一致的数据类型:预期的时间戳编号,java,sql,oracle,Java,Sql,Oracle,我已经用时间戳数据库在sql数据库中创建了一个冒号。 我正试图从java运行下面给出的插入查询 st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); st.executeUpdate("insert into profmessage values('" + uid + "','" + from + "','" + to + "','" + msg + "','" + dt

我已经用时间戳数据库在sql数据库中创建了一个冒号。 我正试图从java运行下面给出的插入查询

st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
st.executeUpdate("insert into profmessage values('" + uid + "','" + from + "','" + to + "','" + msg + "','" + dt + "',1,0,'" + new java.sql.Timestamp(new Date().getTime()) + "')");
st.close();
它正在显示

sqlexception  inconsistent datatypes: expected TIMESTAMP got NUMBER

在SQL Server中,
时间戳
数据类型的含义与您认为的不同<代码>时间戳列意味着在服务器创建和更新行时由服务器本身进行更新。它们的值看起来像“
0x00000000001CF9F9
”,这实际上只是一个十六进制格式的数字


您需要的是
DATETIME
数据类型。

我认为您应该使用PreparedStatement(这也有助于避免SQL注入),并插入时间戳的值,如下所示:

preparedStatement.setTimestamp(theNumberOfTimestampOccurenceInYourQery, new java.sql.Timestamp(new Date().getTime()));

首先:不要像那样将值放入SQL。使用事先准备好的陈述。接下来,在insert语句中指定列,以避免其特定于模式顺序。修复这两个问题,然后看看它是否仍然不起作用。您可以说
SQL injection
?您的问题必须与列排序有关,在insert语句中使用列名,这也是Jon建议的,您应该使用preparedstatement@coreJavare你说得对。我按顺序错了。Nut现在作为ORA-01843给出了例外:不是有效的月份注释中提到的错误代码表明他们没有使用SQL Server。这是Oracle,不是SQL Server。。。是的,别介意我的回答,它不适用。我会保留它,以防其他人用谷歌搜索这个问题,但在将来,我会使用更好的问题标签!