2013-12-12 51 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"); 

} 

迭代对象。