С учетом следующего Устава:
String query = "Select * from T_spareParts where SparePartPK IN (? )"
В моем BackBean (JSF 2
) я сначала перебираю все машины в таблице и строю строку из всех выбранных в данный момент машин (выбирая ID каждого автомобиля в качестве первичного ключа), чтобы можно было посмотреть окончательную строку перед передачей в SQL как:
String finalString = " '1','2','3','4'";
А потом:
this.prepareStatement= this.connection.prepareStatement(query);
this.prepareStatement.setString(1,finalString);
this.prepareStatement.executeQuery();
Исключение:
Error converting data type nvarchar to bigint.
Теперь я понимаю, что исключение связано с тем, что SparePartPK
имеет тип bigint
, и мы передаем строку.
Но в SQL Server (2008) я могу сделать:
Select * from T_spareParts where SparePartPK IN ('1','2','3','4')"
, который возвращает результаты, как ожидалось. Почему я получаю исключение и как я могу исправить проблему? (также не стесняйтесь комментировать, если это не лучший подход)
Обновление:
Я также пытался создать finalString
без одинарных кавычек, что вызывает одно и то же исключение:
String finalString = " 1,2,3,4";