JDBC操作数据库的基本流程是什么


Posted in 面试题 onOctober 28, 2014
所有的JDBC应用程序都具有下面的基本流程:
  1、建立到数据库的连接。
  2、执行SQL语句。
  3、处理结果。
  4、从数据库断开连接。
  下面我们就来仔细看一看每一个步骤。

  建立到数据库的连接
  通过JDBC使用数据库的第一步就是建立一个连接。JDBC连接是由URL指定的,它的格式如下:
  jdbc::
  其中subprotocol是被请求的数据库连接的类型(如ODBC,ORACLE,Informix等等),而subname提供了所要建立的连接的一些附加信息。当JDBC驱动程序管理器收到一个连接的URL时,所有已知的JDBC驱动程序会被询问是否可以为这个URL服务。请求一个通过JDBC-ODBC桥到叫做MyData的ODBC数据源的连接的例子如下:
  Connection con = DriverManage.getconnection(“jdbc:odbc:MyData”);
  看上去一切都很顺利,但是JDBC驱动程序管理器是怎么知道哪些JDBC驱动程序在当前的系统中可用呢?有两种机制可以通知驱动程序管理器一个JDBC驱动程序可以使用:sql.drivers属性和JDBC驱动程序注册。
  驱动程序管理器引用sql.drivers系统属性来取得当前系统中可用的JDBC驱动程序列表。这个系统属性包含一些用冒号隔开的JDBC驱动程序的类名,通过这个类名,驱动程序管理器可以试图满足一个连接请求。
  使用驱动程序注册更为常见。这种方法使你对你要使用的JDBC驱动程序有更多的控制。所有的JDBC驱动程序在实例化的时候都必须在驱动程序管理器中注册自己,注册可以通过下列两个方法来实现:
  1.Class.forName(“foo.Driver”).newInstance();
  2.new foo.Driver();
  我个人比较喜欢使用Class.forName()这种方法,不过这两种方法的效果是相同的。JDBC驱动程序用驱动程序管理器注册自己,这样,它就可以为连接请求服务了。

  执行SQL语句
  在数据库连接成功建立之后,我们就可以执行那些完成实际工作的SQL语句了。在执行SQL语句之前,我们必须首先创建一个语句对象,这个对象提供了到特定数据库SQL引擎的接口。有下列三种不同类型的语句对象:
  1.Statement——基本的语句对象,它提供了直接在数据库中执行SQL语句的方法。对于那些只执行一次的查询以及DDL语句如CREATE TABLE,DROP TABLE等等来说,statement对象就足够了。
  2.Prepared statement——这种语句对象用于那些需要执行多次,每次仅仅是数据取值不同的SQL语句,它还提供了一些方法,以便指出语句所使用的输入参数。
  3.Callable statement——这种语句对象被用来访问数据库中的存储过程。它提供了一些方法来指定语句所使用的输入输出参数。
  下面是一个用语句类来执行SQL SELECT语句的一个例子:
  Statement stmt = con.createStatement();
  ResultSet rs = stmt.executeQuery(“SELECT * FROM MyTable”);

  处理结果
  在执行了一个SQL语句之后,我们必须处理得到的结果。有些语句仅仅返回一个整形数,指出受到影响的行数(比如UPDATE和DELETE语句)。SQL查询(SELECT语句)返回一个含有查询结果的结果集。结果集由行和列组成,各列数据可以通过相应数据库类型的一系列get方法(如getString,getInt,getDate等等)来取得。在取得了一行数据的所有数据之后,我们可以调用next()方法来移到结果集中的下一条记录。JDBC规范的1.1版只允许forward-onle(只向前)型的游标,而在JDBC2.0中有更健壮的游标控制功能,我们可以向后移动游标而且可以将游标移动到指定行。

  从数据库断开连接
  在结果集、语句和连接对象用完以后,我们必须正确地关闭它们。连接对象、结果集对象以及所有的语句对象都有close()方法,通过调用这个方法,我们可以确保正确释放与特定数据库系统相关的所有资源。
  有些开发者喜欢将引用乱放,然后用一个垃圾收集程序专门负责正确清除对象。我强烈建议大家在使用了JDBC驱动程序之后调用close()方法。这样可以尽可能的减少由于挂起的对象残留在数据库系统中而造成的内存泄漏。

Tags in this post...

面试题 相关文章推荐
Yahoo-PHP面试题3
Jan 14 面试题
康拓普公司Java笔面试
Sep 23 面试题
编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串
Jan 07 面试题
请问如下代码执行后a和b的值分别是什么
May 05 面试题
实现strstr功能,即在父串中寻找子串首次出现的位置
Aug 05 面试题
CLR与IL分别是什么含义
Aug 23 面试题
.NET初级开发工程师面试题(包括Javascript)
Aug 22 面试题
C#笔试题集合
Jun 21 面试题
const和static readonly区别
May 20 面试题
介绍一下grep命令的使用
Jun 28 面试题
EJB面试题
Jul 28 面试题
Servlet都有哪些方法?主要作用是什么?
Mar 04 面试题
Python如何定义一个函数
Sep 01 #面试题
如何用Python输出一个Fibonacci数列
Aug 28 #面试题
Python面试题集
Mar 08 #面试题
Python中pass语句的作用是什么
Jun 01 #面试题
请用Python写一个获取用户输入数字,并根据数字大小输出不同信息的脚本
May 20 #面试题
介绍一下Python下range()函数的用法
Nov 07 #面试题
介绍一下except的用法和作用
Jan 22 #面试题
You might like
PHP的栏目导航程序
2006/10/09 PHP
php调用dll的实例操作动画与代码分享
2012/08/14 PHP
在Laravel框架里实现发送邮件实例(邮箱验证)
2016/05/20 PHP
PHP使用GD库输出汉字的方法【测试可用】
2016/11/10 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
2016/11/15 PHP
服务端 VBScript 与 JScript 几个相同特性的写法 By shawl.qiu
2007/03/06 Javascript
AJAX使用了UpdatePanel后无法使用alert弹出脚本
2010/04/02 Javascript
JavaScript浏览器选项卡效果
2010/08/25 Javascript
ASP.NET jQuery 实例17 通过使用jQuery validation插件校验ListBox
2012/02/03 Javascript
深入分析Cookie的安全性问题
2015/03/01 Javascript
js实现绿白相间竖向网页百叶窗动画切换效果
2015/03/02 Javascript
javascript实时显示当天日期的方法
2015/05/20 Javascript
基于javascript如何传递特殊字符
2015/11/30 Javascript
javascript事件模型介绍
2016/05/31 Javascript
JS只能输入正整数的简单实例
2016/10/07 Javascript
Nodejs异步回调之异常处理实例分析
2018/06/22 NodeJs
微信小程序获取当前位置和城市名
2019/11/13 Javascript
JS实现悬浮球只在一侧滑动并且是横屏状态下
2020/08/19 Javascript
Node.js fs模块原理及常见用途
2020/10/22 Javascript
解决Vue-cli无法编译es6的问题
2020/10/30 Javascript
在Python中用has_key()方法查找键是否存在的教程
2015/05/21 Python
python通过apply使用元祖和列表调用函数实例
2015/05/26 Python
Python中的下划线详解
2015/06/24 Python
浅谈Python实现贪心算法与活动安排问题
2017/12/19 Python
python3+PyQt5实现拖放功能
2018/04/24 Python
python中使用zip函数出现错误的原因
2018/09/28 Python
Selenium定时刷新网页的实现代码
2018/10/31 Python
详解Python Qt的窗体开发的基本操作
2019/07/14 Python
pyinstaller打包找不到文件的问题解决
2020/04/15 Python
使用Keras画神经网络准确性图教程
2020/06/15 Python
CSS3 2D模拟实现摩天轮旋转效果
2016/11/16 HTML / CSS
美国在线购买和出售礼品卡网站:EJ Gift Cards
2019/06/09 全球购物
社区学习十八大感想
2014/01/22 职场文书
对党的十八届四中全会的期盼
2014/10/17 职场文书
办公室日常管理制度
2015/08/04 职场文书
python 爬取哔哩哔哩up主信息和投稿视频
2021/06/07 Python