JDBC技术

JDBC技术

1.1 JDBC简介

​ JDBC实质上是商标,全称为 Java DataBase Connectivity(java 数据库连接)。

​ JDBC还是一个技术,可以通过它连接不同的数据库如Oracle, MySql,SQLSever等,执行如insert, delete, update, select等DML(数据库操作语言),create, table, drop等DDL(数据库定义语言),并且支持调用储存过程等。

​ JDBC还是一个规范,标准。它是SUN制定的一套Java连接数据库执行SQL语句的规范。

​ JDBC的规范更具体的说是类和接口的集合。

1.2 JDBC规范

1.2.1 ODBC,OLEDB,ADO

​ 微软的ODBC规范。全称为:Open DataBase Connectivity(开放数据库连接),它是微软连接数据库执行sql语句的规范,之后对规范升级后命名为OLEDB,全称为:Object Link and embed(对象连接与嵌入),之后应各大数据库厂商的要求又做了规范的实现,叫ADO,全称为:ActiveX Data Objects(ActiveX数据对象)。

1.2.2 JDBC规范

​ java出现后,使用java连接数据库执行SQL语句,SUN公司没有采用微软的ODBC规范,而是发明了自己新的规范,于是JDBC规范就此诞生。

​ JDBC和ODBC的区别是:SUN没有提供相应的连接数据库的实现,而是需要厂商自行完成。

1.2.3三者的关系

​ 规范制定者:SUN公司。制定得到连接执行SQL语句的规范,就是接口的集合。

​ 规范实现者:各大数据库厂商。学习规范,具体说就是实现接口的功能,把实现类打包成一个jar包。

​ 规范使用者:应用程序员。学习接口以及实现类方法的含义,使用者在相应的数据库官网下载jar包连接数据库。

1.2.4 JDBC接口和类

​ 与JDBC相关的接口和类都在java.sql包中

名称类型说明
Driver接口表示驱动程序类
Connection接口连接数据库
Statement接口执行SQL语句将数据检索到ResultSet中
ResultSet接口数据库结果集数据表,由select(DML)产生
PreparedStatement接口执行预编译SQL语句
DriverManager驱动程序管理器,通过它得到连接对象
CallableStatement接口执行储存过程

1.3 JDBC的使用

1.3.1 项目引入驱动程序jar包

​ 将官网下载好的jar包导入到项目中。

​ 在当前的项目建立一个文件夹,将jar包放入其中,再导入,这样拷贝项目的时候会连同jar包一起拷贝。

​ 以idea为例打开File -> project Structure …(如图操作) -> java -> 打开之前存放jar包的文件夹将驱动程序导入 。这里我们之前导入过名字叫“sqljdbc4”

请添加图片描述

1.3.2 加载驱动程序

​ 使用Class.forName()加载驱动程序。

try {
        Class.forName("实现java.sql.Driver接口的一个类DriverName");  
    }catch (ClassNotFoundException e) {
        e.printStackTrace();
}

​ 1.DriverName根据连接数据库种类的不同加载的驱动类不同,不管是哪个类都实现了java.sql.Driver的接口。如sqlsever的驱动类名为: com.microsoft.sqlserver.jdbc.SQLServerDriver。

​ 2.Class.forName(“driverName”)的两个功能:第一,把驱动程序加载到内存里;第二,把当前加载的驱动程序自动去DriverManager那注册。

1.3.3得到连接对象connection

​ 如果把应用程序比作商店的话那么数据库就是储存商品的仓库,现在我们需要把货物运输到商店,首先就需要建立一条连接通道,通过DriverManager.getConnection()方法得到连接对象。

 
//DriverManager会返回Connection接口的一个实现类SqlSeverConnection
//gerConnection方法会new一个SqlSeverConnection类的一个对象,返回这个对象用外面的接口来使用这个实例
//声明接口创建对象
try{
    String url = "jdbc:sqlserver://127.0.0.1:1433;databaseName = PAS";
    Connection con = DriverManager.getConnection(url, "sa","sa");
}catch (SQLException e) {
	e.printStackTrace();
}

当我们调用sql包中任何方法和类的时候都会报一个编译时异常SQLException。

url:为统一资源定位符

jdbc:sqlsever://ip:1433;dataBaseName = dbName

jdbc:表示的是JDBC驱动程序

sqlsever:表示的是连接数据库的种类

ip:表示的是计算机的身份证,如果连接的数据库是本机,我们使用localhost或者127.0.0.1表示。

1433:端口号(port),又称为服务号,监听号,如果这个主机装了好几种数据库,连接哪个数据库就使用对应的port,sqlsever为1433,mysql为3306,oracle为1521。

databaseName: 数据库的名称,使用的是哪个数据库就用其相应的名字。

几种url的写法:

数据库类别url
mysqljdbc:mysql://ip:3306/dbName
Oraceljdbc:oracle:thin:@ip:1521:dbName
sqlsever2005jdbc:sqlsever://ip:1433;dataBaseName = dbName

1.3.4 创建Statement对象

​ 之前创建好通道这会我们还需要一辆车Statement

Statement sta = con.createStatement();

1.3.5 执行SQL语句(executeUpdate)

​ 从仓库拉货的Statement提供了两个方法:

executeUpdate(sql)用来执行insert, update, delete语句。

executeQuert(sql)用来执行select语句。

其中executeUpdate为int类型,

int row = sta.executeUpdate(sql);
if(rows == 1){
    System.out.println(rows);//打印影响的行数
    System.out.println("OPRATION SUCCESSFUL");
}else {
    System.out.println("OPRATION DEFAULT");
}

1.3.6 资源的关闭

​ 因为Statement,Connection都是大对象,最后我们使用完需要关闭以释放资源,finally块不管有没有异常都会最后执行,因此用finally块释放资源。

Connection con = null;
Statement sta = null;
try {
……………………
……………………
省略代码
……………………
……………………
} finally {
	try {
		if (sta != null) {
			sta.close();
			sta = null;
		}
		if (con != null) {
			con.close();
			con = null;
		}	
	} catch (Exception e) {
		System.out.println("关闭资源时发生异常");
	}
}

创建资源和关闭资源的顺序是相反的。

如果在创建con后在创建sta之前发生异常,也就是Statement还没有创建对象,那么程序会进入catch块,最后finally块会调用sta.close()报空指针异常,因此必须加入空判断然后执行。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值