PreparedStatement的空ResultSet

时间:2012-05-31 15:45:24

标签: java mysql sql jdbc

我运行以下Java代码:

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中运行语句没有问题。

2 个答案:

答案 0 :(得分: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代码中,我认为是对的。

修改

您应该知道GetFetchSize()不会返回ResultSet中的记录数。GetFetchSize()会返回数据库一次获取到您的应用程序的记录数。默认情况下,获取大小为10.因此,fetch返回0,因为您不使用数据库表。

答案 1 :(得分: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));

输出:

  

FIRST:true

     

GET STRING:' sdafsdaf'

我的版本中唯一的变化是变量 clean_string 。您能否确保 clean_string 的值有效(非空)。