Java 查询中的字符串参数
我是一名程序员学习者 我想得到以下格式的MySQL查询Java 查询中的字符串参数,java,mysql,groovy,Java,Mysql,Groovy,我是一名程序员学习者 我想得到以下格式的MySQL查询 select status from training where status in ("Open", "Delivered") 从我的代码 if(params.openCheckBox){ query +=" ( t.status IN ("+params.openCheckBox+", "+params.DeliveredCheckBox+")" query +=" )" } 但它给 select st
select status from training where status in ("Open", "Delivered")
从我的代码
if(params.openCheckBox){
query +=" ( t.status IN ("+params.openCheckBox+", "+params.DeliveredCheckBox+")"
query +=" )"
}
但它给
select status from training where status in (Open, Delivered)
在这里“”(缺少双引号)用
\
转义双引号,MySQL接受双引号来包装字符串
query +=" ( t.status IN (\""+params.openCheckBox+"\", \""+params.DeliveredCheckBox+"\")"
query +=" )"
或
只需使用单引号
query +=" ( t.status IN ('"+params.openCheckBox+"', '"+params.DeliveredCheckBox+"')"
query +=" )"
上面的查询易受sql注入
的攻击。使用PreparedStatement
如下所示
代码段:
dbConnection = getDBConnection();
String query = "SELECT .... FROM .... WHERE t.status IN (?, ?)";
PreparedStatement preparedStatement = dbConnection.prepareStatement(query);
preparedStatement.setString(1, params.openCheckBox);
preparedStatement.setString(2, params.DeliveredCheckBox);
ResultSet rs = preparedStatement.executeQuery();
来源
\
转义双引号,MySQL接受双引号来包装字符串
query +=" ( t.status IN (\""+params.openCheckBox+"\", \""+params.DeliveredCheckBox+"\")"
query +=" )"
或
只需使用单引号
query +=" ( t.status IN ('"+params.openCheckBox+"', '"+params.DeliveredCheckBox+"')"
query +=" )"
上面的查询易受sql注入
的攻击。使用PreparedStatement
如下所示
代码段:
dbConnection = getDBConnection();
String query = "SELECT .... FROM .... WHERE t.status IN (?, ?)";
PreparedStatement preparedStatement = dbConnection.prepareStatement(query);
preparedStatement.setString(1, params.openCheckBox);
preparedStatement.setString(2, params.DeliveredCheckBox);
ResultSet rs = preparedStatement.executeQuery();
来源
query +=" ( t.status IN ('"+params.openCheckBox+"', '"+params.DeliveredCheckBox+"')"
您可以使用单引号代替
query +=" ( t.status IN ('"+params.openCheckBox+"', '"+params.DeliveredCheckBox+"')"
为什么需要双引号?@michaeladan因为他正在传递
String
值。和String
值应该用引号括起来。然后使用单引号代替。为什么要添加grails
标记?如果您使用的是grails,请查看GORM而不是原生MySQL…为什么需要双引号?@MichaelArdan,因为他正在传递String
值。和String
值应该用引号括起来。然后使用单引号代替。为什么要添加grails
标记?如果您使用的是grails,请查看GORM,而不是使用本机MySQL。。。