JDBC笔记

1、JDBC是什么?

Java DataBase Connectivity(Java语言连接数据库)

2、JDBC的本质是什么?

JDBC是SUN公司制定的一套接口(interface)
	java.sql.*; (这个软件包下有很多接口。)

接口都有调用者和实现者。
面向接口调用、面向接口写实现类,这都属于面向接口编程。

为什么要面向接口编程?

	解耦合:降低程序的耦合度,提高程序的扩展力。
	多态机制就是非常典型的:面向抽象编程。(不要面向具体编程)
		建议:
			Animal a = new Cat();
			Animal a = new Dog();
			// 喂养的方法
			public void feed(Animal a){ // 面向父类型编程。
			
			}
		不建议:
			Dog d = new Dog();
			Cat c = new Cat();

思考:为什么SUN制定一套JDBC接口呢?

	因为每一个数据库的底层实现原理都不一样。
	Oracle数据库有自己的原理。
	MySQL数据库也有自己的原理。
	MS SqlServer数据库也有自己的原理。
	....
	每一个数据库产品都有自己独特的实现原理。

JDBC的本质到底是什么?
	一套接口。

3、JDBC开发前的准备工作,先从官网下载对应的驱动jar包,然后将其配置到环境变量classpath当中。

classpath=.;D:\course\06-JDBC\resources\MySql Connector Java 5.1.23\mysql-connector-java-5.1.23-bin.jar

以上的配置是针对于文本编辑器的方式开发,使用IDEA工具的时候,不需要配置以上的环境变量。
IDEA有自己的配置方式。

4、JDBC编程六步(需要背会)

第一步:注册驱动(作用:告诉Java程序,即将要连接的是哪个品牌的数据库)

第二步:获取连接(表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,重量级的,使用完之后一定要关闭通道。)

第三步:获取数据库操作对象(专门执行sql语句的对象)

第四步:执行SQL语句(DQL DML....)

第五步:处理查询结果集(只有当第四步执行的是select语句的时候,才有这第五步处理查询结果集。)

第六步:释放资源(使用完资源之后一定要关闭资源。Java和数据库属于进程间的通信,开启之后一定要关闭。)

代码演示:

//jdbc.properties
driver = com.mysql.cj.jdbc.Driver
url = jdbc:mysql://localhost:3306/bjpowernode
user = root
password = lt.15971225094
package com.javase;

import java.util.*;
import java.sql.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;


public class JDBCTest05
{
	public static void main(String[] arg){
		//初始化一个界面
		Map<String,String> userLoginInfo = initUI();
		//验证用户名和密码
		boolean loginSuccess = login(userLoginInfo);
		System.out.println(loginSuccess ? "登录成功" : "登陆失败");
	}

	//用户登录
	private static boolean login(Map<String,String> userLoginInfo){
		boolean loginSuccess = false;
		//单独定义变量
		String loginName = userLoginInfo.get("loginName");
		String loginPwd = userLoginInfo.get("loginPwd");

		//JDBC代码
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		//使用资源文件绑定属性配置文件
		ResourceBundle bundle = ResourceBundle.getBundle("jdbc");
		String driver = bundle.getString("driver");
		String url = bundle.getString("url");
		String user = bundle.getString("user");
		String password = bundle.getString("password");
		try{
			//1,注册驱动
			Class.forName(driver);
			//2,获取连接
			conn = DriverManager.getConnection(url,user,password);
			//3,获取预编译的数据库操作对象
			String sql ="select * from emp where ename = ? and empno   = ? ";

			//程序执行到此处,会发送sql语句框子给DBMS,然后DBMS进行sql语言的预先编译。
			ps = conn.prepareStatement(sql);
			//给占位符 ? 传值(第一个问好的下标是1,第二个问号的下标是2,JDBC中所有下标都是从1开始。)
			ps.setString(1,loginName);
			ps.setString(2,loginPwd);
			//4,执行sql			
			rs = ps.executeQuery();
			//5,处理结果集
			if(rs.next()){
				//登录成功
				loginSuccess = true;
			}

		}catch(Exception e){
			e.printStackTrace();
		}finally{
			//6,释放
			if(rs != null){
				try{
					rs.close();
				}catch(Exception e){
					e.printStackTrace();
				}
			}
			if(ps != null){
				try{
					ps.close();
				}catch(Exception e){
					e.printStackTrace();
				}
			}
			if(conn != null){
				try{
					conn.close();
				}catch(Exception e){
					e.printStackTrace();	
				}
			}
		}
		return loginSuccess;
	}


	//初始化用户界面
	private static Map<String,String> initUI(){
		Scanner s = new Scanner(System.in);
		System.out.print("用户名:");
		String loginName = s.nextLine();
		System.out.print("密码:");
		String loginPwd = s.nextLine();
		Map<String,String> userLoginInfo = new HashMap<>();
		userLoginInfo.put("loginName", loginName);
		userLoginInfo.put("loginPwd",loginPwd);
		return userLoginInfo;
	}
}

你可能感兴趣的:(MySQL,数据库,java,jdbc,mysql)