2012-03-12 3 views
1

Я начал использовать подготовленный оператор для своих обновлений sql, но, похоже, у меня появляется ошибка при обновлении. Логика кажется звуковой, но я получаю сообщение об ошибке, когда он входит в сегмент обновления. Я могу удалить или вставить штраф. Anywho ...Проблема с обновленной версией выписки

Connection con = getDBConnection(); 
PreparedStatement pstmt = null; 

String query = "update table set int = ?, String= ? where int= ? and date= ?"; 
pstmt = con.prepareStatement(query); 
pstmt.setInt(1, var); 
pstmt.setDate(2, sqlDate); 
pstmt.setInt(3, intVar); 
pstmt.setString(4, stringVar); 
pstmt.executeUpdate(); 

Я делаю что-то неправильно здесь? Я выполнил все возможные меры по устранению неполадок, и все кажется прекрасным, за исключением этого, потенциально.

Error = "A non-numeric character was found where a numeric was expected" 

ответ

2

Вы получили вашу строку и дату навыворот - вы звоните setDate(2, ...), когда второй параметр в контексте «? String =» и setString(4, ...), когда четвертый параметр находится в контексте «date =?».

Правда ошибка, вы получаете несколько странным, но это все, что я могу видеть ...

+0

так, в «pstmt.setWhatever» это значение параметра Я (например, 1,2,3 , 4) в зависимости от оператора запроса или расположения столбца базы данных? Уточнение: база данных имеет 4 столбца, abcd Ведомость установлена ​​в переменную ac, где bd , то операторы набора a = 1, c = 2, b = 3 и d = 4 , где обычно при настройке информации в базе данных это было бы a = 1 b = 2 c = 3 d = 4 ... Если это имеет смысл. – cphilpot

+0

@cphilpot: он соотносится с SQL - указатель, который вы указываете как первый аргумент 'setDate' и т. Д., Является позицией * в вашем SQL *. Порядок столбцов базы данных здесь не имеет значения. (Было бы уместно, если бы вы только что выполнили «INSERT INTO X VALUES (?,?,?,?)», Но лично я думаю, что это плохая идея.) –

+0

Возможно, я смутился. Потому что у меня есть оператор insert, который коррелирует с номерами столбцов. собираюсь попробовать ваше предложение и посмотреть, исправляет ли он это. Просто начал использовать подготовленные заявления сегодня (учил неправильно). – cphilpot

Смежные вопросы