详述JDBC查询方法的执行过程(接口的魅力)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_45104211/article/details/99460176

一、本节重点:

1、MySQL数据库

2、接口重写实现关键功能(rowMapper)

二、详述具体流程:

    1、全部代码

   	package wrap;

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

	interface IRowMapper{
		void rowMapper(ResultSet resultSet);
	}

	public class Test2 {
		public static void select(String sql,IRowMapper rowMapper) {
			Connection connection = null;
			Statement statement = null;
			ResultSet resultSet= null;
			try {
				Class.forName("com.mysql.jdbc.Driver");
				connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "root");
				statement = connection.createStatement();
				resultSet= statement.executeQuery(sql);
				rowMapper.rowMapper(resultSet);
			} catch (Exception e) {
				e.printStackTrace();
			}finally {
				if (resultSet!=null) {
					try {
						resultSet.close();
					} catch (SQLException e) {
						e.printStackTrace();
					} 
				}
				
				if (statement!=null) {
					try {
						statement.close();
					} catch (SQLException e) {
						e.printStackTrace();
					} 
				}
				
				if (connection!=null) {
					try {
						connection.close();
					} catch (SQLException e) {
						e.printStackTrace();
					} 
				}
			}
		}
		public static void main(String[] args) {
			class RowMapper implements IRowMapper{
				@Override
				public void rowMapper(ResultSet resultSet) {
					try {
						while(resultSet.next()) {
							String id = resultSet.getString("id");
							String address = resultSet.getString("address");
							System.out.println(id);
							System.out.println(address);
						}
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
			}
			
			String sql = "select * from student";
			IRowMapper rowMapper = new RowMapper();
			select(sql,rowMapper);
		}
	}

    1、重写接口里的方法:具体作用是可以使在数据库中的数据显示在控制台中,这个方法本质上实则是将返回的ResultSet类型的数据进行使用,在本代码中是将其遍历;

    2、先从主函数开始:创建MySQL数据库中的语句

String sql = "select * from student";

    这句话的作用是将MySQLstudent表中的全部的数据罗列出来

    3、创建一个RowMapper对象,与sql一起输入到select方法中:其中可以看出本次RowMapper对象是上转型;

    4、分析方法的执行:

        一、加载驱动:

Class.forName("com.mysql.jdbc.Driver");

        需要进行引包操作,包名为mysql-connector-java-5.1.9.jar,在包中找到com.mysql.jdbc.Drive

        注:此时会自动抛出一个检查时异常  :使用try catch 去除

        二、与MySQL获取连接:

connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "root");

        此时连接自己主机的数据库

        三、创建语句:

statement = connection.createStatement();
resultSet= statement.executeQuery(sql);

        此时将创建语句,然后执行sql中的语句->将数据库中数据返回一个ResultSet的实现类,这个变量可以传到rowMapper方法中进行遍历

        四、遍历:

try {
    while(resultSet.next()) {
	String id = resultSet.getString("id");
	String address = resultSet.getString("address");
	System.out.println(id);
        System.out.println(address);
	}
} catch (Exception e) {
    e.printStackTrace();
}

        注:ResultSet中的next方法可以将“类指针”前移,并检查是否有值;

        ResultSet中的getString()方法需要输入在数据库中定义的时"属性",返回的就是当前“指针”对应的该属性的值

        五、释放内存

                          finally {
				if (resultSet!=null) {
					try {
						resultSet.close();
					} catch (SQLException e) {
						e.printStackTrace();
					} 
				}
				
				if (statement!=null) {
					try {
						statement.close();
					} catch (SQLException e) {
						e.printStackTrace();
					} 
				}
				
				if (connection!=null) {
					try {
						connection.close();
					} catch (SQLException e) {
						e.printStackTrace();
					} 
				}
			}

        谨记:此处释放内存要求从后向前释放内存,并且要分开写;

    5、方法执行结束,此时主函数也执行结束,程序结束

猜你喜欢

转载自blog.csdn.net/weixin_45104211/article/details/99460176
今日推荐