gpt4 book ai didi

java - 创建一个 Student 将其传递给 SQL 对象并在线程 "AWT-EventQueue-0"lang.ArrayIndexOutOfBoundsException : 4 中获取异常

转载 作者:行者123 更新时间:2023-12-02 12:21:28 25 4
gpt4 key购买 nike

大家好,我的 Java 代码遇到了问题。我是 Java 的新手,而且我喜欢 Java。截至目前,我正在使用 netbeans 在 java 中开发桌面应用程序,但遇到了运行时错误。谁能帮我解决这个代码。问题似乎是什么。

Exception in thread "AWT-EventQueue-0" lang.ArrayIndexOutOfBoundsException: 4

            Student student = new Student();
student.setFirstName("JOHN");
student.setlastName("DOE");
student.setAge(31);
student.setGender("Male");
student.setEmailAddress("xyz@xc.com");
student.setStduent_Id(314);
student.setLevel("Grade 5");

等等。假设学生对象具有正确的值,我已经使用完整的条目测试了学生对象,但仍然遇到问题。我的怀疑是在 PreParedStatement 中,任何人都可以指出我的代码所具有的确切信息。 Tnx 和问候

            fname = student.getFirst_name();
student.getLast_name();
age = student.getAge();
student.getGender();
email_address = student.getEmail_add();
student_id= student.getStudent_id();
level= student.getLevel();
room = student.getRoom();
date_birth = student.getDate_birth();
home_phone_number = student.getHome_phone();
mobile_number = student.getMobile_phone();
street = student.getStreet();
city = student.getCity();
state_province = student.getState_province();
zip_postal_codes = student.getZip_postal();
notes = student.getNotes();


String SQL = "UPDATE tbl_students SET first_name ='?', last_name = '?', age = 22, gender = '?', email_address='?',student_id = ?, level = '?', room = '?', date_of_birth='?', home_phone_number= ?, mobile_number = ?, street='?', city='?', state_province ='?', zip_postal_code=?, notes = '?' where student_id =" + student_id;



String fname = student.getFirst_name();
String lname = student.getLast_name();
int age = student.getAge();
String gender = student.getGender();
String email_address = student.getEmail_add();
int student_id= student.getStudent_id();
String level= student.getLevel();
String room = student.getRoom();

String date_birth = student.getDate_birth();
int home_phone_number = student.getHome_phone();

int mobile_number = student.getMobile_phone();
String street = student.getStreet();
String city = student.getCity();
String state_province = student.getState_province();
int zip_postal_codes = student.getZip_postal();
String notes = student.getNotes();

DBMS.CreateConn();

Connection conn;
conn =DBMS.CreateConn();

PreparedStatement pst = conn.prepareStatement(SQL);

pst.setString(1, fname);
pst.setString(2, lname);
pst.setInt(3, age);
pst.setString(4, gender);
pst.setString(5, email_address);
pst.setInt(6, student_id);
pst.setString(7,level);
pst.setString(8, room);
pst.setString(9, date_birth);
pst.setInt(10, home_phone_number);
pst.setInt(11, mobile_number);
pst.setString(12, street);
pst.setString(13, city);
pst.setString(14, state_province);
pst.setInt(15, zip_postal_codes);
pst.setString(16, notes);


int result = pst.executeUpdate();

最佳答案

您必须删除查询中?周围的所有',否则它们不会被算作参数,而是问号的实际字符串。

String SQL = "UPDATE tbl_students SET first_name =?, last_name = ?, age = 22, gender = ?, email_address=?,student_id = ?, level = ?, room = ?, date_of_birth=?, home_phone_number= ?, mobile_number = ?, street=?, city=?, state_province =?, zip_postal_code=?, notes = ? where student_id =" + student_id;

发生错误的原因是您当前正好有 4 个未加引号的问号,这意味着四个参数,这意味着对设置参数 0 到 3 的调用成功,但在索引 4 处设置参数超出范围。

顺便说一句,为什么您不为 where 条件值使用参数?

关于java - 创建一个 Student 将其传递给 SQL 对象并在线程 "AWT-EventQueue-0"lang.ArrayIndexOutOfBoundsException : 4 中获取异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45753142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com