2013-11-29 3 views
0

Я пишу метод, который вызывает хранимую процедуру в базе данных MSSQL. Хранимая процедура имеет 4 входа, все номера. Я использую setString() для ввода параметров для хранимой процедуры.Не найдено подходящего метода для setString

Я не получаю следующую ошибку компилировать

не подходящий метод нашел для setString(int, int)

Это, кажется, хотят setString(int, string) но параметры мне нужно пройти в Интс, не строки.

Есть ли способ передать ints или мне нужно преобразовать int s в string?

public void genRoadMap(int id, int semester, int debug, int units) 
{ 
    CallableStatement c = null; 
    try 
    { 
     c = connection.prepareCall("{call dbo.GenerateRoadMap(?, ?, ?, ?)}"); 
     c.setString(1, id);   
     c.setString(2,semester); 
     c.setString(3,debug); 
     c.setString(4,units); 
     c.execute(); 
    } 
    catch (Exception ex) 
    { 
     ex.printStackTrace(); 
    } 
} 
+0

Если вы пытаетесь передать целые числа, возможно, [ 'SetInt (целое, целое)'] (http://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement. html # setInt (int,% 20int)) было бы более подходящим? Не нужно [заставлять квадратную привязку в круглое отверстие] (http://richardwiseman.files.wordpress.com/2011/08/square-peg-round-hole.jpg). Если это не забавно, конечно. – user2864740

ответ

2

Вы должны преобразовать int S в String, если это то, что ожидает, что сигнатурный метод. Вы можете использовать метод String.valueOf() для достижения этого.

Чтобы решить, что вы сказали в комментариях: если вы пытаетесь иметь процедуру процесса данные в качестве int, нужно передать данные в качестве таковых с помощью соответствующего метода в CallableStatement (в данном примере, setInt()).

+0

будет работать, если хранимая процедура имеет параметры типа int? – user170560

+0

Если вы хотите установить 'int' для proc, используйте' setInt() 'в отличие от' setString() '. Вы должны использовать соответствующий метод для своего типа данных. – asteri

+0

получил, спасибо. – user170560

2
c.setInt(1, 100); // For integers 
c.setString(2, "string"); // For strings 
c.setDate(3, new Date()); // For dates 
Смежные вопросы