java.lang.ArrayIndexOutOfBoundsException:2

use*_*994 -1 java

我正在尝试将java连接到sql.虽然我是javam的新手但我似乎无法找出原因.

java.lang.ArrayIndexOutOfBoundsException: 2 
Run Code Online (Sandbox Code Playgroud)

你能帮帮我,让我知道如何解决这个问题吗?

try{
       Connection con = dbConnection();

       String lname = this.last.getText();
       String fname = this.first.getText();
       String mname = this.mid.getText();
       String ad = this.add.getText();
       String bd = this.bday.getText();
       String ag = this.edad.getText();
       String nom = this.no.getText();
       String per = this.person.getText();

       String query = "INSERT INTO Personal Category    (Lastname,Firstname,Middle,Address,Birthday,Age,No,Person) VALUES (?,?)"; //to insert to database

       PreparedStatement pre;

       pre = con.prepareStatement(query);


       pre.setString(1, lname);
       pre.setString(2, fname);
       pre.setString(3, mname);
       pre.setString(4, ad);
       pre.setString(5, bd);
       pre.setString(6, ag);
       pre.setString(7, nom);
       pre.setString(8, per);


       pre.execute();//execute

       con.close();


    }catch (Exception e){

        System.out.println(e);

    }

}
Run Code Online (Sandbox Code Playgroud)

Den*_*ret 5

你不能设置比你有'?'更准备的语句属性.在您的查询中.

"ArrayIndexOutOfBoundsException:2"表示它在第三个setString失败(内部数组从零开始为所有java数组),这是正常的,因为你只有两个'?' 在查询中.

编辑:

由于表名中的空格,您可能会出错.试试吧

INSERT INTO [Personal Category]    (Lastname, ...
Run Code Online (Sandbox Code Playgroud)