Java Mysql-preparedStatement插入查询问题

Java Mysql-preparedStatement插入查询问题,java,mysql,prepared-statement,Java,Mysql,Prepared Statement,我在MySQL数据库中有一个2列的表 String insertquery = "INSERT INTO Table (Col1, Col2) VALUES (?, ?)"; PreparedStatement preparedStatement = dbConnection.prepareStatement(insertSQL); preparedStatement.setString(1, "Val 1"); preparedStatement.setString(2, "Val 2");

我在MySQL数据库中有一个2列的表

String insertquery = "INSERT INTO Table (Col1, Col2) VALUES (?, ?)";
PreparedStatement preparedStatement = dbConnection.prepareStatement(insertSQL);
preparedStatement.setString(1, "Val 1");
preparedStatement.setString(2, "Val 2");
preparedStatement.executeUpdate();
问题是,第二列值在运行时决定在何处插入值或保留默认值。 如何将setString设置为默认值

preparedStatement.setString(2, default );  
或者我可以根据条件编写两个独立的sql语句吗?有没有办法处理这个问题,塞纳里奥

更新sql也存在同样的问题

String updatequery = "UPDATE Table SET Col1=?, Col2=?;"
PreparedStatement preparedStatement = dbConnection.prepareStatement(updatequery);
preparedStatement.setString(1, "Val 1");
preparedStatement.setString(2, "Val 2");
preparedStatement.executeUpdate();
我可以这样设置 preparedStatement.setNull(2',)

我必须保持旧值不变,而不是更新为null


谢谢您……

要实现这一点,您必须省去列名,MySQL随后将对任何被省略的列名使用默认值

因此,当您希望Col2的值为默认值时,您可以这样编写查询:

"INSERT INTO Table (Col1) VALUES (?)";
我认为最好的选择是在运行时根据要更改的列实际准备语句本身

我不确定用Java做这件事有多容易,但用PHP做这件事很容易,只要有一个列名数组,并根据需要更新的列在运行时从数组中添加/删除项,然后用逗号将数组中的每个项粘在一起,最后将结果字符串连接到你的最后一个问题

通过通读,也许您可以找到更适合java的解决方案


祝你好运

你在用什么语言?如果可能,在您的编程语言中,您可以尝试将
null
作为第二个参数。是否要在col2中插入一个不变的值?我使用java作为编程语言,是的,要插入一个不变的值,您不能这样做。在php中,我会这样做,不确定它是否有助于您——如果不是很抱歉的话——插入到表中(Col1,Col2)值(?'value_to_insert'),然后只绑定一个参数是的,可能会生成两个preparedstatement并动态决定使用哪一个。谢谢大家,目前我更喜欢两个preparedstatement并动态决定使用哪一个。。