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);
    }
复制代码

运行结果

posted @   baimingze  阅读(132)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示