Java 插入数据库仅填充2行

Java 插入数据库仅填充2行,java,mysql,Java,Mysql,你好,我想在数据库表有3行的地方插入值 id-项目-日期 在这里,我想填充项目和日期行,因为ID是一个自动增量字段,每个记录的ID++都在该字段中。但现在我不知道我的查询在Java中应该是什么样子,因为它与我以前的(PHP)有很大的不同 我认为这是相关的代码 st = con.createStatement(); String query = "INSERT INTO toDoList " + "VALUES ('" + value + "', 'CURDATE()')"; st.execute

你好,我想在数据库表有3行的地方插入值

id-项目-日期

在这里,我想填充项目和日期行,因为ID是一个自动增量字段,每个记录的ID++都在该字段中。但现在我不知道我的查询在Java中应该是什么样子,因为它与我以前的(PHP)有很大的不同

我认为这是相关的代码

st = con.createStatement();
String query = "INSERT INTO toDoList " + "VALUES ('" + value + "', 'CURDATE()')";
st.executeUpdate(query);

有人能告诉我第一张唱片要填什么吗?我尝试只使用空引号,但这会导致错误。

由于id是自动递增的,您不需要给出任何值,只需在查询中列出减去id列的所有列即可

String query = "INSERT INTO toDoList(item, date) " + "VALUES ('" + value + "', 'CURDATE()')";
我知道您是java开发新手,我建议您使用JDBC而不是简单的语句来执行SQL查询,以防止SQL注入

例如:

String query="INSERT INTO toDoList(item, date) VALUES (?,?)";";
PreparedStatement st = conn.prepareStatement(query);
st.setString(youritemval);
st.setDate(new SimpleDateFormat("dd/MM/yyyy").format(Calendar.getInstance().getTime()));
st.executeUpdate();

由于id是自动递增的,所以不需要给出任何值,只需在查询中列出减去id列的所有列即可

String query = "INSERT INTO toDoList(item, date) " + "VALUES ('" + value + "', 'CURDATE()')";
我知道您是java开发新手,我建议您使用JDBC而不是简单的语句来执行SQL查询,以防止SQL注入

例如:

String query="INSERT INTO toDoList(item, date) VALUES (?,?)";";
PreparedStatement st = conn.prepareStatement(query);
st.setString(youritemval);
st.setDate(new SimpleDateFormat("dd/MM/yyyy").format(Calendar.getInstance().getTime()));
st.executeUpdate();

如果您的值不适用于所有列,则在插入数据时必须定义列名

String query = "INSERT INTO toDoList(item,date) " + "VALUES ('" + value + "', 'CURDATE()')";

如果您的值不适用于所有列,则在插入数据时必须定义列名

String query = "INSERT INTO toDoList(item,date) " + "VALUES ('" + value + "', 'CURDATE()')";

我建议使用PreparedStatement和绑定变量,而不是以这种方式连接字符串。而名为DATE的列并不是很自我描述的。使用关键字作为表名和列名是自找麻烦。我称之为ITEM\u INSERTION\u DATE。如何在准备好的语句中使用CURDATE()?和st.setString();想要2个值另一个值应该是什么?@Reshad您可以在java中随时获取CURDATE(),您不需要SQL的CURDATE(),请检查我的编辑:),但这就像要编写更多代码一样。。所以它应该更容易,对吗?@Reshad这就是在java中获取curdate的方法,好吧,您可以在使用时始终使用简单语句,但正如所说的那样,这将导致sql注入。我建议使用PreparedStatement和绑定变量,而不是以这种方式连接字符串。而名为DATE的列并不是很自我描述的。使用关键字作为表名和列名是自找麻烦。我称之为ITEM\u INSERTION\u DATE。如何在准备好的语句中使用CURDATE()?和st.setString();想要2个值另一个值应该是什么?@Reshad您可以在java中随时获取CURDATE(),您不需要SQL的CURDATE(),请检查我的编辑:),但这就像要编写更多代码一样。。所以它应该更容易,对吗?@Reshad这就是在java中获取curdate的方式,好吧,您可以在使用时始终使用简单语句,但正如所说的,它将引导您使用sql注入