问答详情
源自:8-7 商品详细信息显示

8-7章节里面的问题

stmt.setInt(1,id);这句话为什么要加进去,是什么意思

提问者:看世事繁华 2016-09-12 16:55

个回答

  • wshyzx
    2016-11-07 23:31:16
    已采纳

    String sql = "select * from items where id = ?";
    stmt = conn.prepareStatement(sql);
    stmt.setInt(1, id);//数字表示第几个占位符,即sql中的 ?
    rs = stmt.executeQuery();

    很显然这里只有一个 ? 

    把id的值传给传给sql中的第1个 ?

    然后执行sql语句

                    Connection conn=DBUtil.getConnection();
                    //使用占位符?代替参数
    		String sql="insert into imooc_goddess(user_name,sex,age,birthday,email,mobile,"
    				+ "create_user,create_date,update_user,update_date,isdel)"
    				+ "values(?,?,?,?,?,?,?,current_date(),?,current_date(),?)";
    		PreparedStatement ptmt=conn.prepareStatement(sql);//预编译sql语句,并不执行
    		
    		ptmt.setString(1, g.getUser_name());//数字表示第几个占位符,即 ?
    		ptmt.setInt(2, g.getSex());
    		ptmt.setInt(3, g.getAge());
    		ptmt.setDate(4, new Date(g.getBirthday().getTime()));
    		ptmt.setString(5, g.getEmail());
    		ptmt.setString(6, g.getMobile());
    		ptmt.setString(7, g.getCreate_user());
    		ptmt.setString(8, g.getUpdate_user());
    		ptmt.setInt(9, g.getIsdel());
    		ptmt.execute();//该方法被调用时才会执行上面的sql语句

    这里就不止一个 ? 了

    把取得的age值传给sql中的第3个 ?

    等等

    然后执行sql语句

  • 来电
    2016-09-12 17:26:40

    就是将前面sql语句中的一个也就只有一个变量替换为参数id