我正在尝试访问数据库并打印查询。 我正在尝试访问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;
}
返回的值为org.hsqldb.jdbc.JDBCResultSet@1d3d68df
。
我不知道这个值与什么有关,因为我期待3个整数值。
任何人都可以帮我吗?
答案 0 :(得分: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 ......
答案 1 :(得分:0)
您正在打印ResultSet的对象,它不会为您提供正确的值。 你需要像下面那样迭代循环
while(deviceId.next()) {
int integerValue = deviceId.getInt(1);
System.out.println("content" + integerValue)
}
deviceId.close();
s.close();
答案 2 :(得分:0)
ResultSet deviceId
实际上是一个对象包含sql的结果行,所以你只能在打印出来时看到内存地址。
你需要这样的东西:
while(deviceId.next()){
System.out.print(deviceId.getInt(1));
}
答案 3 :(得分:0)
s.executeQuery("select device_id from eem_db.device");
返回一个resultSet,你必须从结果集中找出值。
喜欢
int device_id = resultset [“deviceId”];
答案 4 :(得分:0)
while (deviceId.next())
{
// Printing results to the console
System.out.println("device_id- "+ deviceId.getInt("device_id");
}
使用结果集迭代对象。