JDBC的一些基本操作以及概念
什么是JDBC?
Java语言连接数据库(Java DataBase Connectivity)
JDBC的本质?
一套接口。面向接口编程。面向接口去调用,面向接口去写他的实现类。降低程序的耦合度,提高程序的扩展力。
java.sql.*;底下制定一系列的接口,例如connection
每一个数据库底层原理都不同,mysql,Oracle,MS sqlserver等等数据库有自己的底层原理,通过制定这么一套标准去规范java与数据库之间编写问题。不同的数据库厂家编写JDBC接口的实现类(驱动jar包)(各自官网下载),java程序员负责面向JDBC接口写代码。
实现类(驱动)xxx.class xxx.class,打包成jar包,对jdbc接口进行实现。
对于sun公司而言,提供JDBC接口。
public interface JDBC{
void getConnection();
}
对于不同的数据库厂家而言要做的事情就是去实现类。
public class Oracle implements JDBC{
public void getConnection(){
xxxxxxx;
}
}
对于java程序员而言需要做的事情就面向接口编程。
public class JavaProgrammer{
public static void main (String[] args){
//JDBC jdbc = new MySQL();
//jdbc.getconnection();
//通过反射机制去创建对象
//xxx是个类名className可以通过配置文件去处理jdbc.properties
//ResourceBundle bundle = ResourceBudle.getBundle("jdbc");
//String className = bundle.getString("className");
//进而把这个className给丢进去也可以
Class class = Class.forname("xxx");
JDBC jdbc = (JDBC)class.newInstance();
jdbc.getconnection();
}
}
JDBC编程六大步骤
- 注册驱动(哪个厂家)
- 获取连接(jvm进程和数据库之间的通道)
- 获取数据库操作对象(执行sql语句的对象)
- 执行sql语句(DQL DML…)
- 处理查询的结果集(第四步是select语句才有查询结果集)
- 释放资源
/*
通过配置文件进行数据库的连接操作
*/
import java.sql.*;
import java.util.*;
public class JDBCTest04
{
public static void main(String[] args){
Connection connection = null;
Statement stmt = null;
try{
/**
注册驱动的第一种方式
Driver driver = new com.mysql.cj.jdbc.Driver();
DriverManager.registerDriver(driver);
*/
//注册驱动的第二种方式通过类加载的方式注册,在mysql对Driver接口进行实现的时候已经编写了静态代码块进行第一种方式的注册
//因此只需要进行类加载就能够实现第一种注册驱动的方式
/**
第二种注册驱动的方式更加常见,参数为一个字符串可以通过xxx.properties配置文件进行加载
*/
Class.forName("com.mysql.cj.jdbc.Driver");
//使用资源绑定器绑定配置属性文件
ResourceBundle resourcebundle = ResourceBundle.getBundle("jdbc");
String url = resourcebundle.getString("url");
String user = resourcebundle.getString("user");
String password = resourcebundle.getString("password");
connection = DriverManager.getConnection(url,user,password);
System.out.println("连接数据库成功"+connection);
stmt = connection.createStatement();
String sql = "";
int count = stmt.executeUpdate(sql);
System.out.println(count == 1 ? "执行成功":"执行失败!");
}catch(Exception e){
e.printStackTrace();
}
finally{
//6.资源释放
try{
if(stmt != null){
stmt.close();
}
}catch(SQLException e){
e.printStackTrace();
}
try{
if(connection != null){
connection.close();
}
}catch(SQLException e){
e.printStackTrace();
}
}
}
}