JDBC数据库开发-研究生教学
《J2EE企业级软件开发》教学课件:(2014-03)JDBC和MySQL数据库
DriverManager(java.sql.DriverManager):装载驱动程 序,管理应用程序与驱动程序之间的连接。 Driver(由驱动程序开发商提供):将应用程序的API 请求转换为特定的数据库请求。 Connection(java.sql.Connection):将应用程序连接到 特定的数据库。 Statement(java.sql.Statement):在一个给定的连接中 ,用于执行一个静态的数据库SQL语句。
数据库连接池使用方法2独立于web服务器的数据库连接池尽管现在大部分的应用服务器都提供了自己的数据库连接池方案但有些时候若我们的web应用是一个独立的应用程序并不是普通的webjavaee应用而且是单独运行的无须应用服务器的支持
Java EE企业级软件开发
JDBC与MySQL数据库
2014 洛阳师范学院 吕延庆
使用JDBC API访问数据库
(5)关闭相关连接 操作数据库完毕后,需要关闭相应连接以释放 资源,具体方法如下。
//关闭ResultSet实例rs rs.close(); //关闭Statement实例statement statement.close(); //关闭Connection实例con con.close();
数据库连接池简介
在实际应用开发中,如果JSP、Servlet等使用JDBC直 接访问数据库中的数据,每一次数据访问请求都必须 经历建立数据库连接、操作数据和关闭数据库连接等 步骤。
连接并打开数据库是一件既消耗资源又费时的工作。 如果频繁发生这种数据库操作,系统的性能必然会急剧下降 ,甚至会导致系统崩溃。 所谓数据库连接池,就是在一个虚拟的池中,预先创建好一 定数量的Connection对象等待客户端的连接,当有客户端连 接时,则分配一个空闲的Connection对象给客户端连接数据 库;当这个客户端请求结束时,则将Connection对象归还给 池中,用来等待下一个客户端的访问。
jdbc基本使用步骤_概述及解释说明
jdbc基本使用步骤概述及解释说明1. 引言1.1 概述在开发数据库应用程序时,我们经常需要与数据库进行交互。
Java Database Connectivity(JDBC)是Java平台提供的一种标准API,它允许我们通过Java 程序连接和操作各种类型的数据库。
JDBC提供了一组接口和类,使得开发者可以很方便地执行SQL语句、访问和更新数据库中的数据。
本文将介绍JDBC的基本使用步骤,并对每个步骤进行详细解释说明,旨在帮助读者快速入门并掌握JDBC编程技巧。
1.2 文章结构本文共分为五个部分,具体内容如下:第一部分是引言部分,在这部分中我们将对文章的整体内容进行概要介绍,并说明本文的目的和意义。
第二部分是JDBC基本使用步骤,包括连接数据库的准备工作、加载JDBC驱动程序以及建立数据库连接等。
第三部分是JDBC基本操作示例,我们将通过插入数据、查询数据和更新数据等示例来演示JDBC的基本操作。
第四部分是关于JDBC异常处理和事务管理的内容,我们将介绍异常处理机制、事务管理概念及其使用方法,并探讨数据库连接池在实际应用中的使用场景和优势。
最后一部分是结论部分,我们将总结文章的内容与意义,并进一步探讨JDBC在实际应用中的价值与局限性,展望未来JDBC的发展方向或相关趋势。
1.3 目的本文旨在帮助读者全面了解和掌握JDBC的基本使用步骤。
通过清晰地介绍每个步骤的具体操作和相关概念,读者可以学会如何连接数据库、执行SQL语句以及处理异常和事务等常见操作。
文章还将探讨JDBC在实际应用中的价值与局限性,并对未来JDBC的发展趋势进行展望,使读者能够更好地利用JDBC技术开发高效、稳定的数据库应用程序。
2. JDBC基本使用步骤:2.1 连接数据库的准备工作:在进行JDBC操作之前,需要确保以下几个方面的准备工作:- 确保已经安装了适当的数据库服务器,并且运行正常。
- 确认数据库服务器的连接地址、端口号以及数据库名称等信息。
实验8-jdbc数据库访问
实验8 JDBC访问数据库一、实验目的1. 掌握使用传统的方法访问数据库;2. 掌握使用数据源的方法访问数据库。
二、实验原理数据库应用是Web应用开发的一个重要应用。
Web应用程序访问数据库有两种方法:传统的方法和使用JNDI数据源的方法。
传统方法访问数据库的步骤是:①加载数据库驱动程序;②建立连接对象;③创建语句对象;④获得结果集;⑤关闭有关连接对象。
使用数据源访问数据库的步骤是:①配置数据源(局部数据源或全局数据源);②通过JNDI机制查找命名数据源;③通过数据源对象创建连接对象;④其他与传统方法一致。
三、实验内容与步骤(一)使用传统方法通过JSP页面访问数据库【步骤1】创建数据库。
假设在PostgreSQL建立了一个名为bookstore的数据库,在其中建立books表,代码如下:CREATE TABLE books (bookid character(5) PRIMARY KEY, --书号title varchar2(80), --书名author character varying(20), --作者publisher character varying (40), --出版社price real --价格);向books表中插入几条记录,代码如下:INSERT INTO books VALUES('204','Head First Servlets & JSP', 'Bryan Basham', '中国电力出版社',98.00);INSERT INTO books VALUES('201', 'Servlets 与JSP 核心教程', 'Hall Marty','清华大学出版社',45);INSERT INTO books VALUES('202', 'Tomcat与Java Web 开发技术祥解', '孙卫琴', '机械工业出版社',45);INSERT INTO books VALUES('203', 'JSP 应用开发技术', '柳永坡','人民邮电出版社',52);INSERT INTO books VALUES('205', 'J2EE 1.4 编程指南', 'Spielman Sue','电子工业出版社',68);注意:需要将数据库的JDBC驱动程序安装到应用程序的WEB-INF\lib目录中。
浅谈JDBC数据库连接
扩展 了 Jv a a的 功 能 。
F r DB X iX s l re.a。注 意 , o C Lb msqs v rjr J e 字符 串“ ; .” 必 不 可 少 , 则 会 出 现 异 常 : E c pin i h ed 否 “ x e t n t ra o
机 构的优化设计 [] 黑龙 江八 一农垦大 学学报 ,0 4 J. 20 ,
1 4): 3 4 6( 4 — 5.
对 实现 近似 直线 运 动 的四杆机 构进 行优 化 。在上 述
实 例 中可 以看到 , 可 能 在 一个 相 同 的机 构 中同 时 不 得 到最 优直 线 和最 小 速度 误 差 , 可 以根 据 设计 需 但
的方 法 。也 可 以 说 J B D C是 连 接 数 据 库 的 一 套 标
基 于 J B (a aD t aeC n et i ,a a数据 D C Jv aaB s o n ci t J v vy
库连 接 )的 结 构 和 应 用 模 式 , 一 种 可 用 于 执 行 是 S S r cu e ey L n u g , 构 化 查 询 语 QI( tu t rd Qu r a g a e 结 言) 语句 的 Jv I Ap l ainP o rmmigI — a aAP ( pi t r ga c o n n trae 应 用程 序 编 程接 口) 由一 些 J v 语 言 编写 efc , , aa 的类 和 接 口组 成 。通 过 使 用 J B 开 发 人 员 可 以 D C,
写 一 次就 能移 植 到各种 驱 动程 序上 , 用程 序不 变 , 应
S S r eDrv r ) QL e v r ie ” 。
jdbc连接参数
jdbc连接参数JDBC(JavaDatabaseConnectivity)是一种程序开发技术,用于允许Java程序访问关系型数据库。
它提供了Java API,用于发出SQL 查询,插入,更新和删除,从关系型数据库中检索数据。
JDBC API是Java SE的一部分,但是UTF-8是“应用程序访问数据库的标准”。
JDBC连接参数是由开发人员提供给JDBC驱动程序的一组数据,用于与数据库服务器建立连接。
JDBC连接参数通常包括:数据库URL,用户名和密码,使用的驱动程序和可选参数,以及是否要使用SSL。
时候,我们还需要一些更详细的参数,如登录超时时间,最大连接数,最大缓冲区大小等等。
数据库URL是JDBC连接参数中最重要的一个参数,它是一个字符串,用于指定数据库服务器的位置,以及特定的数据库的名称。
式如下: jdbc:/[域名]:[端口号]/[数据库名称]。
用户名和密码是通过JDBC连接参数提供的另一个重要参数。
户名和密码用于确定用户是否具有访问数据库服务器的权限。
可选参数是一些可以选择设置的参数,它们可以提高JDBC应用程序的性能,并确保安全性。
例如,可以使用可选参数来指定连接超时时间,允许的最大连接数,最大缓冲区大小等。
最后,是否要使用SSL连接也是JDBC连接参数中的一个关键参数。
果要使用SSL,那么还需要提供SSL证书和密钥文件,以及一些可选参数,比如SSL证书和密钥的类型,应用的哈西摘要算法等。
因此,对于开发人员来说,设定JDBC连接参数是一项重要的工作。
果参数设置不当,将可能导致连接失败,或者使用不当将可能导致安全性问题。
另外,如果要使用数据库连接池,还需要设置数据库连接池的参数,比如连接超时时间,最大连接数,最小连接数,最大活动连接数,最大空闲时间等。
总而言之,JDBC连接参数非常重要,因此,开发人员应该认真考虑连接参数的设置,确保连接的正确性和安全性。
外,应该根据实际情况,灵活调整参数,以获得最佳性能。
基于轻量级J2EE架构的研究生教育管理系统
第29卷第6期2008年12月华 北 水 利 水 电 学 院 学 报Journa l of Nort h China Institut e of W ate r Conservancy and Hydroe l ec tric Powe rVol 129No 16Dec .2008收稿日期5基金项目河南省重点科技攻关资助项目高校学生综合管理评价系统()作者简介张愿章(63—),男,河南扶沟人,副教授,主要从事数学与计算机应用方面的研究文章编号:1002-5634(2008)06-0058-03基于轻量级J2EE 架构的研究生教育管理系统张愿章,张 斌(华北水利水电学院,河南郑州450011)摘 要:针对传统的J2EE 开发存在的问题,介绍了3个开源框架Struts,H iberna t e,Sp ri ng,并把它们无缝整合作为一种轻量级架构应用到研究生教育管理系统中,从而提高了系统代码的重用性、开发效率,及系统的扩展和维护性.关键词:Struts;Hibernate;S p ring;J2EE;研究生教育管理系统中图分类号:TP331 文献标识码:A 近几年来,随着我国高等教育的快速发展,研究生培养规模不断扩大,各项管理工作全面、复杂、繁琐和细致.现在的学生管理系统大都是针对本科生的.研究生教育管理系统是面向高校硕博研究生教育与学位管理的综合系统,功能上包含各种研究生的招生管理、导师管理、学籍管理、培养管理、学位管理、教学评价、后台管理及信息中心等环节.笔者基于J2EE 技术平台设计的研究生教育管理系统是,符合基于组件的思想,可从根本上提高软件的效率和质量,提高开发大型软件系统的成功率,同时可以实现分布性、异构性、安全性、独立性等功能[1].1 轻量级的J2EE 技术J2EE 技术具有标准化、模块化、层次性及与平台无关性等诸多优点,被确定为研究生教育管理系统开发的首选技术.传统J2EE 表现层一般采用JSP /Serv 2let 的开发模式,造成显示、业务和数据的高度耦合;业务逻辑层集成通常采用EJB 组件实现,但EJB 是一种重量级的分布式应用组件,过分依赖容器,内聚性强,Entity B ean 的数据持久性管理方案比较复杂,耗费资源等,故采用轻量级的J2EE 架构.1.1 S trut s 框架Struts 框架是基于J2EE 的开源框架,是MVC (Mode l -Vie w -Contr oller )体系的具体实现.MVC开发模式体现了系统的层次性、结构性和功能性,大大减少了系统各部分的耦合度,易于项目开发和维护升级,能充分满足W eb 开发的需要[2].1.2 H iberna te 框架H ibe r na te 框架是一个优秀的开放源码的Java 对象持久层轻量级封装框架,它对JD BC 进行了轻量级的对象封装,提供了强大和高性能的对象到关系型数据库的持久服务,可以采用面向对象的设计进行持久层开发.通过写配置文件把数据库中的表映射为Java 类,可方便地采用面向对象编程来操纵数据库[3].1.3 Spr i ng 框架Spring 框架是一个为解决企业应用开发的复杂性由Rod Johnson 创建的开源框架[4],它是一个分层架构,由7个定义良好的模块组成.Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理bean 的方式,如图1所示.1.核心容器:提供S p ring 框架的基本功能.其主要组件是B eanFactory,它是工厂模式的实现.BeanFactory 使用控制反转(I OC )模式将应用程序的配置和依赖性规范与实际的应用程序代码分开.2.Spring 上下文:是一个配置文件,向S p ring 框架提供上下文信息,包括企业服务.3.S pring AOP .通过配置管理特性,Spring A O P:2008-0-21::072102210020.:19.模块直接将面向方面的编程功能集成到了Spring 框架中,可以很容易地使S p ring 框架管理的任何对象支持AOP .该模块为基于Spring 的应用程序中的对象,提供了事务管理服务,且依赖EJB 组件可以将声明性事务管理集成到应用程序中.图1 Spr i ng 模块及功能4.S p ring DAO .JDBC DAO 抽象层提供有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息,简化错误处理,极大地降低需要编写的异常代码数量.Spring D AO 面向JDBC 的异常遵从通用的DA O 异常层次结构.5.Spring OR M.S p ring 框架插入了若干个ORM 框架,从而提供了OR M 的对象关系工具,其中包括JDO,H ibernate 和i B atis S QL Map,所有这些都遵从Sp ring 的通用事务和DA O 异常层次结构.6.S p ringW eb 模块.Web 上下文模块建立在应用程序上下文模块之上,为基于W eb 的应用程序提供了上下文.所以,Spring 框架支持与Jakarta Struts 的集成.W eb 模块简化了处理多部分请求以及将请求参数绑定到域对象的工作.7.S p ringMVC 框架.MVC 框架是一个全功能构建W eb 应用程序的MVC 实现.通过策略接口,MVC 框架变为高度可配置,且容纳了大量视图技术,包括JSP,V el oc ity,Tiles,iText 和PO I 等.1.4 框架整合用Struts 框架来架构表示层,用Spring 框架取代EJB 容器来架构业务逻辑层,以Hibernate 框架取代实体B ean,提供具体的数据库处理操作,然后把这些框架无缝整合起来,构成轻量级的J2EE 应用框架,如图2所示.图 系统分层结构图2 轻量级J2EE 框架实现研究生教育管理系统的开发2.1 功能设置研究生教育管理系统包括系统设置、招生就业、学生管理、学科导师、培养管理、学位管理等功能模块,覆盖了招生工作管理、研究生学籍档案、研究生培养工作管理、研究生学位管理、教学评价、后台管理及信息中心等各个环节.1.系统设置.需把所有使用该系统的人员进行分类,设置成不同的角色,根据角色授予不同的使用权限,且可以动态地调整角色的权限.2.招生就业.分为招生管理、数据交互、报名管理、招生就业数据统计、招生基础数据、就业信息等子模块.3.学生管理.分为学籍管理、奖惩管理、组织管理、异动管理等子模块.4.学科导师.分为学科信息查询、学科信息维护、硕士生导师申请管理、导师停招和延招管理、导师信息管理等子模块.5.培养管理.分为培养信息、开课管理、外语管理、实践环节等子模块.6.毕业管理.分为毕业论文管理、论文盲审、毕业证号管理、毕业上报管理等子模块.7.学位管理.分为分委会学位管理、校委会学位管理、学位信息管理、发表论文管理、学位信息上报等子模块.2.2 关键实现技术研究生管理系统使用者涉及教师、研究生、教务人员和管理人员等,因此,系统的安全格外重要.采用RBAC 权限机制,通过密码验证进入系统,系统只显示管理员赋给该用户的资源页面,确保用户只能访问自己权限内的数据资源.数据的每一更新系统都记录,用于监控或备查.RBAC 模型如图3所示.图3 RBAC 模型RB 实现的S 配置文件程序<!22根据角色显示用户所拥有的菜单22><!22f B 22>95第29卷第6期张愿章等: 基于轻量级J2EE 架构的研究生教育管理系统 2AC truts :or m ean<f or m 2bean na m e ="m enu Ite m For m "type ="com.nc wu .se m s .struts .f or m.authm ge .MenuIte m 2For m "></f or m 2bean ><!22Acti on 22><acti on pa th ="/m enu"type ="com.nc wu.sem s .struts .acti on.authmge .MenuAc tion"><f or ward na m e ="test"path ="/authmge /men 2u.js p"/></acti on >2.RBAC 实现的Spring 配置文件程序:<bean id ="sessi onFact or y"class ="or g .s p ring 2fr a m e w ork .or m .hibernate3.LocalSessi onFact ory Bean"><p r operty name ="dataSource"><r ef loca l ="t opSample"/></p r ope rty ><p r operty name ="mapp ingR es ources"><list ><va lue >com /nc wu /se m s/vo /authm ge /Menu 2Gr oup.hbm.x m l </value ></list ></p r ope rty ></bean ><bean id ="MenuGr oupD AO "class ="co m.nc 2wu .se m s .dao .authm ge .MenuGr oupD AO "><p r operty name ="sessi onFactor y"><r ef bean ="sessi onFact ory"/></p r ope rty ></bean ><bean id ="Menu Manager"class ="com .nc wu .se m s .service .i mp l .authmge .Menu ManagerI m pl"><p r operty name ="menuGr oupDao"><r ef bean ="MenuGr oupDAO"/></p r ope rty ></bean ></beans >3.实现流程.Struts 框架接收用户的请求menu .do,根据配置信息调用控制层的实例MenuActi on 的相关方法,取得封装在m enuIte m For m 中请求参数,并从Spring B ean 容器中获取业务层接口Menu Manager 的一个实例Menu ManagerI mp l .在S p ring Bean 容器初始化Menu Manager I m p l 实例时会根据id ="MenuI ue mDA O "获得Menu I temDAO 的一个实例.MenuManage rI m p l 实例会调用MenuGr oupD 2A O 实例的方法完成对数据库查询,返回操作结果.MenuActi on 的相关方法返回Acti onFor wa r d 对象,转发给Ac tionFor ward 指定的用户菜单m enu.jsp.3 结 语采用Struts +Spring +H ibe r nate 轻量级的架构,控制层、业务层和持久层之间先规划接口,然后各层独立开发,提高了系统的松耦合性,利于以后的扩展和维护.参 考 文 献[1]张国平,万仲保,刘高原.基于轻量级J2EE 框架信息发布系统的设计与实现[J ].华东交通大学学报,2007(1):71-72.[2]编著责任者不详.The Apache Sof t w are Foundati on,struts 21.3.92docs (200422007)[E B /OL ].[2008204225].http://struts /struts 21.3.9/d oc s .[3]夏昕,曹晓钢,唐勇.深入浅出Hibe rnate [M ].北京:电子工业出版社,2007:53-54.[4]Rod Johns on,Juergen Hoelle r,Alef A rendsen .S p ri ng 2frame 2work 22.5_refe rence (200422007)[E B /OL ].[2008204225].http://springframework .org/.[5]李振杰,陈雄,王军.JSP 网站开发典型模块与实例精讲[M ].北京:电子工业出版社,2006:411.The Gra dua te Educa t i on M ana ge m en t Syste m Ba sed on the L i gh twe i gh t J2EE Fram eworkZHANG Yuan 2zhang,ZHANG B in(North China I nstitute of W ater Conserv ancy and Hydr oelectric Po wer,Zhengzhou 450011,China)Ab stra ct:To s olve the existing p r oble m s of the traditi ona l J2EE deve l opment,three open 2s ource fra m e works Struts,H ibernate,Spr i ng,a re i n troduced,and t hey a re integrated as a light we ig ht struc t ure,and app lied t o gradua te educati on m anagement syste m ,the reby the sys 2’y ff y,y x ,K y S ;;S ;;y 06 华 北 水 利 水 电 学 院 学 报 2008年12月t em s code reu sab ilit and deve l op m en t e icien c and s stem e p an si on and m ain tenan ce are rais ed .e w or d s:tru ts H ib ern ate p ring J2E E grad ua te ed uca ti o n m anage m en t s stem。
jdbc教案
JDBC数据库编程及应用课程教案2. 课次为授课次序,填1、2、3……等。
3. 方法及手段如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等。
2. 课次为授课次序,填1、2、3……等。
3. 方法及手段如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等。
2. 课次为授课次序,填1、2、3……等。
3. 方法及手段如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等。
2. 课次为授课次序,填1、2、3……等。
3. 方法及手段如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等。
2. 课次为授课次序,填1、2、3……等。
3. 方法及手段如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等。
2. 课次为授课次序,填1、2、3……等。
3. 方法及手段如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等。
2. 课次为授课次序,填1、2、3……等。
3. 方法及手段如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等。
2. 课次为授课次序,填1、2、3……等。
3. 方法及手段如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等。
2. 课次为授课次序,填1、2、3……等。
3. 方法及手段如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等。
2. 课次为授课次序,填1、2、3……等。
3. 方法及手段如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等。
2. 课次为授课次序,填1、2、3……等。
3. 方法及手段如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等。
2. 课次为授课次序,填1、2、3……等。
3. 方法及手段如:举例讲解、多媒体讲解、模型讲解、实物讲解、挂图讲解、音像讲解等。
javaEE实验报告1---JDBC操作数据库
if(rs!=null){
rs.close();
}
if(ps!=null){
try{
ps.close();
}catch(SQLException e) {
//TODOAuto-generated catch block
e.printStackTrace();
}
}
if(ct!=null){
ps=ct.prepareStatement("insert into TUserLogin values(?,?,?,?,?)");
ps.setString(1,"12");
ps.setString(2,"mary");
ps.setString(3,"123456");
ps.setString(4,"3");
年级:12
实验日期:2014-3-19
姓名:陈小斌
学号:03
班级:2班
实验名称:JDBC操作数据库
实验序号:实验一
成员人数:1
一、实验目的及要求
实验目的:
1、学习JDBC操作数据库的编程方法;
2、了解MyEclipse导入数据库驱动包的方法;
3、掌握Microsoft SQL Server 2008数据库的建立方法;
insert into TUserLogin values(3,'wl3','123456',1,'wl3@')
insert into TUserLogin values(4,'wl4','123456',1,'wl4@')
第五章JDBC数据库编程基础知识
第五章JDBC数据库编程基础知识数据库开发在当前的Web开发与应用中占有着十分重要的地位,信息科技进步的日新月异,实际应用基本都是对数据的保存,加工和处理,所以应用软件的开发离不开数据库知识。
鉴于数据库操作的重要性,本章就此技术进行详细的介绍,以方便大家学习使用。
Java提供的JDBC(Java Database Connectivity)使得我们在数据库编程中如鱼得水,实现操作平台独立以及供应商独立的目标。
本章中,我们会首先搭建起JSP开发数据库环境,然后对SQL数据库操作语言进行简单介绍,再通过具体的示例,让读者整体了解和掌握此项技术。
5.1 JDBCJDBC是Java数据库编程的总称,是JDK重要组成部分,指java.sql包中提供的所有支持数据库编程的API类。
JDBC同时提供对第三方数据库提供商在编写驱动软件时遵循的协议和规范。
JDBC通过drivers与数据库通讯和交流,驱动软件翻译Java程序中对数据库访问的代码,使之成为数据库语言,同时,当数据库将数据或信息传给Java程序,驱动软件又将其翻译为Java语言的代码和数据。
当前主流的数据库提供商有很多,如IBM的DB2,微软的SQL Server,MySQL,甲骨文的Oracle等。
当要添加数据到数据库时,不同数据库中添加操作使用的程序可能都不尽相同,是否就意味着必须针对不同的数据库编写相应的程序呢?实际上,根本无需如此麻烦,Java提供的驱动软件称为JDBC/ODBC(Open Database Connectivity,开放数据库连接协议)桥,通过这个ODBC作为我们存取数据库的接口,可以轻易的存取不同数据库。
ODBC最初是MS公司提供的数据库编程协议模式,现成为JDK中java.sql包的数据库驱动软件。
JDBC包含了“应用程序”(Application)、“驱动管理器”(Driver Manager)、“驱动程序”(Driver)、“数据来源”(Data Sources)4个要素,关系如下图5-1所示。
达梦接口编程实例——JDBC 篇
DM JDBC 是 DM 数据库的 JDBC 驱动程序,能够支持基本 SQL 功能的通用低层应用程序编 程接口,支持一般的 SQL 数据库访问。DM JDBC 驱动程序属于第 4 类纯 Java 驱动程序,即 属于 Native-protocol pure Java 驱动程序,它直接将 JDBC 请求转换成 DM 数据库协议所能 接受的请求,并将数据库返回的结果转换为用户能够识别的形式发送给用户。
Class.forName(jdbcString);}
catch (ClassNotFoundException e) {throw new SQLException("Load JDBC Driver Error : " +
e.getMessage());}
catch(Exception ex) {throw new SQLException("Load JDBC Driver Error : " + ex.getMessage());}
然后我们介绍下 JDBC 是如何来完成对数据库的访问? JDBC 有一个非常独特的动态连接结构,它使得系统模块化。使用 JDBC 来完成对数据 库的访问包括以下四个主要组件:Java 的应用程序、JDBC 驱动器管理器、驱动器和数据源。 其中,驱动程序管理器为应用程序提供了统一的调用接口,驱动程序管理器使用与特定数据 库相匹配的驱动程序来访问该数据库,实现了应用程序独立于特定数据库。程序员编程时, 可以不关心它所要操作的数据库是哪个厂家的产品,从而提高了软件的通用性。只要系统上 安装了正确的驱动器组,JDBC 应用程序就可以访问其相关的数据库。
1.启动 DM4服务器。可以点击:开始-所有程序-DMDBMS-达梦服务器,或直 接启动:C:\DMDBMS\dm\dmServer\ dmServer.exe(默认路径);
jdbc使用步骤
jdbc使用步骤JDBC使用步骤JDBC(Java Database Connectivity)是Java程序连接数据库的一种标准接口。
通过JDBC,我们可以在Java程序中访问和操作各种数据库。
下面将介绍使用JDBC连接数据库的步骤。
1. 导入JDBC相关的包在Java程序中使用JDBC,首先需要导入JDBC相关的包。
通常使用的包包括java.sql和javax.sql。
可以使用import语句导入这些包,以便在代码中使用JDBC提供的类和接口。
2. 加载数据库驱动程序在使用JDBC之前,需要先加载数据库驱动程序。
驱动程序是一个Java类,用于与特定的数据库进行通信。
不同的数据库有不同的驱动程序,需要根据使用的数据库选择相应的驱动程序。
可以使用Class类的forName()方法来动态加载驱动程序。
3. 建立数据库连接在加载了数据库驱动程序之后,就可以建立与数据库的连接了。
首先需要创建一个Connection对象,该对象表示与数据库的物理连接。
可以使用DriverManager类的getConnection()方法来建立数据库连接。
该方法接收数据库的URL、用户名和密码等参数,返回一个代表数据库连接的Connection对象。
4. 创建Statement对象在建立了数据库连接之后,就可以创建Statement对象了。
Statement对象用于向数据库发送SQL语句并接收执行结果。
可以通过Connection对象的createStatement()方法来创建Statement对象。
5. 执行SQL语句通过Statement对象可以执行SQL语句。
可以使用Statement对象的executeUpdate()方法执行更新操作(如插入、删除、修改),该方法返回一个整数,表示受影响的行数。
可以使用Statement对象的executeQuery()方法执行查询操作,该方法返回一个ResultSet对象,表示查询结果集。
实验五 JDBC编程
实验五JDBC编程一、实验目的1、掌握JDBC数据库编程的一般流程2、掌握数据库的增删改查方法3、能够熟练的使用JDBC技术开发简单的管理信息系统(MIS);二、实验内容与要求完成本实验时,注意以下几个问题:1、数据库操作基本步骤是:①加载数据库驱动程序:Class.forName("驱动类名");②创建数据库连接对象:Connection conn = DriverManager.getConnection(url, uid, pwd);③创建SQL命令执行对象Statement stmt = conn.createStatement();④执行sql语句(Execute the SQL),分为查询和更新两种操作:查询操作,执行SQL的SELECT命令,返回查询结果记录集对象:ResultSet rs = stmt.executeQuery(sql);更新操作,执行DELETE、UPDA TE、INSERT等SQL命令:stmt.executeUpdate(sql);2、对查询命令所返回的记录集对象,使用rs.next()等方法移动记录指针,并使用rs.getXXX(字段)方法读取记录字段内容。
3、数据库连接、SQL命令记录读取、记录字段的提取均需要进行异常处理。
编程题创建数据库db,并建立一个student数据表,表结构如图所示。
设计一个或者多个类,通过面向对象的方法实现对数据库的连接以及对数据表student记录的增删改查。
即实现学生课程成绩的增加、删除、修改和查询。
主要程序代码提示:a) 导入数据源访问和处理的API包:import java.sql.*;b)Access数据库连接字:"jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=" + 数据库文件路径及文件名;c) 建立数据库连接:Connection conn = null; //conn和stmt为成员变量Statement stmt = null;void conn() //方法功能:完成数据库连接{ String dburl = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ= C:\\db1.mdb";try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //加载数据库驱动程序}catch(ClassNotFoundException e){ System.out.println("加载数据库驱动程序错误!");}try{ conn = DriverManager.getConnection(dburl, "", ""); //创建数据库连接对象stmt = conn.createStatement(); //创建SQL命令执行对象}catch(SQLException e){ System.out.println("创建数据库连接错误!");}}d)实现数据库查询:void selectAll() //方法功能:数据表查询{ ResultSet rs; //记录集对象String str = "SELECT * FROM student"; //SQL命令try{ rs = stmt.executeQuery(str); //执行SQL命令返回一个记录集System.out.println("ID\t姓名\t班级\t课程\t成绩");while (rs.next()) // 读取每一条记录{System.out.print(rs.getLong("id") + "\t");System.out.print(rs.getString("name") + "\t");System.out.print(rs.getString("class") + "\t");System.out.print(rs.getString("lesson") + "\t");System.out.print(rs.getFloat("score") + "\n");}conn.close();}catch(SQLException e){ System.out.println("访问数据表错误!");}}三、实验报告1、实验完成后,检查是否达到试验目的。
实验3 JDBC数据库操作
实验3 JDBC数据库操作
一、实验目的
1.掌握JDBC数据库操作。
2.复习Swing图形用户界面程序的编写。
二、实验环境
JDK1.7+Eclpise3.2
三、实验内容
1、编写一个程序,用一个JTable组件显示数据库shop中goods表的内容。
界面如下
点击相应的按钮完成相应的功能。
例如点击插入按钮,弹出对话框
输入数据,按确定按钮可以把记录插入数据库中,同时在JTable组件中刷新数据。
2、编写一个程序,使用Swing组件添加和查询数据库student中stuphoto表的内容。
界面
如下,点击添加菜单项,在添加学生信息界面添加学生:
点击添加学生信息按钮,添加一个学生,添加成功显示对话框:
点击查询菜单项,在查询学生信息界面查询学生信息:
四、实验结果
五、实验总结:。
实验四 JDBC访问数据库
实验四JDBC访问数据库一、实验目的理解并掌握JDBC连接数据库的常用方法及其使用要点。
二、实验内容与步骤1、新建Web Project,把MySQL的驱动程序部署到“/WEB-INF/lib/”下;建立数据库。
在MySQL数据库中新建book数据库,创建bookinfo数据表和info数据表,并从数据库中加入几条记录,其表结构如下:2、新建index.jsp页面,实现从数据库中读取bookinfo表中的图书信息列表,并且每条记录后都有两个超链接:修改、删除;除此之外,主页内有一个超链接是用来添加图书信息用的;界面如下:3、新建addbook.html和addbook.jsp实现图书添加功能,添加成功重定向到index.jsp页面,的界面如下:4、新建editbook.jsp和update.jsp实现图书编辑功能,编辑成功重定向到index.jsp页面;5、新建delbook.jsp实现删除图书信息功能,删除成功重定向到index.jsp 页面;点击某条记录的删除超链接删除图书信息(第6条记录)界面以及删除后重定向到主页的界面如下:6、部署library ;7、开启Tomcat 服务器,在浏览器中先输入http://localhost:8080/ 看到欢迎界面后输入项目名和要访问的jsp 文件,如http://localhost:8080/library/index.jsp ,进行测试。
三、预备知识1、SQL 介绍——常见SQL 语句(说明返回结果)1) 创建数据库create database book2) 创建表bookinfo :create table bookinfo(列名1 类型 属性,列名2 类型 属性……)create table bookinfo(id int auto_increment not null primary key,bookname varchar(45) not null,author varchar(45),intro varchar(45);3) 向表中插入数据insert into 表(列名1,列名2……) values(值1,值2……)insert into bookinfo(bookname,author,intro) values ('漫步人生路','邓丽','很好看');4) 查询表中数据select 列 from 表 where 子句Select * from bookinfoSelect bookname from bookinfoSelect bookname,author,intro from bookinfo where id=65)删除表中数据 delete from 表 where子句Delete from bookeinfo where id=66)修改数据(更新表中数据) update 表 set 列名=新值 where子句Update bookinfo set author =’周杰伦’ where id=62、JDBC技术介绍1)编程步骤1——装载驱动程序方法:使用oracle 的驱动程序:Class.forName(“oracle.jdbc.driver.OracleDriver”);使用DB2 的驱动程序:Class.forName(“com.ibm.db2.jdbc.app.DB2Driver”);经过以上其中之一语句的声明后,驱动程序就会自动地加载。
关键技术JSP与JDBC应用详解教学设计
关键技术JSP与JDBC应用详解教学设计1. 教学目标1.理解JSP和JDBC的基本概念2.掌握JSP在Web开发中的应用场景和优势3.掌握JDBC在Java和Web开发中的应用场景和优势4.能够基于JSP和JDBC完成简单的Web开发项目2. 教学内容2.1 JSP基础1.JSP介绍2.JSP开发环境的搭建3.JSP标签和脚本语言4.JSP开发过程介绍5.JSP开发实例演示2.2 JDBC基础1.JDBC介绍2.JDBC开发环境的搭建3.JDBC的基本操作4.JDBC的各类驱动介绍5.JDBC开发实例演示2.3 JSP和JDBC的应用1.JSP和JDBC的基本结合应用场景2.基于JSP和JDBC的Web开发实例演示3.实现简单的用户登陆和数据库查询的项目演示3. 教学方法1.课堂讲授:教师对JSP和JDBC的基础和应用进行讲解2.实践操作:学生通过实践项目,巩固对JSP和JDBC的掌握程度3.问题讨论:教师与学生一起探讨学习JSP和JDBC中遇到的问题及解决方法4. 教学资源1.JSP和JDBC相关的阅读资料和学习视频2.开发环境的安装包和使用说明文档3.基于JSP和JDBC的Web开发实例演示代码5. 教学评估方法1.课堂测验:通过课堂测验对学生对JSP和JDBC的基础进行测评2.项目评估:通过学生实践项目的完成程度对学生对JSP和JDBC的应用水平进行评估3.问题解决能力:通过学生的问题讨论能力和解决能力对学生的掌握程度进行评估6. 教学反思1.教学内容和安排是否合理2.教学方法和资源是否适合学生的学习习惯3.学生对JSP和JDBC的掌握程度是否达到预期的要求7. 参考文献1.《Java Servlet和JSP编程》2.《Head First Servlets and JSP》3.《Java数据库编程》4.《JDBC技术详解》。
JDBC介绍课件
存储过程调用
存储过程:预先编 译好的SQL语句,
可以重复使用
示例:调用存储过 程获取用户信息
调用存储过程:通 过JDBC API调用
存储过程
注意事项:存储过 程的参数和返回值 类型需要与JDBC
更新数据
使用Statement 对象执行SQL更新
语句
使用 PreparedStatem ent对象执行SQL
更新语句
使用 CallableStateme nt对象执行存储过
程进行更新
使用JDBC事务管 理机制确保数据更
新操作的原子性
JDBC高级特性
事务处理
事务的概念:一组 SQL语句,要么全 部执行成功,要么 全部失败
API匹配
优点:提高性能, 减少网络流量,提
高安全性
谢谢
JDBC操作数据库
查询数据
01 使用Statement对象
执行SQL查询语句
02 使用ResultSet对象
接收查询结果
03 遍历ResultSet对象
获取查询结果
关闭Statement和
04 ResultSet对象以释
放资源
插入数据
1 使用Statement对象执行insert语句 2 使用PreparedStatement对象执行预编译的insert语句 3 使用CallableStatement对象执行存储过程 4 使用批量插入提高插入效率 5 使用事务处理保证数据一致性 6 使用异常处理机制处理可能出现的异常情况
JDBC API编写的 Java应用程序,用 于访问和管理数据库
JDBC
Java Application Type 2 JDBC Driver SQL Command Result Set
Native Database Library
Native-API driver 将 JDBC 命令转换为特定数据 库系统的本地库方法。 与 Type1 相类似,必须先 安装特定数据库的库方法 (二进制代码,非 Java )。
数据源
数据源
数据源
ODBC
J2EE Programming Lectures
copyright © 2005, MATHEWS MA
J2EE Programming Lectures
JDBC —— 基础
与 ODBC 相类似, JDBC 接口( API )也包括两个层次:
面向应用的 API : Java API ,抽象接口,供应用程序开发人员使用 (连接数据库,执行 SQL 语句,获得结果)。 面向数据库的 API : Java Driver API ,供开发商开发数据库驱动 程序用。
ResultSet
Establish Link to DB
Driver
Result (tuples)
Database
J2EE Programming Lectures
copyright © 2005, MATHEWS MA
J2EE Programming Lectures
JDBC —— 基础:基本工作步骤
Middleware Space
Proprietary Protocol
Database
J2EE Programming Lectures copyright © 2005, MATHEWS MA
简述jdbc编程的6个开发步骤
简述jdbc编程的6个开发步骤
1.装载数据库驱动程序:在JDBC编程中,首先需要加载数据库驱动
程序,以便能够使用JDBCAPI来访问数据库。
可以通过使用JDBC驱动程
序提供商提供的类加载器来装载驱动程序。
2. 建立数据库连接:使用DriverManager类的getConnection方法
建立数据库连接。
在此过程中要定义数据库的访问URL,用户名和密码。
3. 创建和执行SQL语句:JDBC提供了执行SQL语句的接口。
可以使
用Statement接口来执行简单的SQL语句,使用PreparedStatement接口
来执行带参数的SQL语句,使用CallableStatement接口来执行存储过程。
4. 处理查询结果:当执行查询语句时,需要使用ResultSet接口来
处理查询结果。
ResultSet接口提供了访问结果集中数据的方法。
5. 释放资源:当使用完JDBC资源时,需要显式地释放它们。
一般情
况下,需要关闭ResultSet、Statement、Connection等资源。
6. 处理异常:在JDBC编程中,异常处理也是必不可少的。
JDBC API
要求使用try-catch块或者throws语句处理可能出现的异常。
处理异常
可以提高程序的稳定性和可靠性。
jdbc数据库
1引言Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。
JDBC也是Sun Microsystems的商标。
我们通常说的JDBC 是面向关系型数据库的。
2程序类型和API概述程序类型编辑JDBC驱动程序共分四种类型:类型1JDBC-ODBC桥这种类型的驱动把所有JDBC的调用传递给ODBC,再让后者调用数据库本地驱动代码(也就是数据库厂商提供的数据库操作二进制代码库,例如Oracle中的oci.dll)。
类型2本地API驱动这种类型的驱动通过客户端加载数据库厂商提供的本地代码库(C/C++等)来访问数据库,而在驱动程序中则包含了Java代码。
类型3网络协议驱动这种类型的驱动给客户端提供了一个网络API,客户端上的JDBC驱动程序使用套接字(Socket)来调用服务器上的中间件程序,后者在将其请求转化为所需的具体API调用。
类型4本地协议驱动这种类型的驱动使用Socket,直接在客户端和数据库间通信。
JDBC API主要位于JDK中的java.sql包中(之后扩展的内容位于javax.sql 包中),主要包括(斜体代表接口,需驱动程序提供者来具体实现):DriverManager:负责加载各种不同驱动程序(Driver),并根据不同的请求,向调用者返回相应的数据库连接(Connection)。
Driver:驱动程序,会将自身加载到DriverManager中去,并处理相应的请求并返回相应的数据库连接(Connection)。
Connection:数据库连接,负责与进行数据库间通讯,SQL执行以及事务处理都是在某个特定Connection环境中进行的。
可以产生用以执行SQL 的Statement。
Statement:用以执行SQL查询和更新(针对静态SQL语句和单次执行)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JDBC与Java数据库开发姚羽编写yaoyu@Module 1 JDBC Overview东北大学姚羽yaoyu@ 3N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发The Tiered Database ModelOne-tier databases:•Not readily extensible•Not easily accessible through anetwork东北大学姚羽yaoyu@ 4N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发The Tiered Database ModelTwo-tier databases:•Mirroring•Caching•Proxy services•Secure transactions东北大学姚羽yaoyu@ 5N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发The Tiered Database Model Three-tier databases:东北大学姚羽yaoyu@ 6N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发What Is the JDBC API?JDBC: Java Data Base ConnectivityThe JDBC API is:A standard data access interface to a widerange of relational databasesA set of classes and interfaces that are partof the Java programming language东北大学姚羽yaoyu@ 7N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发What Is the JDBC API?JDBC enables:Connecting to a databaseSending a String SQL query to thedatabaseProcessing the results东北大学姚羽yaoyu@ 8N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发What Is the JDBC API?The JDBC API has two main parts: Java application developers’interface forJava programming language developersJDBC driver developers’implementationinterfaceThis course concentrates on thedeveloper interface.东北大学姚羽yaoyu@ 9N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发JDBC Driver Interfacejava.sql.Connectionjava.sql.Statementjava.sql.PreparedStatement java.sql.CallableStatementjava.sql.ResultSetjava.sql.Driver东北大学姚羽yaoyu@ 10N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发DriversAre a collection of classes implementingJDBC classes and interfacesProvide a class that has implementedthe java.sql.Driver interface东北大学姚羽yaoyu@ 11N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Drivers东北大学姚羽yaoyu@ 12N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Drivers东北大学姚羽yaoyu@ 13N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发JDBC-ODBC Bridge Plus ODBC DriverUses existing technologyProvides JDBC access to the databaseusing an existing ODBC driverRequires code to be installed on eachclientIs most appropriate with fewer clientinstallationsHas several potential failure points东北大学姚羽yaoyu@ 14N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发JDBC-ODBC Bridge Plus ODBC Driver东北大学姚羽yaoyu@ 15N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Native API DriverThis type is built on top of a native databaseclient library.The driver translates the JDBC calls into callsto the API of the database client library.The library is distributed by the provider ofthe database management system (DBMS).It does not accomplish the goal of the JDBCAPI, which is cross-platform portability.东北大学姚羽yaoyu@ 16N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Native API Driver东北大学姚羽yaoyu@ 17N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发JDBC-Net DriverThis type communicates with anintermediary server seated between theclient and the database.It uses a network protocol specific tothe intermediary.No native code needs to be installed onthe database client machines.It has the most flexibility.东北大学姚羽yaoyu@ 18N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发JDBC-Net Driver东北大学姚羽yaoyu@ 19N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Native Protocol DriverTranslates JDBC calls directly into thenetwork protocol used by the DBMSAllows direct calls from the client to thedatabaseHas good performance, but no flexibilityfor switching DBMSs东北大学姚羽yaoyu@ 20N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Native Protocol Driver东北大学姚羽yaoyu@ 21N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发JDBC Developer InterfaceThe JDBC API developer interface isdefined in two packages:java.sql–Primary features of JDBC inJava™2 Platform, Standard Edition(J2SE™)javax.sql–Extended functionality inJava™2 Platform, Enterprise Edition(J2EE™)东北大学姚羽yaoyu@ 22N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Classes and InterfacesDriverManager: Manages database drivers andsupports new database connection creationDriver: Represents a specific JDBCimplementationConnection: Is a session with the specificdatabaseStatement, PreparedStatement,CallableStatement: Are containers for executing aSQL statement on a connectionResultSet: Provides access to a table of data东北大学姚羽yaoyu@ 23N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发The java.sql Packagejava.sql.Driverjava.sql.Connectionjava.sql.Statementjava.sql.PreparedStatementjava.sql.CallableStatementjava.sql.ResultSetjava.sql.ResultSetMetaDatajava.sql.DatabaseMetaData东北大学姚羽yaoyu@ 24N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发东北大学姚羽yaoyu@ 25N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发JDBC Programming TasksCreate an instance of a JDBC driverLoad JDBC drivers through jdbc.drivers Register a driverSpecify a databaseOpen a database connectionSubmit a queryReceive results东北大学姚羽yaoyu@ 26N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发The JDBC Flow东北大学姚羽yaoyu@ 27N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Identifying a Database Using a URLA JDBC uniform resource locator (URL):Identifies a database so that the correctdriver can recognize and establish aconnection with itIs determined by vendorContains encoded informationAllows for a level of indirection东北大学姚羽yaoyu@ 28N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Specifying a DatabaseSpecify a URL string:jdbc:subprotocol:subname东北大学姚羽yaoyu@ 29N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Basic URL SyntaxFull URL syntaxjdbc:subprotocol:subname Examplejdbc:odbc:wombat东北大学姚羽yaoyu@ 30N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Basic URL Syntax:subprotocolIs the name of the driver or the type ofdatabase connectivity mechanismIs often odbcCan be the network naming service东北大学姚羽yaoyu@ 31N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Using a Network Naming Service as the subprotocolBasic syntaxjdbc:naming_service:data_source_name Examplejdbc:dcenaming:accounts-payable东北大学姚羽yaoyu@ 32N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发The odbc SubprotocolBasic syntaxjdbc:odbc:dataSrcName[;attributeName=attributeValue] Examplejdbc:odbc:fredjdbc:odbc:wombatjdbc:odbc:wombat;CacheSize=20;ExtensionCase=LOWERjdbc:odbc:qeora;UID=kgh;PWD=fooey东北大学姚羽yaoyu@ 33N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Basic URL Syntax: subname Identifies the database东北大学姚羽yaoyu@ 34N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Connecting to a Remote ServerA database on a remote server needs aURL with more information.Syntaxjdbc:subprotocol://hostname:port/subsubnameExamplejdbc:dbnet://wombat:3560/fredModule 2Using JDBC东北大学姚羽yaoyu@ 36N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Creating a Basic JDBC Application Step 1 –Registering a driverStep 2 –Establishing a connection to thedatabaseStep 3 –Creating a statementStep 4 –Executing the SQLStep 5 –Processing the resultsStep 6 –Closing down JDBC objects东北大学姚羽yaoyu@ 37N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Step 1 –Registering a DriverThe driver is used to connect to the database.The JDBC API uses the first driver it finds thatcan successfully connect to the given URL.You can load multiple drivers at the same time.Register a driver:Using the Class loaderInstantiating a driverUsing the jdbc.drivers property东北大学姚羽yaoyu@ 38N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Using the Class LoaderTo communicate with a databaseengine using the JDBC API, create aninstance of the JDBC driver.SyntaxClass.forName(driverName);ExampleClass.forName("oracle.jdbc.driver.OracleDriver");东北大学姚羽yaoyu@ 39N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Instantiating a DriverIf you need an explicit reference to theDriver object, use the new keyword.SyntaxDriver drvRefVar= new DriverConstructor;ExampleDriver drv= new oracle.jdbc.driver.OracleDriver();东北大学姚羽yaoyu@ 40N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Defining the jdbc.drivers Property Define the jdbc.drivers property as a listof driver class names.Syntaxjdbc.drivers=driverName[:driverName] Examplejdbc.drivers=oracle.jdbc.driver.OracleDriver:acme.cool.Driver东北大学姚羽yaoyu@ 41N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Using the -D Option With the java CommandTo use this method, specify the name=valuepair.Syntaxjava -Djdbc.drivers=driverName[:driverName] Examplejava -Djdbc.drivers=oracle.jdbc.driver.OracleDriver:acme.cool.Driver东北大学姚羽yaoyu@ 42N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Choosing the Best Registration ApproachFor each approach, what are theadvantages and disadvantages, andwhy?东北大学姚羽yaoyu@ 43N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Step 2 –Establishing a Connection to the Database1. DriverManager calls getConnection(urlString), whichcalls Driver.connect(urlString).2. The URL is parsed.3. When a driver responds positively to the databaseURL, the DriverManager makes a connection.4. If the driver does not match, null is returned and thenext driver in the vector is checked.5. If a connection is not made, a SQLException isthrown.东北大学姚羽yaoyu@ 44N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Establishing a Connection to the Database东北大学姚羽yaoyu@ 45N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发The DriverManager.getConnection MethodMethodsgetConnection(String url)getConnection(String url, java.util.Properties info)getConnection(String url, String user, String password)SyntaxConnectionconRefVar= DriverManager.getConnection(arguments);ExampleConnection con = DriverManager.getConnection("jdbc:oracle:thin:@:1521:accounts");东北大学姚羽yaoyu@ 46N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发The Driver.connect MethodMakes a direct call to a specific DriverobjectAvoids the problems of standardapproach东北大学姚羽yaoyu@ 47N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发The Driver.connect MethodDriver drv= new oracle.jdbc.driver.OracleDriver();Connection con = null;try{// Pass the connection request directly to THIS driver.// If the connection attempt fails, the application// will NOT try to connect to any other JDBC drivers.con =drv.connect("jdbc:oracle:thin:@:1521:accounts",null);} catch (SQLException exc){// If unable to obtain a connection, take some kind// of recovery action here. Options might include// connecting to an alternate DB, prompting the user// for action, or exiting the application.}东北大学姚羽yaoyu@ 48N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Step 3 –Creating a StatementStatementPreparedStatementCallableStatement东北大学姚羽yaoyu@ 49N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发The Statement ObjectGet a Statement object from theConnection.createStatement method东北大学姚羽yaoyu@ 50N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发The Statement ObjectSyntaxStatement stmtRefVar= conRefVar.createStatement();ExamplesStatement stmt;try {stmt = con.createStatement();} catch (SQLException e) {System.out.println(e.getMessage());}ResultSet rs= stmt.executeQuery("SELECT * FROM customer WHERE ID = ’11’");东北大学姚羽yaoyu@ 51N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Step 4 –Executing the SQL StatementThe SQL statement is passed unalteredto the underlying database connection.The result is a table of data accessiblethrough java.sql.ResultSet.The statement is coupled with thecorresponding ResultSet.东北大学姚羽yaoyu@ 52N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发The Statement InterfaceexecuteQuery(sqlString)executeUpdate(sqlString)execute(sqlString)东北大学姚羽yaoyu@ 53N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发The Statement InterfaceStatement.executeQuery:SyntaxConnection conRefVar=DriverManager.getConnection(urlString);Statement stmtRefVar=conRefVar.createStatement();ResultSet resultsetRefVar=stmtRefVar.executeQuery(sqlString);ExampleConnection con=DriverManager.getConnection("jdbc:odbc:accounts" );Statement stmt = con.createStatement();ResultSet rs= stmt.executeQuery("SELECT* from employees");东北大学姚羽yaoyu@ 54N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Step 5 –Processing the ResultsTo retrieve data from the ResultSetobject, use its assessor methods.Retrieve these values using a columnname or index.A ResultSet:Keeps a cursor pointed to the current rowIs initially positioned before its first row东北大学姚羽yaoyu@ 55N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Step 5 –Processing the ResultsSyntaxwhile (resultsetRefVar.next()) {System.out.println("column: " +resultsetRefVar.getXXXMethod(column));}Examplewhile (rs.next()) {System.out.println();System.out.println("Coffee Name: " + rs.getString(1));System.out.println("Supplier ID: " + rs.getInt(2));System.out.println("Price: " + rs.getFloat(3));System.out.println("Sales: " + rs.getInt(4));}东北大学姚羽yaoyu@ 56N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Step 6 –Closing Down JDBC ObjectsClose down the following:ConnectionStatementResultSettry {rs.close();stmt.close();con.close();}catch (SQLException ex) {ex.printStackTrace();}东北大学姚羽yaoyu@ 58N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发The PreparedStatement ObjectA precompiled SQL statement that ismore efficient than repeatedly callingthe same SQL statementExtends the Statement interface东北大学姚羽yaoyu@ 59N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发The PreparedStatement Object//1private static final PreparedStatement prepStmnt= con.prepareStatement("SELECT* FROM coffeesWHERE cof_name= ?");public boolean prepStatement(float sales, String name){prepStmnt.setString(1, "Espresso");ResultSet rs= prepStmnt.executeQuery();}//2PreparedStatement ps= con.prepareStatement("UPDATE customer SET order_num= ? WHERE cid = ?");ps.setInt(1, 543);ps.setString(2, "0147");int result = ps.executeUpdate();东北大学姚羽yaoyu@ 60N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发PreparedStatement vs Statment //1int i=9;Statement stmt = con.createStatement();int result = stmt.executeUpdate("UPDATE table3 SET m = ‘100’WHERE x = "+i);//2int i=9;PreparedStatement ps= con.prepareStatement( "UPDATE table3 SET m = ‘100’WHERE x = ? ");ps.setInt(1, i);int result = ps.executeUpdate();东北大学姚羽yaoyu@ 61N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发PreparedStatement vs Statment for (int i=0;i<10;i++){Statement stmt = con.createStatement();int result = stmt.executeUpdate("UPDATE table3 SET m = ‘100’WHERE x = "+i);}PreparedStatement ps= con.prepareStatement( "UPDATE table3 SET m = ‘100’WHERE x = ? ");for (int i=0;i<10;i++){ps.setInt(1, i);int result = ps.executeUpdate();}东北大学姚羽yaoyu@ 62N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发The CallableStatement Object Lets you execute non-SQL statementsagainst the databaseExtends PreparedStatement东北大学姚羽yaoyu@ 63N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发The CallableStatement Object String coffeeName= "Espresso";CallableStatement querySales=con.prepareCall("{call return_sales[?, ?]}");try {querySales.setString(1, coffeeName);querySales.registerOutParameter(2, Types.REAL);querySales.execute();float sales = querySales.getFloat(2);} catch (SQLException e){System.out.println("Query failed");e.printStackTrace();}东北大学姚羽yaoyu@ 64N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Comparing Statement Interfaces东北大学姚羽yaoyu@ 65N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Exercise: Using JDBCMySQL-JDBC connection and simple operationClass.forName("com.mysql.jdbc.Driver").ne wInstance();Connection conn=DriverManager.getConnection("jdbc:mysql://localhost/test?user=root&password=123");Module 3 JDBC Advanced Topics东北大学姚羽yaoyu@ 67N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发ExceptionsErrors are usually communicated usingSQLException or SQLWarning.东北大学姚羽yaoyu@ 68N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发The SQLException ClassSQLException can have a list of the followingexception objects:getNextException returns the next SQLExceptiongetErrorCode returns an integer error codegetMessage returns a String error message SQL exceptions occur when:There is a loss of JDBC-server communicationYou format a command incorrectlyYou use an unsupported functionYou reference a column that does not exist东北大学姚羽yaoyu@ 69N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发The SQLWarning ClassGenerated for non-fatal SQL statesChained togetherHas the same methods as SQLException,but uses getNextWarning instead ofgetNextException东北大学姚羽yaoyu@ 70N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发MetadataInformation about data, such asformatting or sizeAccessible through the JDBC API: Database metadataResult set metadata东北大学姚羽yaoyu@ 71N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Database MetadataUse the Connection.getMetaDatamethod.Method returns DatabaseMetaDatareference.Methods to retrieve the informationinclude isReadOnly.东北大学姚羽yaoyu@ 72N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Result Set MetadataUse the ResultSet.getMetaData method.Method returns ResultSetMetaDatareference.Methods to retrieve the informationinclude getColumnCount.东北大学姚羽yaoyu@ 73N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Using TransactionsA transaction is a set of one or more statements that are executed together as a unit.Either all of the statements are executed, or none of the statements is executed.东北大学姚羽yaoyu@ 74N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Using TransactionsDisabling Auto-commit Mode Committing a TransactionCall the Method rollback东北大学姚羽yaoyu@ 75N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Disabling Auto-commit Mode When a connection is created, it is inauto-commit mode.The way to allow two or morestatements to be grouped into atransaction is to disable auto-commitmode.con.setAutoCommit(false);东北大学姚羽yaoyu@ 76N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Committing a TransactionOnce auto-commit mode is disabled, noSQL statements will be committed untilyou call the method commit explicitly.All statements executed after theprevious call to the method commitwill be included in the currenttransaction and will be committedtogether as a unit.mit();东北大学姚羽yaoyu@ 77N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Committing a TransactionmSQLcon.setAutoCommit(false);PreparedStatement stmt = conn.prepareStatement( "UPDATE customer set cust_name=? WHERE ssn= ?");stmt.setString(1, "Hi");for (int i = 0; i < 10; i++) {stmt.setInt(2, i);int j = stmt.executeUpdate();System.out.println(j+" rows affected when i=" +i);}mit();stmt.close();东北大学姚羽yaoyu@ 78N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Call the Method rollbackCalling the method rollback aborts atransaction and returns any values thatwere modified to their previous values.If you are trying to execute one ormore statements in a transaction andget an SQLException, you should callthe method rollback to abort thetransaction and start the transaction allover again.东北大学姚羽yaoyu@ 79N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Transactionstry {con.setAutoCommit(false);Statement stmt = con.createStatement();stmt.executeUpdate("INSERT INTO customer(1011,'XYZ Corporation')");stmt.executeUpdate("INSERT INTO order(21,1011,12.43f)");mit();} catch (SQLException ex) {try {con.rollback();} catch (SQLException ex2){}}东北大学姚羽yaoyu@ 80N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Exercise: JDBC Advanced TopicsA database monitorshow version, go, commit, rollback, quit,reset, …TerminalMonitorFrame.java东北大学姚羽yaoyu@ 81N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发一个监视器java -Djdbc.drivers=com.mysql.jdbc.DriverTerminalMonitor jdbc:mysql://localhost/330insert into student values('1','aa','home1')东北大学姚羽yaoyu@ 82N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Some points//1if( statement.execute(sql) ) {// true means the SQL was a SELECTprocessResults(statement.getResultSet());}//2String.trim();//3How to save the statements: see TerminalMonitorFrame.java东北大学姚羽yaoyu@ 83N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发D:\Java\myjava\330>java -Djdbc.drivers=com.mysql.jdbc.Driver Terminalmonitor jdbc:mysql://localhost/testHOST: localhostuser: rootpassword: 123Connected to jdbc:mysql://localhost/testTM > select * from student2 -> go3 rows selected.----------------------------------------------------------------| sid| sname| address |----------------------------------------------------------------| 1 | aa| home1 || 2 | bb | home2 || 3 | cc | home3 |----------------------------------------------------------------TM > quitConnection closed.东北大学姚羽yaoyu@ 84N o r t he a st e rn Un i ve r si t yY a oY uJDBC与Java数据库开发Concurrency ControlCreating a transaction is handledthrough the Connection interface.In a connection, you can set thetransaction isolation level to determinewhether the following are allowed:Dirty readsNon-repeatable readsPhantom reads东北大学姚羽yaoyu@85N o r t h e a s t e r n U n i v e r s i t y Y aoY u JDBC 与Java 数据库开发Concurrency ControlDirty reads:脏数据事务T1修改某数据,事务T2读取修改后的数据后,T1的操作被撤销,则T1所修改的数据恢复原值。