我正在尝试将数据插入 MySQL 数据库,其中一列获取当前日期。
代码是
unit=request.getParameter("unit");
name=request.getParameter("name");
article=request.getParameter("article");
String user=request.getParameter("username");
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/newsletter?", "root", "pooja");
Statement st = conn.createStatement();
String query="insert into browse values('"+0+"','"+name+"', '"+NOW()+"', '"+article+"', '"+unit+"', '"+user+"' );";
ResultSet rs = st.executeQuery(query);
代码在 NOW() 处抛出错误,表示该方法未定义。 我可以在此代码本身中进行任何更正,还是有其他方法可以将当前日期输入数据库?
提前致谢。
最佳答案
now()
函数是 MySQL 函数,而不是 Java 方法调用。因此它应该是 SQL 文本的一部分,而不是字符串。
当 something
是返回字符串的 Java 表达式 时,添加类似 "'"+ Something + "'"
的内容是正确的。如果 something
包含“foo”,则结果为 'foo'
,这是一个有效的 SQL 字符串。
但是 NOW()
不是 Java 表达式。它也不意味着是 SQL 中的文字字符串。所以你不需要引号。相反,您应该使用类似 +",NOW(),"+
的内容。
String query="insert into browse values('0','"+name+"', NOW(), '"+article+"', '"+unit+"', '"+user+"' );";
建议使用 PreparedStatement
而不是语句,并且不要以这种方式嵌入字符串。然后 NOW()
将成为 SQL 语句的一部分,并且字符串将被替换为 ?
。
String query="insert into browse values('0',?,NOW(),?,?,?)";
PreparedStatement stmt = conn.prepareStatement(query);
stmt.setString(1, name);
stmt.setString(2, article);
stmt.setString(3, unit);
stmt.setString(4, user);
int inserted = stmt.executeUpdate();
关于java - 如何从jsp页面将日期插入mysql数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31366455/