java连接到sql server2008数据库添加数据显示索引超出范围

作者&投稿:禄盼 (若有异议请与网页底部的电邮联系)
~

你这段代码错误较多,主要是对数据库操作的


你的目的是想往一张表中插入数据,使用预处理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");