深入JDBC

来源:互联网 发布:域名反解析 编辑:程序博客网 时间:2024/05/17 05:17

        JDBC全称是Java Database Connection(Java数据库连接),它用于执行SQL语句的标准Java API。在实际开发中可以直接使用JDBC进行各个数据库的连接与操作,而且可以方便的向数据库发送各种SQL命令。在JDBC中提供了一套标准的接口,这样,各个支持Java的数据库的生产商只要按照此接口提供相应的实现,就都可以使用JDBC进行操作,极大的体现了Java的可移植性。

        JDBC本身提供的是一套数据库操作标准,而这些标准又需要各个数据库厂商实现,所以针对每一个数据库厂商都会提供一个JDBC的驱动程序,目前比较常见的JDBC驱动程序分为4种;

1.JDBC-ODBC桥驱动

ODBC全称是Open Database Connection(开放数据库连接),是微软公司的提供的一套数据库操作的编程接口。

JDBC-ODBC是SUN公司提供的一个标准的JDBC操作,直接利用微软的ODBC进行数据库的连接操作,但是这种操作性能较低,所以通常情况下不推荐使用这种方式进行操作


2.JDBC本地驱动

直接使用各个数据库生产商直接提供的JDBC驱动程序,但是因为其只能应用在特定的数据库上面,会丧失程序的可移植性,不过这样操作性能高。


3.JDBC网络驱动

这种驱动程序将JDBC转换为与DBMS无关的网络协议,之后又被某个服务转换为一种DBMS协议。这种网络服务器中间件能够将它的纯Java客户端连接到多个不同的数据库上面,所用的具体的协议取决于提供者。通常这是最为灵活的JDBC驱动程序。

4.本地协议纯JDBC驱动

这种类型的驱动程序将JDBC调用直接转换为DBMS所使用的网络协议。这将允许从客户机上直接调用DBMS服务器,是Intranet访问的一个很实用的解决办法。

其中DBMS(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性


JDBC的核心为用户提供了Java API类库,让用户能够创建数据库连接,执行SQL语句,检索结果集,访问数据库等。

这是一些JDBC的主要操作类以及接口

java.sql.DriverManager:用于管理JDBC的驱动程序。

java.sql.Connection:用于建立与特定的数据库连接,一个连接就是一个会话,建立连接便可以执行SQL语句和获得检索结果。

java.sql.Statement:一个Statement对象用于执行静态的SQL语句,并获得语句执行后产生的结果。

java.sql.PreparedStatement:创建一个可以编译的SQL语句对象,该对象可以被多次运行,以提高执行的效率,该接口是Statement的子接口。

java.sql.ResultSet:用于创建表示SQL语句检索结果的结果集,用户通过结果集完成对数据库的访问。

java.sql.Driver:定义一个数据库驱动程序的接口。

java.sql.SQLException:对数据库访问时产生的错误的描述信息。

JDBC常用的接口和类是DriverManage,Connection,Statement,PreapareStatement,ResultSet.



JDBC的操作步骤

(1)加载数据库驱动程序:各个数据库都会提供JDBC的驱动程序的开发包,例如Java里面的mysql-connector-java-5.0.8-bin.jar,mysql的驱动程序代码是这样的com.mysql.jdbc.Driver.

(2)连接数据库:根据各个数据库的不同,连接的地址也不同,连接地址也将由数据库厂家,一般在使用JDBC连接数据库的时候都要求输入连接的用户名,密码,以及数据库的名称。mysql的连接是这样的jdbc:mysql://localhost:3306/user2。

(3)使用SQL语言进行数据库的操作:数据库操作分为更新和查询两种,除了可以使用标准的SQL语句外,对于各个数据库也可以使用其自己提供的各种命令。mysql里面的sql语句,例如:insert into acat (id,name,major,direction) values(?,?,?,?).

(4)关闭数据库连接,数据库操作完毕之后需要关闭数据库并将资源进行释放。一般在finally里面进行资源的释放。

JDBC连接的工具类是这样的:

package com.cal.util;


import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;


import javax.naming.spi.DirStateFactory.Result;


public class JdbcUtil {

private static String driverClassName;
private static String url;
private static String user;
private static String password;

static{
try{
InputStream in = JdbcUtil.class.getClassLoader().getResourceAsStream("files");
Properties props = new Properties();
props.load(in);
driverClassName = props.getProperty("driverClassName");
url = props.getProperty("url");
user = props.getProperty("user");
password = props.getProperty("password");
Class.forName("com.mysql.jdbc.Driver");
}catch(Exception e){
e.printStackTrace();
}
}

public static Connection getConnection() throws Exception{
return DriverManager.getConnection(url, user, password);
}

public static void liu(ResultSet rs,Statement stmt,Connection conn){
if(rs!=null){
try{
rs.close();
}catch(Exception e){
e.printStackTrace();
}

rs=null;
}

if(stmt!=null){
try{
stmt.close();
}catch(Exception e){
e.printStackTrace();
}

stmt=null;
}

if(conn!=null){
try{
conn.close();
}catch(Exception e){
e.printStackTrace();
}

conn=null;
}
}
}

这里有一个配置文件,是数据库连接的用户名,密码,以及数据库名称。

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/user2
user=root
password=123456

0 0