2013-12-12 82 views
0

我正在嘗試訪問數據庫並打印查詢。 我正在嘗試訪問DEVICE表並打印掉DEVICE_ID,但目前爲止我還沒有成功。從數據庫打印查詢

這是我現在的代碼;

public static void main(String[] args) throws FileNotFoundException { 
    try { 
     Class.forName("org.hsqldb.jdbc.JDBCDriver"); 

     Preferences sysRoot = Preferences.systemRoot(); 
     Preferences prefs = sysRoot.node("com/davranetworks/zebu"); 
     url = prefs.get("dburl", "jdbc:hsqldb:E:\\eem\\eemdb"); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    Connection c = getConnection(); 

    try { 
     c.setAutoCommit(true); 
     Statement s = c.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); 
     ResultSet rs = s.executeQuery("SELECT * FROM eem_db.device"); 

     ResultSet deviceId = s.executeQuery("select device_id from eem_db.device"); 
     System.out.println(deviceId); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

public static Connection getConnection() { 
    Connection c = null; 
    try { 
     c = DriverManager.getConnection(url); 
    } catch (SQLException e) { 
     System.out.println("Error initialising connection" + e); 
    } 
    return c; 
} 

返回的值是[email protected]。 我不知道這個值與什麼有關,因爲我期待3個整數值。 任何人都可以幫助我嗎?

+1

你真的可以剛剛搜索'JDBCResultSet'。下面是一個示例:http://www.roseindia.net/tutorial/java/jdbc/jdbcresultset.html –

+0

您正在打印對象實例本身,而不是結果集,它是對象的類型。查找如何迭代結果集。 – EdgeCase

回答

2

你必須遍歷包含在ResultSet和每行的行得到你想要的列:

ResultSet deviceIdRS = s.executeQuery("select device_id from eem_db.device"); 
while(deviceIdRS.next()) { 
    System.out.println(deviceIdRS.getString("device_id")); 
} 

您必須使用ResultSet的getXXX方法與你的列類型相對應,例如,getInt ,getString,getDate ...

+0

歡呼的夥計它完美的工作 – Dan

0

您正在打印ResultSet對象,它不會給你正確的值。 需要迭代循環像下面

while(deviceId.next()) { 
    int integerValue = deviceId.getInt(1); 
    System.out.println("content" + integerValue) 
} 
deviceId.close(); 
s.close(); 
0

ResultSet deviceId實際上是一個對象包含結果行從SQL,所以你只能看到的內存地址,當你把它打印出來。 你需要的東西,如:

while(deviceId.next()){ 
    System.out.print(deviceId.getInt(1));   
} 
0

s.executeQuery("select device_id from eem_db.device");將返回一個結果,你必須找出從結果集的值。 like

int device_id = resultset [「deviceId」];使用結果集

1
while (deviceId.next()) 
{ 
    // Printing results to the console 
     System.out.println("device_id- "+ deviceId.getInt("device_id"); 

} 

迭代對象。