初学JDBC报错Parameter index out of range (1 > number of parameters, which is 0).

Gtear1121 2019-09-01 05:25:28
package com.section1;

import java.nio.channels.SelectableChannel;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;

import com.mysql.fabric.xmlrpc.base.Member;
import com.mysql.jdbc.Statement;

public class JDBCTester6 {

public static void main(String[] args) throws Exception {
String sql="select * from member where MobilePhone=? and pwd =?";

select("sql","10010","100");


}

private static void select(String sql, String... parameters) throws ClassNotFoundException,SQLException {
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://120.1.1.5:3306/test";
String user="user";
String password ="123456";
Connection conn=DriverManager.getConnection(url, user, password);
PreparedStatement pstmt=conn.prepareStatement(sql);
for(int i =0;i< parameters.length;i++){
pstmt.setString(i+1, parameters[i]);
}

ResultSet resultSet=pstmt.executeQuery();
ResultSetMetaData metadata=resultSet.getMetaData();
int columnCount =metadata.getColumnCount();


while (resultSet.next()){
for(int i=1;i<columnCount;i++){
String value=resultSet.getString(i);
System.out.print(value+" ");
}



}
pstmt.close();
conn.close();
}


}
小白,实在找不到原因
...全文
1113 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Gtear1121 2019-10-05
  • 打赏
  • 举报
回复
终于找到为什么了,脑壳疼
public class JDBCTester6 {

public static void main(String[] args) throws Exception {
String sql="select * from member where MobilePhone=? and pwd =?";

select("sql","10010","100");


}
在方法调用这里,sql不应该加双引号,改成
select(sql,"10010","100");
就可以了

亦夜 2019-09-01
  • 打赏
  • 举报
回复
这种问题一般就是占位符和参数对应不上,仔细检查一下代码吧,希望能帮到你哦
亦夜 2019-09-01
  • 打赏
  • 举报
回复
亦夜 2019-09-01
  • 打赏
  • 举报
回复
占位符?是英文输入法下的吗

81,115

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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