JDBC的工作原理是什么?

要详细的~... 要详细的~ 展开
 我来答
qznalzc
2017-08-11 · 知道合伙人文学行家
qznalzc
知道合伙人文学行家
采纳数:4958 获赞数:117402
从事办公事务、党务、社会事务10年,兴趣社会新闻、时事政治、军事历史等。

向TA提问 私信TA
展开全部
JDBC是Sun公司制定的一个可以用Java语言连接数据库的技术。
JDBC工作原理主要分3个步骤:1、加载数据库驱动。2、获取数据库连接。3、发送sql语句访问数据库 。
1、加载数据驱动:使用Class.forName方法,调用这个方法会加载数据库驱动com.MySQL.jdbc.driver。
关于数据库驱动的理解,其实是sun公司给了一个Driver的接口,然后各个数据厂商根据自己的数据库
来实现这个接口。当要访问数据库的时候,需要引入这个第三方类库。类的加载主要分为5个部分,
加载、验证、准备、解析、初始化。在初始化的部分用到了DriverManager.registerDriver()方法,将
自己注册给DriverManager的Driver接口。这个地方体现了多态。这个时候就可以使用Driver了。
2、获取数据库连接DriverManager.getConnection()。这个方法主要调用driver的connect()方法
返回一个实现了Connection接口的对象。
3、然后利用Connection对象创建Statement,发送sql语句访问数据库。
延伸:JDBC基础知识

JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,并且可跨平台运行,并且不受数据库供应商的限制。
1、跨平台运行:这是继承了Java语言的“一次编译,到处运行”的特点;
2、不受数据库供应商的限制:巧妙在于JDBC设有两种接口,一个是面向应用程序层,其作用是使得开发人员通过SQL调用数据库和处理结果,而不需要考虑数据库的提供商;另一个是驱动程序层,处理与具体驱动程序的交互,JDBC驱动程序可以利用JDBC API创建Java程序和数据源之间的桥梁。应用程序只需要编写一次,便可以移到各种驱动程序上运行。Sun提供了一个驱动管理器,数据库供应商——如MySQL、Oracle,提供的驱动程序满足驱动管理器的要求就可以被识别,就可以正常工作。所以JDBC不受数据库供应商的限制。
JDBC API可以作为连接Java应用程序与各种关系数据库的纽带,在带来方便的同时也有负面影响,以下是JDBC的优、缺点。优点如下:

· 操作便捷:JDBC使得开发人员不需要再使用复杂的驱动器调用命令和函数;
· 可移植性强:JDBC支持不同的关系数据库,所以可以使同一个应用程序支持多个数据库的访问,只要加载相应的驱动程序即可;
· 通用性好:JDBC-ODBC桥接驱动器将JDBC函数换成ODBC;
· 面向对象:可以将常用的JDBC数据库连接封装成一个类,在使用的时候直接调用即可。
缺点如下:
· 访问数据记录的速度受到一定程度的影响;
· 更改数据源困难:JDBC可支持多种数据库,各种数据库之间的操作必有不同,这就给更改数据源带来了很大的麻烦
麦水香
2011-12-09 · 超过17用户采纳过TA的回答
知道答主
回答量:91
采纳率:0%
帮助的人:44.2万
展开全部
JDBC的工作原理:
1.这里以连接Mysql数据库为例:
驱动程序为:com.mysql.jdbc.Driver
连接字符串(url)为:jdbc:mysql://localhost:3306/test1.加载连接数据库的驱动程序:
Class.forName("com.mysql.jdbc.Driver");
2.创建与数据源的连接:
String url = "jdbc:mysql://localhost:3306/test";
Connection con = DriverManager.getConnection(url,"user","passwd");
3.查询数据库:创建Statement对象并执行SQL语句以返回一个ResultSet对象
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select * from DBTableName");
4.获取当前记录集中的某一记录的各个字段的值:
String name = rs.getString("name");
int age = rs.getInt("age");
float wage = rs.getFloat("wage");
5.关闭结果集,关闭查询语句,断开与数据库的连接:
rs.close();
stmt.close();
con.close();
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cm_305
2011-12-10
知道答主
回答量:33
采纳率:0%
帮助的人:8万
展开全部
JDBC程序描述为包含如下过程的应用:
1. 引入一个必要的类
2. 加载JDBC驱动程序
3. 标识数据源(URL、Username、Password)
4. 分配一个Connection对象
5. 分配一个Statement对象
6. 使用该Statement对象执行检查 SQL语句
7. 从返回的ResultSet对象中检索数据 类似于迭代器的操作
8. 关闭ResultSet对象
9. 关闭Statement对象
10. 关闭Connection对象

装载驱动程序

通过JDBC来连接关系数据库,应用程序必须采取的第一个合理步骤是加载合适的JDBC驱动程序,并获得一个与该数据库的连接。使用JDBC的DriverManager类可以实现。

DriverManager类实现了java.sql.Driver接口。

加载Driver接口并把它注册给DriverManager类有两种方法:

(1) 使用Class.forName()方法

(2) 标识jdbc.drivers系统属性内的Driver类

建立连接

实现Connection接口的一个类对象(即一个Connection对象)代表一个与某个具体数据源的连接。Connection对象实际上是建立一个上下文环境,以便程序员能在它里面创建并执行SQl命令。

Connection databaseConnection = DriverManager.getConnection(sourceURL);

语句与结果集

Statement接口提供了执行SQL语句和检索结构的一种方法。由于Statement是一个接口,所以程序员不能直接创建一个Statement对象。通常创建这个对象的方法是:

Statement statement = connection.createStatement();

当建成一个Statement对象之后,它提供一个工作空间供用户创建SQL查询,执行该查询,以及检索返回的任何结果。当建成一个Statement对象之后,就可以通过调用该Statement对象的下列执行方法来执行SQL查询

executeQuery()――用于在单个ResultSet对象的数据库中检索出数据的SQL语句。

executeUpdate()――执行不返回ResultSet对象的查询。它的返回值是一个整数(称为更新计数),它给出受到影响的行数。

execute()――执行返回多个结果集,多个更新计数值或这两者组合的语句。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
919128858
2011-12-09
知道答主
回答量:13
采纳率:0%
帮助的人:7.5万
展开全部
Class.forName( "com.microsoft.sqlserver.jdbc.SQLServerDriver ");

执行后,ClassLoader加载SQLServerDriver到JVM中,并加载此类的static段
根据JDBC规范,在此static段中必须调用DriverManager.registerDriver注册自己

DriverManager.getConnection时,DriverManager会遍历所有已经注册的Driver
逐个调用其中的Driver.acceptsURL方法

如果此Driver接受此URL,则调用Driver.connect方法返回一个Connection连接

Driver属于什么类型是不能直接从代码上看出来,具体要看Driver的实现方式
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
自然与生命ZR
2011-12-10 · TA获得超过259个赞
知道小有建树答主
回答量:554
采纳率:0%
帮助的人:256万
展开全部
最权威的请参考Sun公司的官方说明:
http://java.sun.com/products/jdbc/overview.html
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式