为了账号安全,请及时绑定邮箱和手机立即绑定

例子中不知道map1.put("value", "'小红'")在小红还要加上一个单引号说因为是变量可以更详细地说明一下吗

/ 猿问

例子中不知道map1.put("value", "'小红'")在小红还要加上一个单引号说因为是变量可以更详细地说明一下吗

循着那道光前行 2018-02-13 10:37:53

public static void main(String[] args) {

List<Map<String, Object>> list=new ArrayList();

Map<String,Object> map1=new HashMap<>();

map1.put("name", "user_name");

map1.put("rela", "=");

map1.put("value", "'小红'");

list.add(map1);

List<Gooddes> gList=dGooddesDao.query(list);

for(Gooddes gooddes:gList){

System.out.println(gooddes.toString());

}

}




public List<Gooddes> query(List<Map<String, Object>> params){

Connection conn=Jdbc_util.getConnection();

PreparedStatement statement=null;

Gooddes g=null;

StringBuffer sql=new StringBuffer("select * from imooc_goddess where 1=1 ");

List<Gooddes> list=new ArrayList<>();

if(params!=null&&params.size()>0){

for (int a=0;a<params.size();a++){

Map<String, Object> map=params.get(a);

sql.append(" and "+map.get("name"));

sql.append(" "+map.get("rela"));

sql.append(" "+map.get("value"));

}

}

try {

statement=conn.prepareStatement(sql.toString());

ResultSet rs=statement.executeQuery();

while (rs.next()) {

g=new Gooddes();

g.setId(rs.getInt("id"));

g.setUser_name(rs.getString("user_name"));

g.setAge(rs.getInt("age"));

g.setSex(rs.getInt("sex"));

g.setBirthday(rs.getDate("birthday"));

g.setEmail(rs.getString("email"));

g.setMobile(rs.getString("mobile"));

g.setCreate_date(rs.getDate("create_date"));

g.setCreate_user(rs.getString("create_user"));

g.setUpdate_date(rs.getDate("update_date"));

g.setUpdate_user(rs.getString("update_user"));

g.setIsdel(rs.getInt("isdel"));

list.add(g); }

} catch (SQLException e) {

e.printStackTrace();

}

return list;

}


查看完整描述

1 回答

已采纳
?
胖胖的火腿肠

不是因为是变量需要加单引号,而是因为是字符串类型的值需要加单引号。原因是这个值是用来拼接sql语句的。

如果不加:

map.put("user_name","张三")
insert into XXX(XX) values(张三);--错误语句

如果加了:

map.put("user_name","'张三'")
insert into XXX(XX) values('张三');--

查看完整回答
反对 回复 2018-02-13

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信