当我连接一个字符即tid时 在Java中使用此字符串。我会得到 其中sc.CategoryCode = C. 但我确实需要 其中sc.CategoryCode ='C' 当我在开始时添加单引号时 并在tid的末尾 喜欢 其中sc.CategoryCode ='“+ tid +”'“; 我去拿 其中sc.CategoryCode ='C“ 这看起来很奇怪。 谢谢 千斤顶
String str = "select sc.* from SubCategory sc"
+ " where sc.CategoryCode = " + tid;
答案 0 :(得分:5)
你不应该像这样建立你的SQL - 你应该使用参数化的SQL:
// TODO: Closing the statement etc
String sql = "select sc.* from SubCategory sc where sc.CategoryCode = ?";
PreparedStatement statement = conn.prepareStatement(sql);
statement.setString(tid); // Or statement.setString(String.valueOf(tid))
ResultSet results = statement.executeQuery();
使用参数化SQL的原因:
答案 1 :(得分:0)
我不知道你是否正在使用jdbc模板...我给你发了一个例子。
选择:
private static final String SELECT_SANCIONS_GIM = "SELECT * " + "FROM "
+ Constants.T_GPT_V_DETALL_SANCIO_GIM + " WHERE "
+ Constants.EXP_ID_ENS + " =:idEns" + " AND " + Constants.EXP_ANY_EXP
+ " =:anyExp" + " AND " + Constants.EXP_NUM_EXP + " =:numExp" + " AND "
+ Constants.ACRONIM_EXP + " =:acr";
// =:变量
我使用Stringbuilder,看看:
StringBuilder sql = new StringBuilder();
sql.append(SELECT_SANCIONS_GIM);
MapSqlParameterSource parameters = new MapSqlParameterSource();
parameters.addValue("idEns",clauExpedient.getIdEns() );
parameters.addValue("anyExp",clauExpedient.getAnyExp());
parameters.addValue("numExp",clauExpedient.getNumExp() );
parameters.addValue("acr", clauExpedient.getAcrProcediment());
我希望它有所帮助。