深入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
- 深入JDBC
- 深入探讨JDBC
- [ java ] JDBC深入!
- 深入JDBC(一)
- JDBC----------->数据库深入
- 深入数据库连接JDBC
- 【JDBC详解】深入
- jdbc深入了解
- jdbc深入~连接池
- 深入理解JDBC Scrollable ResultSet
- 深入理解JDBC Scrollable ResultSet
- 深入理解JDBC Scrollable ResultSet
- 深入理解JDBC的timeout
- 深入分析JDBC超时机制
- 深入理解JDBC的超时设置
- 深入理解JDBC的超时设置
- 深入理解JDBC的超时设置
- 深入理解servlet jdbc 数据库连接池
- 微信读书的优势分析
- 反向传播
- 重新开始吧
- Android与H5相机、相册笔记
- mysql 绿色版安装图解
- 深入JDBC
- iOS中ARC与MRC代码的兼容
- 全排列算法
- Dubbo的注册中心
- 借助Stetho在Chrome上调试Android网络&数据库
- 爬虫与正则表达式
- 搭建以太坊环境truffle框架时出现的问题
- Codeforces Round #412 D. Dynamic Problem Scoring (枚举 + 贪心)
- 教你一招让你高效搞定高品质的H5交互动画