java连接到sql server2008数据库添加数据显示索引超出范围
作者&投稿:禄盼 (若有异议请与网页底部的电邮联系)
~
不是1 ,是0吧 ps.setString(1,"name");
你这段代码错误较多,主要是对数据库操作的
你的目的是想往一张表中插入数据,使用预处理SQL,即PrepareStatement
1. SQL语句错误, 插入表
String sql = "INSERT INTO 表名(字段1) values(?)";
PreparedStatement ps = con.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
ps.setString(1,"name");
2. 错误原因分析
使用PrepareStatement,结合?占位符号,有几个?符号
ps.setString(1,"name"); // 1 表示第一个?, 后面的“name”表示?对应的值
如果有一张表Student,字段有4个字段: id [int]、name [varchar(50)]、age [int]、email [varchar(50)]
String sql = "INSERT INTO Student(id, name, age, email ) values(?, ?, ?, ?)";
PreparedStatement ps = con.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
ps.setString(1,1); // 对应第1个?,即SQL语句中对应的列 id
ps.setString(2,"张三"); // 对应第2个?,即SQL语句中对应的列 name
ps.setString(3,20); // 对应第3个?,即SQL语句中对应的列 age
ps.setString(4,"test@aaa.com"); // 对应第4个?,即SQL语句中对应的列email
因为索引,即?的顺序号是从1开始的,如使用0 或者 数量不匹配,就会出现
com.microsoft.sqlserver.jdbc.SQLServerException: 索引 1 超出范围。异常
如果你增加。如
ps.setString(5,"test@aaa.com"); // 没有5个?,就会出错
希望回答对你有帮助,希望及时采纳
不是1 ,是0吧 ps.setString(1,"name");