日期:2014-05-16  浏览次数:20681 次

JDBC 学习笔记
JDBC原理概述



1,JDBC是一套协议,是JAVA开发人员和数据库厂商达成的协议,也就是由Sun定义一组接口,由数据库厂商来实现,并规定了JAVA开发人员访问数据库所使用的方法的掉用规范。



2,JDBC的实现是由数据库厂商提供,以驱动程序形式提供。



3,JDBC在使用前要先加载驱动。

JDBC对于使用者要有一致性,对不同的数据库其使用方法都是相同的。



driver开发必须要实现Driver接口。

数据库驱动的实现方式

JDBC-ODBC桥接式

JDBC网络驱动,这种方式是通过中间服务器的协议转换来实现的

JDBC+本地驱动,这种方式的安全性比较差

JDBC驱动,由数据库厂商实现。



JDBC的API



java.sql包和javax.sql包

DriverManager类(驱动管理器),它可以创建连接,它本身就是一个创建Connection的工厂(Factory)。

Connection接口,会根据不同的驱动产生不同的连接

Statement接口,发送sql语句

ResultSet接口(结果集),是用来接收select语句返回的查寻结果的。其实质类似于集合。



JDBC应用步骤

1,注册加载一个driver驱动

2,创建数据库连接(Connection)

3,创建一个Statement(发送sql)

4,执行sql语句

5,处理sql结果(select语句)

6,关闭Statement

7,关闭连接Connection。



注意:6,7两个步骤势必须要做的,因为这些资源是不会自动释放的,必须要自己关闭



访问Oracle的数据库的驱动名字叫ojdbc14.jar,这个jar文件中出访的驱动程序的.class文件

要使用这个驱动程序,要先将他加到环境变量PATH中。



一,注册加载驱动driver,也就是强制类加载

    Class.forName(Driver包名.Driver类名)。



    Driver d=new Driver类();

    DriverManager.registerDriver(d);



    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。







预编译的Statement



PreparedStatement 可以使用参数替代sql语句中的某些参数使用 "?"代替,他先将带参数的sql语句发送到数据库,进行编译,然后PreparedStatement会将参数发送给数据库。

在使用PreparedStatement时,在设置相应参数时,要指明参数的位置和类型,以及给出参数值

根据不同的参数类型使用不同的setXXX(参数的位置,参数值)来设置参数



例:

public void insert(Student s){

              Connection con=ConnectionFactory.getConnection();//建立连接

              String sql="insert into student(id,name) values(?,?)";

              PreparedStatement ps=null;

              try {

          &nbs