Правильный синтаксис для помещения не жестко закодированных значений (переменных) в oracle sql оператор выбора в java программе - PullRequest
0 голосов
/ 05 мая 2020

Я получил следующую ошибку с приведенным ниже кодом. java. sql .SQLSyntaxErrorException: ORA-00904: «ROLLNO»: недопустимый идентификатор . Я также пробовал roll_no = 'rollNo' в операторе select, но не работал. Я хотел бы знать правильный синтаксис в предложении where. roll_no - это столбец в учениках типа данных int. rollNo - другое значение типа int, переданное в метод.

public boolean authenticate(int rollNo,String password) {
  String sql = "SELECT password FROM students where roll_no=rollNo"; //this statement giving error
  ResultSet rs=stmt.executeQuery(sql);
}

Ответы [ 2 ]

3 голосов
/ 05 мая 2020

Используйте PreparedStatement , чтобы упростить задачу, а также избежать внедрения SQL.

public boolean authenticate(int rollNo,String password) {
    String sql = "SELECT password FROM students where roll_no=?";
    PreparedStatement pstmt = conn.prepareStatement(sql);// Where conn is Connection object
    pstmt.setInt(1, rollNo);
    ResultSet rs = pstmt.executeQuery(sql);
    //...
}
0 голосов
/ 05 мая 2020

Чтобы избежать этого, необходимо объединить переменную:

public boolean authenticate(int rollNo,String password) {
  String sql = "SELECT password FROM students where roll_no=" + rollNo;
  ResultSet rs=stmt.executeQuery(sql);
}

Но лучше использовать PreparedStatement, база данных сможет кэшировать план выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...