JDBC-ResultSet基本使用和JDBC工具类
ResultSet基本使用
ResultSet:结果集对象 封装查询结果
- next():游标向下移动一行 判断当前行是否是最后一行末尾(是否有数据) 如果是 则返回false 如果不是则放回true
- getxxx(参数):获取数据
- xxx:代表数据类型 如:int getInt(),String getString()
- 参数:
- int:代表列的编号 从1开始 如:getString(1)
- String:代表列名称 如:getDouble("balance")
代码:
public static void main(String[] args) { Connection conn = null; Statement stmt = null; ResultSet res=null; try { //1.注册驱动 Class.forName("com.mysql.cj.jdbc.Driver"); //定义SQL语句 String sql = "SELECT * FROM account"; //获取Connection对象 conn = DriverManager.getConnection("jdbc:mysql:///videopractice", "root", "root"); //获取执行SQL的对象 statement stmt = conn.createStatement(); //执行sql res = stmt.executeQuery(sql);//影响的行数 //处理结果 //让游标向下移动一行 res.next(); //获取数据 int id = res.getInt(1); String name = res.getString("name"); double balance = res.getDouble(3); System.out.println(id+"---"+name+"---"+balance); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException throwables) { throwables.printStackTrace(); } finally { if (stmt != null) { try { stmt.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } if (res != null) { try { res.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } } }
运行结果
注意:
1.游标向下移动一行
2.判断是否有数据
3.获取数据
遍历结果集
代码
public static void main(String[] args) { Connection conn = null; Statement stmt = null; ResultSet res = null; try { //1.注册驱动 Class.forName("com.mysql.cj.jdbc.Driver"); //定义SQL语句 String sql = "SELECT * FROM account"; //获取Connection对象 conn = DriverManager.getConnection("jdbc:mysql:///videopractice", "root", "root"); //获取执行SQL的对象 statement stmt = conn.createStatement(); //执行sql res = stmt.executeQuery(sql);//影响的行数 //处理结果 //让游标向下移动一行 while (res.next()) { //获取数据 int id = res.getInt(1); String name = res.getString("name"); double balance = res.getDouble(3); System.out.println(id + "---" + name + "---" + balance); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException throwables) { throwables.printStackTrace(); } finally { if (stmt != null) { try { stmt.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } if (res != null) { try { res.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } } }
运行结果
测试
JDBC工具类
目的:简化书写
分析:
1.注册驱动也抽取
2.抽取一个方法获取连接对象
需求:不想传递参数(麻烦),还得保证工具类的通用性
解决:配置文件
jdbc.properties
url=
user=
password=
3.抽取一个方法释放资源
配置文件
url=jdbc:mysql:///videopractice
user=root
password=root
driver=com.mysql.cj.jdbc.Driver
工具类:
private static String url; private static String user; private static String password; private static String driver; /** * 文件的读取 只需要读取一次即可拿到这些值 使用静态代码块 */ static { //读取资源文件 获取值 try { //1.创建Properties集合类 Properties pro = new Properties(); //2.加载文件 pro.load(new FileReader("src\\main\\resources\\jdbc.properties")); //3.获取数据 赋值 url = pro.getProperty("url"); user = pro.getProperty("user"); password = pro.getProperty("password"); driver = pro.getProperty("driver"); //4.注册驱动 try { Class.forName(driver); } catch (ClassNotFoundException e) { e.printStackTrace(); } } catch (IOException e) { e.printStackTrace(); } } /** * 获取连接 * * @return 连接对象 */ public static Connection getConnection(String url, String user, String password) throws SQLException { return DriverManager.getConnection(url, user, password); } /** * 释放资源 * * @param stmt * @param conn */ public static void close(Statement stmt, Connection conn) { if (stmt != null) { try { stmt.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } }
演示工具类:
public static void main(String[] args) { Connection conn = null; Statement stmt = null; ResultSet res = null; try { /*//1.注册驱动 Class.forName("com.mysql.cj.jdbc.Driver"); //获取Connection对象 conn = DriverManager.getConnection("jdbc:mysql:///videopractice", "root", "root");*/ conn = JDBCUtil.getConnection(); //定义SQL语句 String sql = "SELECT * FROM account"; //获取执行SQL的对象 statement stmt = conn.createStatement(); //执行sql res = stmt.executeQuery(sql);//影响的行数 //处理结果 //让游标向下移动一行 while (res.next()) { //获取数据 int id = res.getInt(1); String name = res.getString("name"); double balance = res.getDouble(3); System.out.println(id + "---" + name + "---" + balance); } } catch (SQLException throwables) { throwables.printStackTrace(); } /*finally { if (stmt != null) { try { stmt.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } if (res != null) { try { res.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } }*/ JDBCUtil.close(stmt,conn); }
运行结果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本