※ JDBC
sun公司给出的一套标准(接口),该标准规定了如何连接数据库,具体的实现是由各大数据库运营商提供实现
TCP/IP+数据库底层协议
※ Java中对数据库用到的接口和类(具体查看API)
接口
java.sql.Driver 驱动程序的接口
java.sql.Connection 获取连接(通信信道)
java.sql.Statement
java.sql.PreparedStatment 对SQL编译
java.sql.ResultSet 结果集(存储的是数据库返回的结果(select))
类
java.sql.DriverManager 对驱动程序进行管理
※ 连接数据库的六大步骤
第一步:注册驱动 (告知JVM连接的数据库是谁,加载实现的代码)
第二步:获取连接对象(基于协议连接数据库,并且验证用户名和密码是不是正确)
第三步:构建Statement和PreparedStatement对象(对SQL语句编译)
第四步:执行SQL语句
第五步:看第四步有没有结果返回,有结果返回处理结果集,没有结果集返回,直接忽略该步;
第六步:关闭资源(先开后关)
※ Jdbc连接数据库的四种驱动方式
※ 1 .jdbc-odbc桥接方式
要求使用者必须安装jdbc-odbc驱动程序,该程序是二进制
(e.g.: oil.dll)
执行过程:
Java程序->odbc借助驱动java代码编程成标准的数据库语言->数据库
优点:安装驱动可以连接上所有的数据库
缺点:用户要安装驱动
※ 2 .本地API驱动
要求用户安装驱动包(针对某一个数据库),其实就是代码库
执行流程:
java程序->代码库->数据库
※ 3 .网络协议驱动
需要安装jdbc-odbc驱动或本地API驱动的服务器作为媒介
执行的流程:
java程序-(网络)->网络服务器(转换)->数据库
优点:用户不需要安装任何驱动,并且驱动更新方便
缺点:用到网络。
※ 4 .本地api协议
数据库运营商基于sun公司提供接口,按照规范实现的代码,具体体现jar包,用户使用只需要下载jar包(Oracle14.jar,Oracle6.jar,Oracle5.jar,mysql-5.5-xxx.jar,sqlserverxxx.jar等)
oracle14_g.jar 测试包
Oracle14.jar 开发包
※ A .注册驱动(四种方法)
※ 1 .注册驱动(常用)
Class.forName(“oracle.jdbc.driver.OracleDriver”);
Connection conn=
DriverManager.getConnection(url, user,password);
※ 2 .手动注册驱动
Driver driver=new OracleDriver();
DriverManager.registerDriver(driver);
Connection conn=
DriverManager.getConnection(url, user,password);
※ 3 .注册驱动给虚拟机传如参数
System.setProperty(“jdbc.drivers”,”oracle.jdbc.driver.OracleDriver”);
Connection conn=
DriverManager.getConnection(url, user,password);
※ 4 .注册驱动给虚拟机传如参数
第一步:
Connection conn=
DriverManager.getConnection(url, user,password);
第二步:
点击程序右键-》run as ->run Configuration-> arguments->VM arguments
->文本框填入-Djdbc.drivers=oracle.jdbc.driver.OracleDriver->run直接运行
注意:运行的时候给虚拟机传参数=前后必须不能有空格
/* jdbc.txt 文件
* user=jd1812
* password=briup
*/
//四种注册方法
package com.briup.jdbc;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
import oracle.jdbc.driver.OracleDriver;
public class FirstJdbc {
//数据库连接的四要素
//1.驱动程序(ojdbc.jar包的地址)
private String driver="oracle.jdbc.driver.OracleDriver";
//2.请求资源定位协议 url(数据库位置)
//OracleServiceXE
//协议语法 jdbc:子协议:[连接方式]:@host:port:db?key=value...
private String url="jdbc:oracle:thin:@192.168.43.216:1521:XE";
//3.用户名
private String user="jd1812";
//4.密码
private String password="briup";
public static void main(String[] args) {
//new FirstJdbc().registerDriver4();
new FirstJdbc().createConnection();
}
public void createConnection(){
Connection conn=null;
try {
Class.forName(driver);
Properties pro=new Properties();
//可以把数据写在文本中,用properties类中load()方法,方便数据修改
pro.load(new FileInputStream("src/com/briup/jdbc/jdbc.txt"));
// pro.setProperty("user", "jd1812");
// pro.setProperty("password", "briup");
conn=DriverManager.getConnection(url,pro );
System.out.println(conn);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void registerDriver4(){
Connection conn=null;
//运行的过程给虚拟机传参数
//-Djdbc.drivers=oracle.jdbc.driver.OracleDriver
try {
conn=DriverManager.getConnection(url, user, password);
System.out.println(conn);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void registerDriver3(){
Connection conn=null;
//给虚拟机传参数,注册驱动
//jdbc.drivers=oracle.jdbc.driver.OracleDriver
System.setProperty("jdbc.drivers", "oracle.jdbc.driver.OracleDriver");
try {
conn=
DriverManager.getConnection(url, user, password);
System.out.println(conn);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void registerDriver2(){
Connection conn=null;
try {
//手动注册驱动,不要四要素中的driver
Driver driver=new OracleDriver();
DriverManager.registerDriver(driver);
conn=
DriverManager.getConnection(url, user, password);
System.out.println(conn);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void registerDriver1(){
Connection conn=null;
//第一步注册驱动
try {
Class.forName(driver);
//获取连接
conn=
DriverManager.getConnection(url, user, password);
System.out.println(conn);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
※ B .获取连接对象(两种方法)
1.
Connection conn=
DriverManager.getConnection(url, user,password);
2.
Properties pro=new Properties();
pro.setProperty(“user”,”jd1812”);
pro.setProperty(“password”,”bruin”);
Connection conn=
DriverManager.getConnection(url, pro);