我想用Java來做SQL,這是我第一次。我試圖選擇一個表並將其放入ResultSet中,但ResultSet似乎是空的。 MySQL客戶端上的相同查詢顯示結果,這讓我不知道我的代碼有什麼問題。它可以是查詢完成的方式,也可以是我試圖從結果集中獲取數據的方式。Java SQL查詢問題,ResultSet不包含任何東西
在命令行的MySQL客戶端查詢...
mysql> SELECT * FROM accounts.sites;
+----------+-----------------------+--------------------------+--------------+----------------+
| username | domain | directory | fpm-template | nginx-template |
+----------+-----------------------+--------------------------+--------------+----------------+
| cyrus | cyrustheg.org | /var/www/sites/cyrustheg | standard | drupal |
| cyrus | tornews.org | /var/www/sites/tornews | standard | standard |
| cyrus | oletf.org | /var/www/sites/oletf | standard | standard |
| taf | theabsolutefinest.org | /var/www/sites/taf | standard | wordpress |
| taf | bitsplit.org | /var/www/sites/bitsplit | bitsplit | bitsplit |
+----------+-----------------------+--------------------------+--------------+----------------+
5 rows in set (0.00 sec)
我使用這個代碼來構建與該查詢結果集...
private void read() throws Exception {
try {
Class.forName("com.mysql.jdbc.Driver");
String dburl = "jdbc:mysql://" + dbHost + "/" + dbName +
"?user=" + dbUser + "&password=" + dbPass;
connect = DriverManager.getConnection(dburl);
resultSet = statement.executeQuery("SELECT * from accounts.sites");
} catch (Exception e) {
throw e;
}
}
通過ResultSet此代碼迭代爲每個用戶尋找每個域名。我知道問題是在前代碼或這個或前代碼中,因爲我已經在while循環中添加了一條print語句,並且它永遠不會被調用。這就是爲什麼我總結resultSet是空的。
public HashSet<String> listSites(String user)
throws Exception, ExcSiteNosites {
HashSet<String> list = new HashSet<String>();
boolean exists = false;
try {
read();
while (resultSet.next()) {
if (resultSet.getString("username").equals(user)) {
exists = true;
list.add(resultSet.getString("domain"));
}
}
if (!exists) {
throw new ExcSiteNosites(user);
}
} catch (Exception e) {
throw e;
} finally {
resultSet.close();
statement.close();
connect.close();
}
return list;
}
全班:http://pastebin.com/0DSbFey7 該類的單元測試:http://pastebin.com/9UYLEeMB
我發現運行單元測試,這讓下面的輸出的bug ......
Listing cyrus's sites...
Listing taf's sites...
java.lang.NullPointerException
at database.Sites.listSites(Sites.java:96)
at test.dbSites.listall(dbSites.java:28)
at test.dbSites.main(dbSites.java:51)
java.lang.NullPointerException
at database.Sites.listSites(Sites.java:96)
at test.dbSites.listall(dbSites.java:28)
at test.dbSites.main(dbSites.java:53)
的NullPointerException我認爲可能是一個無關的問題。我在一段時間內沒有做過任何Java,而且我也沒有完成任何工作。雖然我想幫忙的問題(除非有關)只是ResultSet看起來是空的。
'statement'總是空。參見[例如這個問題(HTTP:// stackoverflow.com/q/4682871/180100)示例代碼 – 2014-02-26 06:35:56
初始化您的**語句** – ItachiUchiha