请解释下此方法的含义

hina90 2009-10-14 05:11:11
下面是一个查询SQL语句的执行方法,能否请各位达人解释下啊,特别是for(int i=0;i<params.length;i++){
pstm.setObject(i+1,params[i]);
}
搞不懂什么意思为什么要i+1

public 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();
}
}
}
...全文
108 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ouwarmth 2009-10-15
  • 打赏
  • 举报
回复
params数组是按SQL 的查询条件要传入的参数 !!
残诗 2009-10-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hina90 的回复:]
引用 3 楼 liwenso 的回复:
jdbc的规范里规定一些标志是从1开始的,和普通的java程序规范有一点冲突。
仅仅是概念上的问题,记得不要从0开始而是从一开始


哦,那这个传入的数组params意思是在执行预处理SQL语句里的那个下标?
就是pstm.setString(1,"xiao");
pstm.setInteger(2,20); 中的 1和2??
还是params数组是按SQL 的查询条件要传入的参数
就是"select from user where name = ? and age = ?" 这个SQL语句里的?号....????

[/Quote]
我同意这个观点
hina90 2009-10-14
  • 打赏
  • 举报
回复

请问下这个传入的数组params意思是在执行预处理SQL语句里的那个下标?
就是pstm.setString(1,"xiao");
pstm.setInteger(2,20); 中的 1和2??
还是params数组是按SQL 的查询条件要传入的参数
就是"select from user where name = ? and age = ?" 这个SQL语句里的?号....????
hina90 2009-10-14
  • 打赏
  • 举报
回复
是别人写的啊...我就是在研究呢...呵呵!以后也一定能够写出这样有效的方法的..
weiwitch 2009-10-14
  • 打赏
  • 举报
回复
LZ写的这个方法很好,在每次对数据库插入的时候只要掉用这个方法就ok,代码的重用性
hina90 2009-10-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 liwenso 的回复:]
jdbc的规范里规定一些标志是从1开始的,和普通的java程序规范有一点冲突。
仅仅是概念上的问题,记得不要从0开始而是从一开始
[/Quote]

哦,那这个传入的数组params意思是在执行预处理SQL语句里的那个下标?
就是pstm.setString(1,"xiao");
pstm.setInteger(2,20); 中的 1和2??
还是params数组是按SQL 的查询条件要传入的参数
就是"select from user where name = ? and age = ?" 这个SQL语句里的?号....????
hina90 2009-10-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ouwarmth 的回复:]
楼主你的查询SQL语句的采用的是预处理方法执行,
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语句里的?号....????

[/Quote]
ouwarmth 2009-10-14
  • 打赏
  • 举报
回复
楼主你的查询SQL语句的采用的是预处理方法执行,
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开始的。
liwenso 2009-10-14
  • 打赏
  • 举报
回复
jdbc的规范里规定一些标志是从1开始的,和普通的java程序规范有一点冲突。
仅仅是概念上的问题,记得不要从0开始而是从一开始
laodaizi 2009-10-14
  • 打赏
  • 举报
回复
bu zhi dao
lzh_me 2009-10-14
  • 打赏
  • 举报
回复
不清楚你这边的业务逻辑..
个人认为可能是跟在查询数据库取出结果集时有关...

if (rs.next()) {

count = Integer.parseInt(rs.getString(1));//这里是从1开始的
}

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧