我在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取决于条件?有没有办法处理这个Senario?
更新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
谢谢...
答案 0 :(得分:1)
要实现这一点,您必须省略列名,然后MySQL将使用已省略的任何列名的默认值。
因此,当您希望Col2的值为默认值时,您可以像这样编写查询:
"INSERT INTO Table (Col1) VALUES (?)";
我认为您最好的选择是根据要更改的列在运行时实际准备语句本身。
我不确定在Java中可以轻松完成这项工作但是使用PHP可以通过在运行时使用列数组和在数组中添加/删除项来轻松完成,具体取决于列需要什么要更新,然后使用PHP Implode function用逗号粘合数组的每个项目,最后将结果字符串连接到最终查询。
也许您可以通过阅读this related stack-overflow answer找到更适合java的解决方案。
祝你好运