JDBC day1 笔记
一、JDBC原理概述
1,JDBC是一套协议,是JAVA开发人员和数据库厂商达成的协议,也就是由Sun定义一组接口,由数据库厂商来实现,
并规定了JAVA开发人员访问数据库所使用的方法的掉用规范。
2,JDBC的实现是由数据库厂商提供,以驱动程序形式提供。
3,JDBC在使用前要先加载驱动。
JDBC对于使用者要有一致性,对不同的数据库其使用方法都是相同的。
jdbc功能:连接db(网络服务器)
驱动db
使用事务
处理结果集
4、driver开发必须要实现Driver接口。
JDBC驱动程序的类型
目前比较常见的JDBC驱动程序可分为以下四个种类:
(1)JDBC-ODBC桥加ODBC驱动程序
JavaSoft桥产品利用ODBC驱动程序提供JDBC访问。
注意,必须将ODBC二进制代码(许多情况下还包括数据库客户机代码)加载到使用该驱动程序的每个客户机上。
因此,这种类型的驱动程序最适合于企业网(这种网络上客户机的安装不是主要问题),或者是用Java编写的三层结构的应用程序服务器代码。
(2)本地API
这种类型的驱动程序把客户机API上的JDBC调用转换为Oracle、Sybase、Informix、DB2或其它DBMS的调用。
注意,象桥驱动程序一样,这种类型的驱动程序要求将某些二进制代码加载到每台客户机上。
(3)JDBC网络纯Java驱动程序
这种驱动程序将JDBC转换为与DBMS无关的网络协议,之后这种协议又被某个服务器转换为一种DBMS协议。
这种网络服务器中间件能够将它的纯Java客户机连接到多种不同的数据库上。所用的具体协议取决于提供者。
通常,这是最为灵活的JDBC驱动程序。有可能所有这种解决方案的提供者都提供适合于Intranet用的产品。
为了使这些产品也支持Internet访问,它们必须处理Web所提出的安全性、通过防火墙的访问等方面的额外要求。
几家提供者正将JDBC驱动程序加到他们现有的数据库中间件产品中。
(4)本地协议纯Java驱动程序
这种类型的驱动程序将JDBC调用直接转换为DBMS所使用的网络协议。
这将允许从客户机机器上直接调用DBMS服务器,是Intranet访问的一个很实用的解决方法。
由于许多这样的协议都是专用的,因此数据库提供者自己将是主要来源,有几家提供者已在着手做这件事了。
据专家预计第(3)、(4)类驱动程序将成为从JDBC访问数据库的首方法。
第(1)、(2)类驱动程序在直接的纯Java驱动程序还没有上市前会作为过渡方案来使用。
对第(1)、(2)类驱动程序可能会有一些变种,这些变种要求有连接器,但通常这些是更加不可取的解决方案。
第(3)、(4)类驱动程序提供了Java的所有优点,包括自动安装(例如,通过使用JDBC驱动程序的appletapplet来下载该驱动程序)。
5、JDBC的API
java.sql包和javax.sql包
Driver接口 代表驱动程序,代表所有的驱动程序,所有的驱动必须首先实现这个接口
DriverManager类 辅助管理驱动类,它可以创建连接,它本身就是一个创建Connection的工厂(Factory)。
Connection接口 由驱动接口产生的对象,代表数据库连接,会根据不同的驱动产生不同的连接
Statement接口 这三个接口统一叫Statement,代表数据库操作对象,发送sql语句
PreparedStatement接口 主要用的是这个
CallableStatement接口
ResultSet接口 结果集,结构是二维表。是用来接收select语句返回的查寻结果的。其实质类似于集合。
DatabaseMetadata接口 数据库元数据
ResultSetMetadata接口 结果集元数据
Types类 定义了一些JDBC类型的常量,JDBCo类型是sql类型的子集
以上的资源都需要释放,释放的是数据库的资源
JDBC应用步骤
1,注册加载一个driver驱动
2,创建数据库连接(Connection)
3,创建一个Statement(发送sql)
4,执行sql语句
5,处理sql结果(select语句)
6,关闭Statement
7,关闭连接Connection。
注意:6,7两个步骤势必须要做的,因为这些资源是不会自动释放的,必须要自己关闭
6、jdbc的开发环境和步骤:
环境配置:
(1) 命令行
例如: 把连接oracle的驱动程序ojdbc14.jar配置到环境变量的CLASSPATH中
例:export CLASSPATH=.:/home/soft01/ojdbc14.jar
(2)IDE工具
开发步骤:
(1)加载驱动
(2)获取连接
(3)操作DB
(4)释放连接
一,注册加载驱动driver,也就是强制类加载
1、第一种方法
Class.forName(driver);
driver = "oracle.jdbc.driver.OracleDriver";
2、第二种方法
Driver d=new Driver类();
例: Driver d = new oracle.jdbc.driver.OracleDriver();
DriverManager.registerDriver(d);
3、第三种:编译时利用虚拟机的系统属性
java -Djdbc.drivers=oracle.jdbc.driver.OracleDriver 类名(文件)
Oracle的Driver的全名oracle.jdbc.driver.OracleDriver
mysql的Driver的全名com.mysql.jdbc.Driver
SQLServer的Driver的全名com.microsoft.jdbc.sqlserver.SQLServerDriver
二,创建连接
DriverManager.getConnection(String url,String username,String password);
Connection连接是通过DriverManager的静态方法getConnection(.....)来得到的,这个方法的实质是把参数传到实际的Driver中的connect()方法中来获得数据库连接的。
Oracle的URL值是由连接数据库的协议和数据库的IP地址及端口号还有要连接的库名(DatebaseName)
Oracle URL的格式
jdbc:oracle:thin:(协议)@XXX.XXX.X.XXX:XXXX(IP地址及端口号):XXXXXXX(所使用的库名)
例:jdbc:oracle:thin:@192.168.0.39:1521:TARENADB
MySql URL的写法
例: jdbc:mysql://192.168.8.21:3306/test
SQLServer URL的写法
例:jdbc:microsoft:sqlserver://192.168.8.21:1433
java -Djdbc.drivers=驱动全名 类名
使用系统属性名,加载驱动 -D表示为系统属性赋值
使用Connection对象获得一个Statement,Statement中的executeQuery(String sql) 方法可以使用select语句查询,并且返回一个结果集 ResultSet通过遍历这个结果集,
可以获得select语句的查寻结果,ResultSet的next()方法会操作一个游标从第一条记录的前边开始读取,直到最后一条记录。
executeUpdate(String sql) 方法用于执行DDL和DML语句,可以update,delete操作。
注意:要按先ResultSet结果集,后Statement,最后Connection的顺序关闭资源,因为Statement和ResultSet是需要连接是才可以使用的,
所以在使用结束之后有可能起他的Statement还需要连接,所以不能现关闭Connection。
查询时获得结果用rs.next() ----移动游标指向下一个位置
评论0
最新资源