(一)ResultSet(结果集对象)基本使用
其实结果集对象读取数据的过程就像游标一样,一行一行地读取
方法:
1、 next()
:游标向下移动一行;
2、 getXxx()
:获取数据;
注意:
Xxx代表数据类型 如:int getInt()
一次只能获取某一行某一列的一个数据
那么我们怎么才能精确地获取我们想要的数据呢?下面提供两种重载方法
参数为int的:int代表列的编号,从1开始算起,如getString(1)
参数为String的:String代表列的名称,如getDouble("balance")
(二)代码演示
首先我们加多一个全局对象
使用executeQuery去执行sql语句
用游标去获取数据
完整代码:
public class JDBCDemo06 {
public static void main(String[] args) {
Statement stmt = null;
Connection conn = null;
ResultSet rs = null;
//1. 注册驱动
try {
Class.forName("com.mysql.cj.jdbc.Driver");
//2. 定义sql
String sql = "select * from account";
//3. 获取Connection对象
conn = DriverManager.getConnection("jdbc:mysql:///test03", "root", "root");
//4. 获取执行sql的对象 Statement
stmt = conn.createStatement();
//5. 执行sql
rs = stmt.executeQuery(sql);
//6. 处理结果
//6.1 让游标向下移动一行
rs.next();
//6.2 获取数据
int id = rs.getInt(1);
String name = rs.getString("name");
double balance = rs.getDouble(3);
System.out.println(id + "---" + name + "---" + balance);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
// stmt.close();
// 避免空指针异常
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
运行效果:
(三)ResultSet(结果集对象)正确的使用
使用步骤:
1、 游标向下移动一行;
2、 判断是否有数据:;
boolean next()
:游标向下移动一行,判断当前行是否为最后一行末尾(是否有数据),如果是则返回false,如果不是则返回true
3、 获取数据;
最终代码:
//6. 处理结果
if (rs.next()) {
int id = rs.getInt(1);
String name = rs.getString("name");
double balance = rs.getDouble(3);
System.out.println(id + "---" + name + "---" + balance);
}
我们可以用while循环去把所以的数据都遍历出来
while (rs.next()) {
int id = rs.getInt(1);
String name = rs.getString("name");
double balance = rs.getDouble(3);
System.out.println(id + "---" + name + "---" + balance);
}