выберите подзапрос в запросе вставки для PreparedStatement - PullRequest
0 голосов
/ 28 января 2019

Я хочу использовать подзапрос SELECT в запросе INSERT как PreparedStatement ... Я пытаюсь заполнить 2 столбца пользовательским значением, а третий - подзапросом ...

query = "insert into invoiceOrders (productCode,quantity,amount) values (?,?,select price from priceTable where proCode=pCode)";
PreparedStatement stmt = conn.prepareStatement(query);
stmt.setString(0,"productCode");
stmt.setString(1,"qty");
/*3rd column will be filled be subquery*/
n = stmt.executeUpdate();

1 Ответ

0 голосов
/ 28 января 2019

Подзапрос:

select price from priceTable where proCode=pCode

должен быть заключен в скобки и убедитесь, что возвращает только 1 строку .И что такое параметр pCode?Я думаю, что вы должны заменить его на ? и передать позже его значение setString().Также 1-й аргумент метода setString() основан на 1.Так что измени на это:

query = "insert into invoiceOrders (productCode,quantity,amount) values (?,?,(select price from priceTable where proCode=?))";
PreparedStatement stmt = conn.prepareStatement(query);
stmt.setString(1,"productCode");
stmt.setString(2,"qty");
stmt.setString(3,pCode);  // or stmt.setInt(3,pCode);
n = stmt.executeUpdate(); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...