• 【JDBC】------ResultSet(结果集)和常见异常


    分享第二十条励志语句

    宁可自信,也不要盲目悲观。因为自信是一种力量,即使你的自信有些盲目,也无关大局,你可以在实践中调整心态,找到自己的恰当的位置。如果盲目自卑,你就必然失去一切。

     

     

    目录

    分享第二十条励志语句

    1 接收结果集

    2 遍历ResultSet结果集中的数据

    2.1 常用遍历方法

    3 综合案例

    3.1 根据列的编号获取数据

    3.2 根据列的名称获取数据

    二、JDBC常见异常


     

    JDBC中执行DQL查询语句后,使用ResultSet存放查询到的结果集数据。

    1 接收结果集

    ResultSet resultSet = statement.executeQuery(String sql);

    //编写SQL语句
    String sql = "SELECT * FROM stu;";
    //执行SQL语句
    ResultSet  resultSet=statement.executeQuery(sql);

    2 遍历ResultSet结果集中的数据

    ResultSet以表(table)结构进行临时结果的存储,需要通过JDBC API将其中的数据依次获取。

    数据行指针:初始位置在第一行数据前,每调用一次boolean next()方法ResultSet的指针向下移动一行,结果为true,表示当前行有数据。

    • resultSet.getXxx(int columnIndex):根据列的编号顺序获取表中字段的数据,编号从1开始,Xxx表示字段类型。

    • resultSet.getXxx(String columnLabel):根据列的名称获取表中字段的数据。

    //5、对返回的结果进行处理,需要将集合中的数据一个一个的遍历出来
    //next()判断集合中是否存在数据,如果存在数据返回true,如果不存在元素返回false
    while(resultSet.next()){
        //取出元素
        String sid =resultSet.getString(1);
        String sname =resultSet.getString(2);
        int age =resultSet.getInt(3);
        String gender = resultSet.getString(4);
        System.out.println(sid+"-"+sname+"-"+age+"-"+gender);
    }

     

     

    2.1 常用遍历方法

    • int getInt(int columnIndex) throws SQLException //获得当前行第N列的int值

    • int getInt(String columnLabel) throws SQLException //获得当前行名为cloumnLabel列的int值

    • int getDouble(int columnIndex) throws SQLException //获得当前行第N列的double值

    • int getDouble(String columnLabel) throws SQLException //获得当前行名为cloumnLabel列的double值

    • int getString(int columnIndex) throws SQLException //获得当前行第N列的String值

    • int getString(String columnLabel) throws SQLException //获得当前行名为cloumnLabel列的String值

    3 综合案例

    查询stu表中的所有数据并遍历显示

    3.1 根据列的编号获取数据

     

    1. package cn.bdqn.demo01;
    2. import java.sql.Connection;
    3. import java.sql.DriverManager;
    4. import java.sql.ResultSet;
    5. import java.sql.SQLException;
    6. import java.sql.Statement;
    7. public class SelectJDBCByIndex {
    8. public static void main(String[] args) {
    9. try {
    10. // 1、注册驱动
    11. Class.forName("com.mysql.jdbc.Driver");
    12. // 2、获取连接对象
    13. String url = "jdbc:mysql://127.0.0.1:3306/java221804";
    14. String user = "root";
    15. String password = "*****";
    16. Connection connection = DriverManager.getConnection(url, user,password);
    17. // 3、获取发送SQL语句的对象
    18. Statement statement = connection.createStatement();
    19. // 编写SQL语句
    20. String sql = "SELECT * FROM stu;";
    21. // 4、执行SQL语句
    22. ResultSet resultSet = statement.executeQuery(sql);
    23. // 5、对返回的结果进行处理,需要将集合中的数据一个一个的遍历出来
    24. // next()判断集合中是否存在数据,如果存在数据返回true,如果不存在元素返回false
    25. while (resultSet.next()) {
    26. // 取出元素
    27. String sid = resultSet.getString(1);
    28. String sname = resultSet.getString(2);
    29. int age = resultSet.getInt(3);
    30. String gender = resultSet.getString(4);
    31. System.out.println(sid + "-" + sname + "-" + age + "-" + gender);
    32. }
    33. // 6、关闭资源:先开后关,后开先关
    34. statement.close();
    35. connection.close();
    36. } catch (ClassNotFoundException e) {
    37. e.printStackTrace();
    38. } catch (SQLException e) {
    39. e.printStackTrace();
    40. }
    41. }
    42. }

    3.2 根据列的名称获取数据

    1. package cn.bdqn.demo01;
    2. import java.sql.Connection;
    3. import java.sql.DriverManager;
    4. import java.sql.ResultSet;
    5. import java.sql.SQLException;
    6. import java.sql.Statement;
    7. public class SelectJDBCByColumnName {
    8. public static void main(String[] args) {
    9. try {
    10. // 1、注册驱动
    11. Class.forName("com.mysql.jdbc.Driver");// 这个地方Driver后面不要写.class
    12. // 2、获取连接对象
    13. String url = "jdbc:mysql://127.0.0.1:3306/java221804";
    14. String user = "root";
    15. String password = "*****";
    16. Connection connection = DriverManager.getConnection(url, user,password);
    17. // 3、获取发送SQL语句的对象
    18. Statement statement = connection.createStatement();
    19. // 编写SQL语句
    20. String sql = "SELECT * FROM stu;";
    21. // 5、执行SQL语句
    22. ResultSet resultSet = statement.executeQuery(sql);
    23. // 6、对返回的结果进行处理,需要将集合中的数据一个一个的遍历出来
    24. // next()判断集合中是否存在数据,如果存在数据返回true,如果不存在元素返回false
    25. while (resultSet.next()) {
    26. // 取出元素
    27. String sid = resultSet.getString("sid");
    28. String sname = resultSet.getString("sname");
    29. int age = resultSet.getInt("age");
    30. String gender = resultSet.getString("gender");
    31. System.out.println(sid + "-" + sname + "-" + age + "-" + gender);
    32. }
    33. // 7、关闭资源:先开后关,后开先关
    34. statement.close();
    35. connection.close();
    36. } catch (ClassNotFoundException e) {
    37. e.printStackTrace();
    38. } catch (SQLException e) {
    39. e.printStackTrace();
    40. }
    41. }
    42. }

    二、JDBC常见异常

    • java.lang.ClassNotFoundException:找不到类(类名书写错误、没有导入jar包)

    • java.sql.SQLException:与SQL语句相关的异常(约束错误、表名列名字段名书写错误),建议:在客户端工具中测试SQL语句正确后再复制到代码中

    • com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:Unknown column原因:列值String类型没有加单引号

    • Duplicate entry '1' for key 'PRIMARY'原因,主键值已经存在或混乱,更改主键值或清空表

    • com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:Unknown column 'password' in原因:可能输入的值类型不对,确定是否插入的元素是对应的值的类型正确

    今天的分享就到此结束了

    创作不易点赞评论互关三连

     

     

     

  • 相关阅读:
    搭建Gogs 代码管理平台
    使用redis实现队列功能
    cola架构:有限状态机(FSM)源码分析
    哔哩哔哩移动端项目:Vue3.2 + TS + Axios入门到实战
    PHP-学习笔记-部署wordpress
    MATLAB中ilu函数用法
    【论文阅读】机器翻译新范式,《A Paradigm Shift in Machine Translation》
    重新认识交叉编译
    力扣 704. 二分查找
    Vue.js核心技术解析与uni-app跨平台实战开发学习笔记 第3章 Vue.js生命周期函数 3.1 创建期间生命周期函数
  • 原文地址:https://blog.csdn.net/swy2560666141/article/details/128180570