2013-04-06 107 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()); 
}