2012-05-31 2 views
0

я запускаю следующий код Java:Пустой ResultSet из PreparedStatement

String qry = "SELECT QUOTE(?) AS cleaned"; 
PreparedStatement getQuote = MySQLSingleton.getInstance().conn.prepareStatement(qry); 
getQuote.setString(1, clean_string); 
ResultSet resultSet = getQuote.executeQuery(); 
System.out.println("FIRST: " + resultSet.first()); 
System.out.println("GET STRING: " + resultSet.getString(1)); 

Выход этого:

FIRST: true 
GET STRING: null 

Ни resultSet.getString(1);, ни resultSet.getString("cleaned"); вернуть ничего, кроме null.

Редактировать: Выполнение инструкции непосредственно в MySQL работает без проблем.

+0

Я должен добавить: Другие запросы отлично работают с тем же соединением. – Thomas

+1

Пробовали ли вы вызов resultSet.next(), а затем вызов resultSet.getString ("cleaned")? – ChadNC

+0

.first() перемещает указатель на первую строку (и должен возвращать false, если нет первой строки). Я попробовал .next() с тем же результатом. – Thomas

ответ

1
String qry = "SELECT QUOTE(?) AS cleaned"; 
PreparedStatement getQuote = MySQLSingleton.getInstance().conn.prepareStatement(qry); 
getQuote.setString(1, clean_string); 
ResultSet resultSet = getQuote.executeQuery(); 
resultSet.first(); 
System.out.println(resultSet.getFetchSize()); 

В вашем java-коде я считаю, что это правильно.

EDIT:

Вы должны знать, что GetFetchSize() не возвращает количество записей в ResultSet. GetFetchSize() возвращает количество записей, которые извлекаются в базу данных за раз. По умолчанию размер выборки равен 10. Так что выборка возвращает 0, потому что вы не работаете с таблицами базы данных.

+0

Да, парень, я вижу это сейчас, но теперь мы обсуждаем JDBC и Java. – Sajmon

+0

В этом нет предложения FROM, потому что оператор не относится к какой-либо таблице.Он должен просто вернуть цитируемый текст - – Thomas

+0

@Thomas я отредактировал мой пост, может теперь все ясно. – Sajmon

1

Ваш код работает очень хорошо для меня.

String qry = "SELECT QUOTE(?) AS cleaned"; 
PreparedStatement getQuote = con.prepareStatement(qry); 
getQuote.setString(1, "sdafsdaf"); 
ResultSet resultSet = getQuote.executeQuery(); 
System.out.println("FIRST: " + resultSet.first()); 
System.out.println("GET STRING: " + resultSet.getString(1)); 

Выход:

ПЕРВЫЙ: истинный

GET STRING: 'sdafsdaf'

Единственное изменение в моей версии переменная clean_string. Можете ли вы убедиться, что значение clean_string действительно (не-null).

+0

@Thomas Попробовал ли вы распечатать значение «clean_string» –

+0

Он тоже работал со мной со своей Строкой, но я попробовал это, т. Е. С этой Строкой, которая не работает: 'getQuote.setString (1," (они было около 18 часов)); ' – Thomas

+0

Он работал для меня даже с надстрочной струной. Выход: FIRST: true GET STRING: '(у них было около 18 часов) « –

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