我的网站上有一个反馈页面,其中包含name
,email
和comments
。以下是JSP
上的代码,我正在使用Apache Tomcat 7.0
和Oracle DB
String query = "Insert into t_comments(name, email, comments) values('"
+ realname
+ "','"
+ email
+ "','"
+ comments+"')";
这很有效。但我决定将DATEC
列(数据类型DATE
)添加到我的表t_comments
。所以我的查询看起来应该是
String query = "Insert into t_comments(name, email, comments,datec) values('"
+ realname
+ "','"
+ email
+ "','"
+ comments
+ "',"
+ "TO_DATE('"
+ new java.util.Date()
+ "', 'dd/mm/yyyy hh24:mi:ss'))";
这不起作用。
ORA-01858: a non-numeric character was found where a numeric was expected
也许我错误地将DATE输入到我的表中。我还有另一个问题。 name
和comments
位于西里尔语中。当它们插入表中时,它们会因不同的编码而显示不正确。我在JSP
页
<%@ page language='java' contentType='text/html; charset=UTF-8' pageEncoding='UTF-8'%>
请帮助我解决我的两个问题
将DATE插入我的表格
将西里尔字样插入我的表格
由于
答案 0 :(得分:1)
让oracle为你做这件事。
String query = "Insert into t_comments(name, email, comments,datec) values('"
+ realname
+ "','"
+ email
+ "','"
+ comments
+ "', CURRENT_TIMESTAMP)";
答案 1 :(得分:1)
您应该调试代码并检查Date对象toString()是否与Oracle期望的模式匹配。
潜在地,如果你不想以Arvind的方式进行(我认为这实际上是个好主意),你可以使用SimpleDateFormat格式化你的日期。
您还应该考虑使用PreparedStatement而不是使用字符串连接来构建语句。
答案 2 :(得分:0)
我感谢大家的回答。我使用CURRENT_TIMESTAMP
将DATE
从@Arvind Sridharan插入我的桌子,对于西里尔字符,我在jsp中添加了以下几行
request.setCharacterEncoding("UTF-8");
realname = new String(realname.getBytes("ISO-8859-1"),"UTF8");
comments = new String(comments.getBytes("ISO-8859-1"),"UTF8");