




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
人民邮电出版社15数据库编程Java程序设计第章C目录ONTENTS15.2数据库基本操作15.3事务处理15.4小结15.1数据库编程基础15.1.1JDBC数据库应用模型15.1.1JDBC数据库应用模型包括应用程序、Applet以及Servlet,这些类型的程序都可以利用JDBC实现对数据库的访问。JDBC在其中可以请求与数据库建立连接、向数据库发送SQL请求、处理查询、错误处理等操作。
JDBC驱动程序管理器动态地管理和维护数据库查询所需要的驱动程序对象,实现Java程序与特定驱动程序的连接。它可以为特定的数据库选取驱动程序、处理JDBC初始化调用、为每个驱动程序提供JDBC功能的入口、为JDBC调用传递参数等。2、JDBC驱动程序管理器1、Java应用程序15.1.1JDBC数据库应用模型驱动程序一般由数据库厂商或者第三方提供,由JDBC方法调用,向特定数据库发送SQL请求,并为程序获取结果。驱动程序完成建立与数据库的连接、向数据库发送请求、在用户程序请求时进行翻译、错误处理等操作。3、驱动程序数据库指数据库管理系统和用户程序所需要的数据库。4、数据库
JDBC驱动程序分为以下四种类型:15.1.2JDBC驱动程序(1)类型一:JDBC-ODBCBridgeDriver类型;(2)类型二:Native-APIpartly-JavaDriver类型;(3)类型三:JDBC-NetAll-JavaDriver类型;(4)类型四:Native-protocolAll-JavaDriver类型。
以上四种驱动类型中,类型一简单易用,类型四是纯Java代码实现且性能好,因此这两种类型最为常用。我们以SQLite数据库为例说明创建数据库的基本操作。首先创建数据库xsgl.db。进入SQLite,选择“CreateDatabase”,命名之后保存。如右图1所示。然后创建表studentInfo,选择“使用设计器创建表”,输入该表字段:studentID、studentName、studentSex。确定studentID为主键。如图2所示。15.1.3
用JDBC驱动连接数据库1、创建数据库12
15.1.3用JDBC驱动连接数据库try{Class.forName(“org.sqlite.JDBC”);}catch(ClassNotExceptione){System.out.println(e);}(1)加载驱动程序2、数据库驱动与连接
15.1.3用JDBC驱动连接数据库Stringurl=“jdbc:sqlite:student.db”;//student是在数据源管理器创建的数据源名字Connectioncon=DriverManager.getConnection(url);如果数据库设置了登录名和口令,则在创建连接时需在方法中包含相关的参数。
DriverManager.getConnection(Stringurl,StringloginName,Stringpassword)(2)创建数据库连接对象3、数据库驱动与连接
15.1.3用JDBC驱动连接数据库 con=DriverManager.getConnection(Stringurl,String loginName,Stringpassword)(2)创建数据库连接对象3、数据库驱动与连接本书的例程中采用了一种无数据源连接数据库的方式,语句如下:注意:在Driver和(*.mdb)之间有一空格。
15.1.3用JDBC驱动连接数据库Stringquery=“select*fromtable1”;//查询语句Satementst=con.createStatement();//或用带参数的createStatement()方法
ResultSetrs=st.executeQuery(query);//发送SQL语句,获得结果与数据库建立连接之后,需要向访问的数据库发送SQL语句。在特定的程序环境和功能需求下,可能需要不同的SQL语句,例如数据库的增、删、改、查等操作,或者数据库表的创建及维护操作等等。其语法格式是相同的。4、执行SQL语句例如向数据库发送查询语句,获取查询结果
15.1.3用JDBC驱动连接数据库若要显示前面查询表table1的结果,可用下面的代码:while(rs.next()){//结果集中有内容?
System.out.println(rs.getString(1));//取第1列
……}con.close();6、关闭连接5、检索结果15.1.4JDBC常用API
JDBCAPI提供的类和接口是在java.sql包和javax.sql包中定义的。以下列出常用的类和接口,希望查阅教材或类文档进行研究。DriverManager、Connection、Statement、PreparedStatement、CallableStatement、ResultSet、java.sql.Date、SQLException、DatabaseMetadata、ResultSetMetaData等。C目录ONTENTS15.2数据库基本操作15.3事务处理15.4小结15.1数据库编程基础
15.2.1
数据插入操作INSERTINTO<表名>[(字段名[,字段名]…)]VALUES(常量[,常量]…)例如,要向表member中插入一行数据的SQL语句是:INSERTINTOmember(name,age,sex,wage,addr)VALUES('LiMing',40,'男',4500,'北京市')Insert语句格式如下:
15.2.1
数据插入操作Statementstmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CUNCUR_UPDATABLE);事实上,对很多数据库而言,对数据的插入、删除和更新操作都有两种可选的操作模式,一是直接使用SQL语句插入(或更新、删除)模式,二是通过可更新的结果集对象间接插入(或更新、删除)。用下面的形式创建语句对象:
15.2.1
数据插入操作Stringsqlins="INSERTINTOstudentsvalues('"+name+"','"+age+"','"+sex+"','"+wage+"','"+"','"+addr+"')";对很多数据库而言,对数据的插入、删除和更新操作都有两种可选的操作模式,一是直接使用SQL语句插入(或更新、删除)模式,二是通过可更新的结果集对象间接插入(或更新、删除)。例如插入数据:第1种方式:
15.2.1
数据插入操作rs.moveToInsertRow();rs.updateString("name","'LiMing");rs.updateInt("age",40);rs.updateString("sex","男");rs.updateInt("wage",50000);rs.updateString("addr","北京市");rs.insertRow();第2种方式:
15.2.2数据删除操作DELETEFROM<表名>WHERE<条件表达式>Delete语句的格式为:例如:
DELETEFROMtable1WHERENo=7658从表table1中删除一条记录,其字段No的值为7658。
15.2.3数据更新操作UPDATE<table_name>SETcolume_name=‘xxx’WHERE<条件表达式>数据更新语句的命令格式为:例如语句:
UPDATEEMPSETJOB=’MANAGER’WHERENAME=’MATIN’对数据表EMP中姓名为MATIN的职工数据进行了修改,将其工作名称改为MANAGER
15.2.4数据查询操作SELECT[DISTINCT]{column1,column2,…}FROMtablenameWHERE{conditions}GROUPBY{conditions}HAVING{conditions}ORDERBY{conditions}[ASC/DESC];查询语句的语句格式如下:15.2.4数据查询操作【例15.1】无数据源连接数据库方式。代码详见:
Example15_1.java【例15.2】模糊查询的例子。代码详见:
Example15_2.java15.2.5
编译预处理PreparedStatement是与编译预处理有关的类,它是Statement的一个子类,与Statement类的一个重要区别是,用Statement定义的语句是一个功能明确而具体的语句,而用PreparedStatement类定义的SQL语句中则包含有一个或多个问号(“?”)占位符,它们对应于多个IN参数。带着占位符的SQL语句被编译,而在后续执行过程中,这些占位符需要用setXXX方法设置为具体的IN参数值,这些语句发送至数据库获得执行。15.2.5编译预处理下面给出若干编译预处理语句例子说明PreparedStatement的用法:
PreparedStatementpstmt=con.prepareStatement(“updatetable1setx=?wherey=?”);在对象pstmt中包含了语句“updatetable1setx=?wherey=?”,该语句被发送到DBMS进行编译预处理,为执行做准备。(1)创建对象15.2.5编译预处理
设定参数值是通过调用setXXX方法实现的,其中XXX是与参数相对应的类型,加入上面例子中参数类型为long,则用下面的代码为参数设定值:pstmt.setLong(1,123456789);pstmt.setLong(2,987654321);这里的1和2是与占位符从左到右的次序相对应的序号,它们不是从0开始计数的。(2)为每个IN参数设定参数值,即每个占位符?对应一个参数值15.2.5编译预处理
Pstmt.executeUpdate();(3)执行语句【例15.3】说明编译预处理语句使用方法的程序例子。Example15_3.javaC目录ONTENTS15.2数据库基本操作15.3事务处理15.4小结15.1数据库编程基础15.3事务处理所谓事务,概指一系列的数据库操作,这些操作要么全做,要么全不做,是一个不可分割的工作单元,也可以说是数据库应用程序中的一个基本逻辑单元。它可能是一条SQL语句、一组SQL语句或者一个完整的程序。这体现的是事务的原子性需求,对事务还有其他的需求如一致性、隔离性、持久性等。数据库是共享资源,可供多用户使用。多个用户并发地存取数据库时就可能产生多个事务同时存取同一数据的情况。可能出现不正确存取数据,破坏数据的一致性的情况。2、三种类型数据错误1、什么是事务15.3事务处理2、三种类型数据错误
一个事务修改了某一行数据而未提交时,另一事务读取了该行数据。假如前一事务发生了回退,则后一事务将得到一无效的值。(1)脏读(DirtyRead)
一个事务读取某一数据行时,另一事务同时在修改此数据行。则前一事务在重复读取此行时将得到一个不一致的数据。(2)不可重复读(Non-RepeatableRead)15.3事务处理2、三种类型数据错误
也称为幻影读,一事务在某一表中查询时,另一事务恰好插入了满足查询条件的数据行,则前一事务在重复读取满足条件的值时,将得到一个或多个额外的“影子”值。(3)错误读(PhantomRead)15.3事务处理3、事务隔离级JDBC事务处理可采用隔离级别控制数据读取操作。JDBC支持5个隔离级别设置,其名称和含义如下表所示。用con.setTransactionIsolation(Connection.Isolation_level);进行事务隔离级设置。Isolation_level取值即以上表中的5个常量之一。15.3事务处理Connection中下面三个方法完成基本的事务管理:(1)setAutoCommit(booleantrue/false):设置自动提交属性AutoCommit,默认为true;(2)rollback():回滚事务;(3)commit():事务提交。4、事务基本操作15.3事务处理事务中若包含多个任务,当事务失败时,也许其中部分任务不需要被回滚,例如处理一个订单要完成3个任务,分别是更新消费者帐户表、订单插入到待处理的订单表和给消费者发一确认电子邮件。如果上述3个任务中完成了前2个,只是最后一个因为邮件服务器掉线而未完成,那么不需要对整个事务回滚。可以使用保存点(Savepoint)来控制回滚的数量。所谓保存点,就是对事务的某些子任务设置符号标识,用以为回滚操作提供位置指示。5、保存点的概念与操作15.3事务处理
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 淘宝店铺转让合同协议书
- 系统推进计算机二级ACCESS考试试题及答案
- 无主灯销售合同协议书
- 社会工作者-社会工作综合能力(初级)真题库-5
- 社会工作者-初级民航安全检查员真题库-3
- 股权合同纷争协议书模板
- 四川中标合同协议书
- 二级C语言情况下的环境变量试题及答案
- 高效备考计算机测试技术试题及答案
- 2025年C语言技能提升试题及答案
- 玻璃体积血的治疗
- 2025年货物购销合同范本
- 2025届北京市北京一零一中学生物七下期末质量检测试题含解析
- 2025Q1 BrandOS出海品牌社媒影响力榜单-OneSight
- 2025陕西延安通和电业有限责任公司供电服务用工招聘103人笔试参考题库附带答案详解
- 《生成式人工智能职业技能评估规范》
- 颁奖礼仪队培训体系
- 儿童发展问题的咨询与辅导-案例1-5-国开-参考资料
- 【MOOC】供电技术-常州工学院 中国大学慕课MOOC答案
- GB/T 23444-2024金属及金属复合材料吊顶板
- (正式版)QB∕T 8049-2024 家用和类似用途微压富氧舱
评论
0/150
提交评论