Я хочу выбрать несколько строк из моей базы данных на основе значений, хранящихся в моих переменных (массив supp_rec
). Я использовал советы по аналогичному предыдущему сообщению/вопросу. Однако у меня все еще есть сообщения об ошибках. Фрагмент кода ниже:Использование переменных в where в выражении предложения SQL в JAVA
waiting_time = dbMngr.runQuery("SELECT " + "ExpectedWaitingTime" + " FROM Student" + "where deptID = '" + supp_rec[1] + "' and weight = '" + supp_rec[2] + "'");
prob = PoisonModel(Phase3GUI.existence_time - Long.parseLong(waiting_time[0]),2,Phase3GUI.existence_time);
if (prob > 0.5)
{
dbMngr.execUpdate("DELETE " + " FROM Student" + "where deptID NOT IN" + supp_rec[1] + " and weight NOT IN" + supp_rec[2]);
}+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
сообщения об ошибке ниже:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'deptID NOT IN1 and weight NOT IN8' at line 1 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= '1' and weight = '8'' at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
Пожалуйста, я буду признателен за любую помощь в том, чтобы решить эти ошибки. Спасибо.
Использование заполнителей. Обновите код до этого * первым *, а затем повторите запрос. В любом случае, если вы посмотрите на фактический текст SQL *, вы сразу увидите несколько синтаксических проблем. – user2864740
Это очень грязный способ делать что-то. Вместо «SELECT» + переменная «остальная инструкция»; попробуйте String.format («SELECT% s rest of statement;», variable); – 735Tesla
@ 735Tesla Но использование 'String.format' для произвольных значений - это [плохой способ] (http://bobby-tables.com/) для обработки общей задачи здесь. – user2864740