下面是一个查询SQL语句的执行方法,能否请各位达人解释下啊,特别是for(int i=0;i<params.length;i++){
pstm.setObject(i+1,params[i]);
}
搞不懂什么意思为什么要i+1public void doPstm(String sql,Object[] params){
if(sql!=null&&!sql.equals("")){
System.out.println(sql);
getCon();
try {
pstm=con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
if(params==null){
params=new Object[0];
}
for(int i=0;i<params.length;i++){
pstm.setObject(i+1,params[i]);
}
pstm.execute();
} catch (SQLException e) {
System.out.println("调用DB类中doPstm方法时出错!");
e.printStackTrace();
}
}
}
pstm.setObject(i+1,params[i]);
}
搞不懂什么意思为什么要i+1public void doPstm(String sql,Object[] params){
if(sql!=null&&!sql.equals("")){
System.out.println(sql);
getCon();
try {
pstm=con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
if(params==null){
params=new Object[0];
}
for(int i=0;i<params.length;i++){
pstm.setObject(i+1,params[i]);
}
pstm.execute();
} catch (SQLException e) {
System.out.println("调用DB类中doPstm方法时出错!");
e.printStackTrace();
}
}
}
个人认为可能是跟在查询数据库取出结果集时有关...if (rs.next()) {count = Integer.parseInt(rs.getString(1));//这里是从1开始的
}
仅仅是概念上的问题,记得不要从0开始而是从一开始
for(int i=0;i <params.length;i++){
pstm.setObject(i+1,params[i]);
}
下表变量必须从1开始。
比如我们平时写的预处理SQL语句,
select from user where name = ? and age = ?;
pstm.setString(1,"xiao");
pstm.setInteger(2,20);
都是从1开始的。
哦,那这个传入的数组params意思是在执行预处理SQL语句里的那个下标?
就是pstm.setString(1,"xiao");
pstm.setInteger(2,20); 中的 1和2??
还是params数组是按SQL 的查询条件要传入的参数
就是"select from user where name = ? and age = ?" 这个SQL语句里的?号....????
请问下这个传入的数组params意思是在执行预处理SQL语句里的那个下标?
就是pstm.setString(1,"xiao");
pstm.setInteger(2,20); 中的 1和2??
还是params数组是按SQL 的查询条件要传入的参数
就是"select from user where name = ? and age = ?" 这个SQL语句里的?号....????