У меня есть этот метод для загрузки объектов, однако, когда я запускаю код sql, он дает мне синтаксическую ошибку.Ошибка Java JDBC Ошибка синхронизации
public void loadObjects() {
Statement s = setConnection();
// Add Administrators
try {
ResultSet r = s.executeQuery("SELECT * FROM Administrator;");
while (r.next()) {
Administrator getUser = new Administrator();
getUser.ID = r.getString(2);
ResultSet r2 = s.executeQuery("SELECT * FROM Userx WHERE ID= {" + getUser.ID + "};");
getUser.name = r2.getString(2);
getUser.surname = r2.getString(3);
getUser.PIN = r2.getLong(4);
JBDeveloping.users.administrators.add(getUser);
}
} catch (Exception e) {
System.out.println(e);
}
}
Я попытался вставить фигурные скобки, как указано в других вопросах, но я либо делаю это неправильно или не работает. Этот метод должен иметь возможность загружать всех администраторов, но я считаю, что он вставляет только половину идентификатора. Идентификатор, который он получает, состоит из чисел и символов; пример «26315G»
Ошибка - com.microsoft.sqlserver.jdbc.SQLServerException: неправильный синтаксис около «26315».
Edit -
private java.sql.Connection setConnection(){
java.sql.Connection con = null;
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url = "jdbc:sqlserver://" + host + ";DatabaseName=" + database + ";integratedSecurity=true;";
con = DriverManager.getConnection(url, username, password);
} catch(Exception e) {
System.out.println(e);
}
return con;
}
public void loadObjects() {
java.sql.Connection con = setConnection();
// Add Administrators
try {
PreparedStatement sql = con.prepareStatement("SELECT * FROM Administrator");
ResultSet rs = sql.executeQuery();
while (rs.next()) {
Administrator getUser = new Administrator();
getUser.ID = rs.getString(2);
PreparedStatement sql2 = con.prepareStatement("SELECT * FROM Userx WHERE ID=?");
sql2.setString(1, getUser.ID);
ResultSet r2 = sql2.executeQuery();
getUser.name = r2.getString(2);
getUser.surname = r2.getString(3);
getUser.PIN = r2.getLong(4);
JBDeveloping.users.administrators.add(getUser);
}
} catch (Exception e) {
System.out.println(e);
}
}
Какие еще вопросы? Это не синтаксис JDBC, это синтаксис SQL. –
Почему вы используете фигурные скобки '{}'. Попробуйте выполнить запрос таким образом: '' SELECT * FROM Userx WHERE ID = "+ getUser.ID +"; "' без брекетов. – Omoro
Замените '{}' 'на одиночные кавычки '' ', и все будет хорошо, или вместо этого используйте метод' PreparedStatement' и 'setString()'. –