2013-04-06 126 views
0

我的Java插件出现问题 - 当没有找到结果时说它结果集是空的。有人能告诉我如何检测结果集是否为空?空的结果集非法操作 - 如何检查它是否为空?

String url = "jdbc:mysql://" + host + ":" + port + "/" + database + ""; 

Connection conn = DriverManager.getConnection(url, username, password); 
Statement stmt = conn.createStatement(); 

ResultSet rs; 
String p = pp.getName(); 
rs = stmt.executeQuery("SELECT * FROM " + table + " WHERE username='" 
     + p + "' AND recieved=0 ORDER BY id DESC"); 
rs = stmt.getResultSet(); 
+0

有什么确切的问题?你如何使用'ResultSet'? – 2013-04-06 12:54:26

+0

请参阅:http://sscce.org/并将您的文章更新为更易于理解的问题。 – xQuare 2013-04-06 12:57:18

+0

那是我的代码: String url =“jdbc:mysql://”+ host +“:”+ port +“/”+ database +“”; Connection conn = DriverManager.getConnection(url,username,password); Statement stmt = conn.createStatement(); ResultSet rs; String p = pp.getName(); rs = stmt.executeQuery(“SELECT * FROM”+ table +“WHERE username ='”+ p +“'AND recieved = 0 ORDER BY id DESC”); – 2013-04-06 12:58:24

回答

2

的标准方法是尝试使用next()方法来获得下一行,并检查是否返回false(意思是没有下一行,所以它是空的)。就像这样:

ResultSet rs; 
// run query on database 
if (!rs.next()) { 
    // no row(s) found from database 
} else { 
    // row(s) found from database OK 
} 

它可以方便地编写一个do...while循环:

if (!rs.next()) { 
    // handle no rows found 
} else { 
    // process all rows 
    do { 
     // process row 
    } while (rs.next()); 
}