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