【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 根据列的编号获取数据

package cn.bdqn.demo01;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class SelectJDBCByIndex {

	public static void main(String[] args) {

		try {
			// 1、注册驱动
			Class.forName("com.mysql.jdbc.Driver");
			// 2、获取连接对象
			String url = "jdbc:mysql://127.0.0.1:3306/java221804";
			String user = "root";
			String password = "*****";
			Connection connection = DriverManager.getConnection(url, user,password);
			// 3、获取发送SQL语句的对象
			Statement statement = connection.createStatement();
			// 编写SQL语句
			String sql = "SELECT * FROM stu;";
			// 4、执行SQL语句
			ResultSet resultSet = statement.executeQuery(sql);
			// 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);
			}
			// 6、关闭资源:先开后关,后开先关
			statement.close();
			connection.close();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

3.2 根据列的名称获取数据

package cn.bdqn.demo01;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class SelectJDBCByColumnName {

	public static void main(String[] args) {

		try {
			// 1、注册驱动
			Class.forName("com.mysql.jdbc.Driver");// 这个地方Driver后面不要写.class
			// 2、获取连接对象
			String url = "jdbc:mysql://127.0.0.1:3306/java221804";
			String user = "root";
			String password = "*****";
			Connection connection = DriverManager.getConnection(url, user,password);
			// 3、获取发送SQL语句的对象
			Statement statement = connection.createStatement();
			// 编写SQL语句
			String sql = "SELECT * FROM stu;";
			// 5、执行SQL语句
			ResultSet resultSet = statement.executeQuery(sql);
			// 6、对返回的结果进行处理,需要将集合中的数据一个一个的遍历出来
			// next()判断集合中是否存在数据,如果存在数据返回true,如果不存在元素返回false
			while (resultSet.next()) {
				// 取出元素
				String sid = resultSet.getString("sid");
				String sname = resultSet.getString("sname");
				int age = resultSet.getInt("age");
				String gender = resultSet.getString("gender");
				System.out.println(sid + "-" + sname + "-" + age + "-" + gender);
			}
			// 7、关闭资源:先开后关,后开先关
			statement.close();
			connection.close();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

二、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原因:可能输入的值类型不对,确定是否插入的元素是对应的值的类型正确

今天的分享就到此结束了

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

 

猜你喜欢

转载自blog.csdn.net/swy2560666141/article/details/128180570