1就是sql的第一个参数的意思,
pstm.setint(1,id); 就是把id替代sql的第一个问号
这是 预编译接口 预编译的 意思就是,先把 SQL 语句编译了,再执行
? 号 代表占位符, 有一个?号, 编译的时候就知道这里有一个位置, 需要放一个数据进来
有两个, 就要放两个数据,
1,2 这两个数就是占位符的编号, 从1 开始的,
对占位符的赋值 必须在 ps.executequery(); 之前
public Goods findGoodsById(int id) {
Goods goods = new Goods();
try {
conn = JDBCUtils.getConn();//得到连接数据库对象Connection对象conn
String sql = "select * from goods where id=?";//插入数据的sql语句
pstm =conn.prepareStatement(sql);//得到执行者PreparedStatement 对象
pstm.setInt(1, id);//设置第一个参数值向sql语句中的第一个占位处赋值(就是第一个 ?)pstm.setString(2, u.getUsername());//向sql语句中的第二个占位处赋值(就是第二个 ?)
rs = pstm.executeQuery();//执行sql语句
if (rs.next()) {
goods.setId(rs.getInt("id"));
goods.setName(rs.getString("name"));
goods.setPrice(rs.getFloat("price"));
goods.setNum(rs.getInt("num"));
}
} catch (Exception e) {
e.printStackTrace();
}finally {
JDBCUtils.close(rs, stm, conn);
}
return goods;
}