Bằng cách gọi executeQuery(sql)
bạn thực sự gọi một phương thức trên Statement
- không có trên PreparedStatement
. Vì vậy, bạn loại bỏ giá trị tham số đã được chỉ định và thực hiện một truy vấn trong đó trình giữ chỗ ?
vẫn chưa được phân tích - vì vậy bạn sẽ gặp lỗi đó.
Thay đổi
ResultSet results = state.executeQuery(sql);
đến
ResultSet results = state.executeQuery();
và bạn sẽ ổn thôi.
(Và nguyên nhân
resultname = state2.executeQuery(sql2);
cần phải được
resultname = state2.executeQuery();
nữa)