java 参数索引超出范围(8 > 参数数量,即 7)
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/17806466/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Parameter index out of range (8 > number of parameters, which is 7)
提问by sujeet325
I have this database table:
我有这个数据库表:
create table users(
id int not null auto_increment,
fn varchar(30),
ln varchar(30),
sex char,
email varchar(60),
country varchar(40),
username varchar(30),
password varchar(100),
primary key(id)
);
When I run this code, I am getting an error: Parameter index out of range (8 > number of parameters, which is 7). I also tried changing setString(1,fn)
but it's not working.
当我运行此代码时,出现错误:参数索引超出范围(8 > 参数数量,即 7)。我也尝试过更改,setString(1,fn)
但它不起作用。
try{
String INSERT="INSERT INTO users (fn,ln,,sex,email,country,username,password) VALUES (?,?,?,?,?,?,?)";
PreparedStatement pst=conn.prepareStatement(INSERT);
System.out.println("Created prepared statement");
pst.setString(2,"fn");
pst.setString(3,"ln");
pst.setString(4,"sex");
pst.setString(5,"email");
pst.setString(6,"country");
pst.setString(7,"username");
pst.setString(8,"password)");
pst.executeUpdate();
}
回答by PermGenError
you have an extra comma in your query and your column count should start from 1.
您的查询中有一个额外的逗号,并且您的列数应从 1 开始。
String INSERT="INSERT INTO users (fn,ln,sex,email,country,username,password) VALUES (?,?,?,?,?,?,?)";
pst.setString(1,"fn");
pst.setString(2,"ln");
pst.setString(3,"sex");
pst.setString(4,"email");
pst.setString(5,"country");
pst.setString(6,"username");
pst.setString(7,"password)");
pst.executeUpdate();
回答by azzurroverde
Parameter number relative to the query
与查询相关的参数编号
pst.setString(1,"fn");
pst.setString(2,"ln");
pst.setString(3,"sex");
pst.setString(4,"email");
pst.setString(5,"country");
pst.setString(6,"username");
pst.setString(7,"password)");
pst.executeUpdate();
回答by ADTC
Corrections:
更正:
String INSERT="INSERT INTO users (fn,ln,sex,email,country,username,password) VALUES (?,?,?,?,?,?,?)";
and
和
short c = 0;
//using a counter variable (short or int) means
//no worries about numbering - just maintain the order below
pst.setString(++c,"fn");
pst.setString(++c,"ln");
pst.setString(++c,"sex");
pst.setString(++c,"email");
pst.setString(++c,"country");
pst.setString(++c,"username");
pst.setString(++c,"password)");
Note: ++c
is pre-increment operator. It adds 1 to the current value of c
(sets c
to this) and uses the new value of c
.
注意:++c
是预增量运算符。它将c
(sets c
to this)的当前值加 1并使用 的新值c
。
回答by mirkobrankovic
You are passing 8 columns and 7 variables, count doesn't match.
您正在传递 8 列和 7 个变量,计数不匹配。
Make sure if this:
请确保:
String INSERT="INSERT INTO users (fn,ln,,sex,email,country,username,password) VALUES (?,?,?,?,?,?,?)";
should be like this:
应该是这样的:
String INSERT="INSERT INTO users (fn,ln,sex,email,country,username,password) VALUES (?,?,?,?,?,?,?)";