java - 如何从jsp页面将日期插入mysql数据库?

标签 java mysql database jsp date

我正在尝试将数据插入 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/

相关文章:

java - 在 Apache Tomcat 服务器上部署 GWT 应用程序时出现 500 内部服务器错误

java - JComboBox 与 TableModel 共享数据

mysql - Gradle/Hibernate/Maven 注释外键创建

MYSQL:更新两个表之间字段的最简单方法

mysql - 查询一个时间段之间的时间段

java - 如何在Java中将这个日期格式 "Wednesday, 12 June 2019 14:23:39"解析为这个 "2019-03-05T11:56:13Z"?

java - 如何按某些属性对对象列表进行排序

mysql - 如何优化此 MySql 查询 - 连接 3 个表?

java - 将 MySQL 数据库连接到 Java

android - 比较两张图片