我可以在sql查询中键入字符串值,而在值周围没有'符号吗?

时间:2018-07-16 09:00:23

标签: java mysql sql

我正在为自己创建查询构造函数,以使将来的编码变得更容易,现在我的方法中有以下代码:

public static String constructQueryValueRemove(String table, Pair pairIndex, String column){
    String query;
    if (pairIndex.getRight() instanceof Number){
        query = "UPDATE `"+table+
                "` SET `"+column+"` = NULL" +
                "WHERE `"+table+"`.`"+pairIndex.getLeft()+"` = "+pairIndex.getRight();
    } else {
        query = "UPDATE `"+table+
                "` SET `"+column+"` = NULL" +
                "WHERE `"+table+"`.`"+pairIndex.getLeft()+"` = '"+pairIndex.getRight().toString()+"'";
    }
    return query;
}

如果pairIndex.getRight()将是字符串,并且值中没有'符号,以下查询是否可以正常工作?

query = "UPDATE `"+table+"`"+
        "SET `"+column+"` = NULL" +
        "WHERE `"+table+"`.`"+pairIndex.getLeft()+"` = "+pairIndex.getRight();

1 个答案:

答案 0 :(得分:0)

不幸的是,这不是有效的SQL命令,因为该字符串未加引号。创建一个准备好的语句,然后绑定动态值(例如给定的字符串)会更简单。准备好的语句将在内部处理正确的引用。

有关详情,请参见此处:https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html

顺便看看一下QuerydsljOOQHibernate,了解一些易于在Java中构建SQL查询的框架。