首页 第十Java数据库编程

第十Java数据库编程

举报
开通vip

第十Java数据库编程第十章Java数据库编程内容提要数据库有关概念;介绍JDBC的结构;重点介绍JDBC访问几种数据库的基本过程;数据库应用开发简介作为有效的数据存储和组织管理工具,数据库的应用日益广泛目前主流的数据库产品有Oracle、SQLServer、DB2和SyBase等多种。在数据库开发领域中,有三个方面需要掌握:SQL语言、ODBC数据访问接口和JDBC数据库访问接口。SQL语言SQL(StructuredQueryLanguage)是使用关系模型的数据库语言,用于和各类数据库连接,提供通用的数据管理和查询功能。SQL语言...

第十Java数据库编程
第十章Java数据库编程 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 提要数据库有关概念;介绍JDBC的结构;重点介绍JDBC访问几种数据库的基本过程;数据库应用开发简介作为有效的数据存储和组织管理工具,数据库的应用日益广泛目前主流的数据库产品有Oracle、SQLServer、DB2和SyBase等多种。在数据库开发领域中,有三个方面需要掌握:SQL语言、ODBC数据访问接口和JDBC数据库访问接口。SQL语言SQL(StructuredQueryLanguage)是使用关系模型的数据库语言,用于和各类数据库连接,提供通用的数据管理和查询功能。SQL语言最初由IBM公司开发,实现了关系数据库中的信息检索。后几经修改和完善,被国际标准化组织确定为国际标准,目前执行的是1992年制定的SQL-92标准。SQL可以为各种支持SQL-92标准的数据库管理系统(DBMS)所接受和处理,通常各种DBMS都提供图形用户界面,以使用户直接对数据库进行操作。但SQL语言本身并不是完整的编程语言,还需要与其他高级编程语言配合,才能实现应用程序对数据库的访问操作。JDBC概念JDBC(JavaDatabaseConnectivity)API是Java程序语言内针对数据库开发提供的编程接口,使得开发人员可以使用纯Java的方式与关系型数据库进行交互.JDBC规范由SUN公司提供给各数据库厂商,由SUN公司与各大数据库厂商遵循标准规格 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 出最佳JDBC驱动程序。JDBC与数据库交互过程Java应用程序数据源JDBC驱动程序JDBCAPI网络 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 /API驱动程序管理器应用程序:应用程序调用JDBC方法,将SQL语句发送到数据库并检索结果。驱动程序管理器:将应用程序连接至正确的JDBC驱动程序驱动程序:是JDBCAPI与数据库系统之间的桥梁。JDBC连接方式四种1、使用相关的数据库协议直连数据库(thin)。速度快,最直接。需要一份驱动程序.2、JDBC-ODBC桥式驱动。不需要准备驱动程序,较方便。有平台依赖性。3、Java到本地API。(OCI)将JDBC的调用指令变换为对本地的数据库工具的API的调用需要在本地上安装目标数据库的客户端程序.4、以与数据库无关的网络协议的方式发送JDBC调用,数据库服务器端需要安装中间件.ODBC数据访问接口开放式数据库互连ODBC(OpenDataBaseConnectivity)是微软公司开发的一套开发数据库系统应用程序接口规范,它支持应用程序以标准的ODBC函数和SQL语句操作各种不同的数据库。ODBC数据访问接口四个组成部分:应用程序(Application)ODBC管理器(ODBCmanager)ODBC驱动程序(ODBCDrivers)数据源(DataSources,数据库)ApplicationODBCmanagerODBCDriversDataSourcesTYPE1:JDBC-ODBCbrigeplusODBCdriverJava应用程序数据源JDBCAPIODBCAPIODBC层JDBC-ODBC桥JDBC数据访问接口为支持Java程序的数据库操作功能,Java语言采用了专门Java数据库编程接口(JDBC,JavaDataBaseConnectivity),用于在Java程序中实现数据库操作功能并简化操作过程。JDBC支持基本SQL语句,提供多样化的数据库连接方式,为各种不同的数据库提供统一的操作界面JDBC数据访问接口简单地分,JDBC有两部分组成:JDBC API和JDBC Driver Interface. JDBC API就是提供给“客户”的一组独立于数据库的API,对任何数据库的操作,都可以用这组API来进行.JDBC Driver Interface是面向JDBC驱动程序开发商的编程接口,把通用的API翻译成特定数据库能懂的“指令”,它会把我们通过JDBC API发给数据库的通用指令翻译给他们自己的数据库.Java应用程序数据源JDBCAPIJDBC驱动程序TYPE2:JDBCdriver使用JDBC导入包加载或注册适当的JDBC驱动程序创建数据库连接创建JDBC命令设置JDBC命令的SQL语句执行JDBC命令处理结果集关闭结果集关闭JDBC命令关闭JDBC数据库连接SQL语言概述SQL(StructuredQueryLanguage)是关系型数据库的标准语言,是由国际标准组织提出的,各种关系型数据库都支持SQL指令,Oracle在基本的SQL基础上进行了扩充。SQL语句有如下的两大特点(1)SQL是一种类似于英语的语言,很容易理解和书写。(2)SQL语言是非过程化的语言(第四代语言)。SQL集DDL(DataDefinitionLanguage:数据定义语言),DML(DataManipulationLanguage:数据操作语言)和DCL(DataControlLanguage:数据控制语言)于一体。用SQL语言可以实现数据库生命周期的全部活动。基本SQL语句基本的SQL语句包括DQL和DML。也就是对数据库最常用的四大基本操作:查询(Select)、插入(Insert)、更新(Update)和删除(Delete)DQL的3种基本格式1.基本句型一:(最简单的SELECT语句)SELECT字段名FROM数据表例1.SELECT*FROMgrade功能说明:将grade表中的所有字段取出来。例2.SELECT学号,姓名FROMgrade功能说明:将grade表中学号和姓名字段取出来。例3.SELECT学号,姓名,语文+数学+英语as总成绩FROMgrade功能说明:将grade表中的学号和姓名取出来,并将语文、数学和英语成绩相加产生虚拟列总成绩。2.基本句型二:使用条件查询SELECT字段名FROM数据表WHERE筛选条件测试句型如下。例1.SELECT*FROMgradeWHERE数学>60功能说明:把所有数学成绩大于60分的记录选出来。例2.SELECT*FROMgradeWHERE数学=300or语文=300功能说明:把数学成绩等于300分或者语文成绩等于300分的人选出来。例3.Like子句基本格式一:“_”匹配。功能说明:每个下划线匹配一个任意字符,注意只匹配一个字符。比如:姓名like‘_敏’,匹配姓名以“敏”字结尾且字数等于二的所有数据记录,如:“张敏”。例4.Like子句基本格式二:“%”匹配。比如:姓名Like'%敏%',匹配姓名中出现“敏”的所有数据记录,如:“周惠敏”,“于敏”、“敏大”、“敏二”等。比如要在数据库中查询姓江的人,只要利用一条SQL语句就可以了,SELECT*FROM数据库表WHERE姓名Like'江%'。3.基本句型三:(进行排序)SELECT字段名FROM数据表ORDERBY字段名测试句型如下。(1)SELECT*FROMgradeORDERBY数学注:从低到高排序功能说明:从grade表中取出所有字段,并按数学成绩排序。(2)SELECT*FROMgradeORDERBY数学,语文功能说明:从grade表中取出所有字段,并按数学成绩排序,如果数学成绩相同则按照语文成绩排序。(3)SELECT*FROMgradeORDERBY数学desc注:从高到低排序功能说明:从grade表中取出所有字段,并按数学成绩倒序。(4)SELECTtop5*FROMgrade功能说明:从grade表中取出前五条记录的所有字段。DML的基本格式(1)DELETE指令:删除数据记录。基本语法:DELETEFROM数据表WHERE条件例:DELETEfromgradeWHERE数学=0功能说明:删除所有数学成绩为零的记录,如果没有WHERE子句,则删除所有记录。(2)UPDATE指令:更新数据记录。基本语法:UPDATE数据表SET字段值=新值WHERE条件例1:UPDATEgradeSET数学=数学+10说明:将grade表中所有人的成绩加10分例2:UPDATEgradeSET数学=100WHERE姓名like'%敏%'功能说明:将姓名中含有敏的人的数学成绩更新为100分INSERTINTO指令(3)INSERTINTO指令:添加数据记录。基本格式1:INSERTINTO数据表VALUES(字段新值)基本格式2:INSERTINTO数据表(字段一,字段二,……)VALUES(字段新值)其中关键字两种格式的区别是:当values含有数据库表所有字段的值,并且顺序和数据库字段一致时,就可以省略数据库表后面的字段名称。例1:INSERTINTOgrade(学号,姓名,数学)VALUES(1234,'周润发',70)例2:INSERTINTOgradeVALUES(5678,'周润发',70,80,90)功能说明:该语句等价于:INSERTINTOgrade(学号,姓名,语文,数学,英语)VALUES(5678,'周润发',70,80,90)连接数据库 一个普通数据库的连接过程为:    1.加载驱动程序.    2.通过DriverManager到得一个与数据库连接的句柄.    3.通过连结句柄绑定要执行的语句.    4.接收执行结果.    5.可选的对结果的处理.    6.必要的关闭和数据库的连接涉及主要包使用JDBC操作数据库涉及java.sqljavax.sqlJava.sql:主要针对基本的数据库编程服务,如生成连接执行语句等javax.sql.:它引入了容器管理的连接池,分布式事务等导入包:importjava.sql.*;常用的JDBC类与接口类/接口说明DriverManager类注册驱动程序,并通过其工厂方法getConnection创建连接Driver创建驱动程序实例,实现连接数据库Connection实现应用程序与DBMS之间的连接会话Statement撰写欲执行的SQL语句PreparedStatement继承Statement,通过占位符实现一次加载多次调用CallableStatement继承Statement,,用来调用数据库的存储过程ResultSet存放SQL语句执行结果1.装载驱动程序,建立ODBC-JDBC桥使用JDBC的第一步是安装驱动程序。大多数数据库都有JDBC驱动程序,常用的JDBC驱动程序如图所示。使用代码装载:Class.forName(“驱动”);是一种显式地加载.当一个驱动程序类被Classloader装载后,在溶解的过程中,DriverManager会注册这个驱动类的实例.这个调用是自动发生的,也就是说DriverManager.registerDriver()方法被自动调用加载JDBC驱动程序注册驱动程序:Class.forName(驱动程序名称);例:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");说明:上述操作只向JVM注册JDBC驱动程序名称,并未创建一个物理对象,这是因为应用程序内通常不太需要参照JDBC驱动程序的物理对象,或是读取内部信息.如果你需要在程序内参照Driver对象,必须利用new关键字进行实例化操作.加载驱动程序Driver变量名称=new驱动程序();DriverManager.registerDriver(变量名称);例:Driverdriver=neworacle.jdbc.driver.OracleDriver();DriverManager.registerDriver(driver);或DriverManager.registerDriver(neworacle.jdbc.driver.OracleDriver());2.建立连接建立与数据库之间的连接,也就是创建一个Connection的实例。DriverManager类的getConnection()方法将建立数据库的连接:getConnection()方法有三个重载的方法,一种是最简单的只给出数据源即:getConnection(url),另一种是同时给出一些数据源信息即getConnection(url,Properties),另外一种就是给出数据源,用户名和密码:getConnection(url,user,passwod),对于数据源信息.返回一个打开的连接,使用此连接创建statement对象并发送SQL语句到数据库。在程序的最后,应该关闭Connection对象:publicvoidclose()throwsSQLException建立JDBC连接:ConnectionConnectionconn=DriverManager.getConnection(URL,login_name,login_password);***如果连接失败,返回值为nullURL标识:jdbc::主协议 次协议 数据源如:jdbc:odbc:pubsjdbc:oracle:thin@127.0.0.1:1521:oracleStatement对象Statement对象用于将SQL语句发送到数据库中,使用conn.createStatement()创建。createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE):可以有两种结果返回,如果执行的查询操作,返回为结果集ResultSet,如果执行更新操作,则返回操作的记录数int.用缺省设置创建时,ResultSet是一种只能访问一次(one-time-through)、只能向前访问(forward-only)和只读的对象。您只能访问数据一次,如果再次需要该数据,必须重新查询数据库。通过设置Statement对象上的参数,可以控制它产生的ResultSet。例如:Class.forName(driverName);db=DriverManager.getConnection(connectURL);Statementstatement=db.createStatemen(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);这个Statement现在将产生可以更新并将应用其他数据库用户所作更改的ResultSet,还可以在这个ResultSet中向前和向后移动。Statement对象第一个参数指定ResultSet的类型。其选项有:TYPE_FORWARD_ONLY:缺省类型。只允许向前访问一次,并且不会受到其他用户对该数据库所作更改的影响。TYPE_SCROLL_INSENSITIVE:允许在列表中向前或向后移动,甚至可以进行特定定位,例如移至列表中的第四个记录或者从当前位置向后移动两个记录。不会受到其他用户对该数据库所作更改的影响。TYPE_SCROLL_SENSITIVE:象TYPE_SCROLL_INSENSITIVE一样,允许在记录中定位。这种类型受到其他用户所作更改的影响。如果用户在执行完查询之后删除一个记录,那个记录将从ResultSet中消失。类似的,对数据值的更改也将反映在ResultSet中。第二个参数设置ResultSet的并发性,确定是否可以更新ResultSet。其选项有:CONCUR_READ_ONLY:这是缺省值,指定不可以更新ResultSetCONCUR_UPDATABLE:指定可以更新ResultSetStatement接口Statement接口提供了执行SQL语句的常用方法:publicResultSetexecuteQuery(Stringsql)throwsSQLException用于产生单个ResultSet的语句,例如SELECT语句。publicintexecuteUpdate(Stringsql)throwsSQLException用于执行INSERT、UPDATE或DELETE语句以及SQLDDL语句,例如CREATETABLE和DROPTABLE。该方法返回一个整数,指示受影响的行数。JDBC在编译时并不对要执行的SQL语句 检测 工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训 ,只是把它看着一个String,只有在驱动程序执行SQL语句时才知道正确与否.ResultSet对象ResultSet包含符合SQL语句执行结果所有行,并且它通过一套get方法提供了对这些行中数据的访问,常用的get方法有:intgetInt(intcolumnIndex),取得当前行中第columnIndex列的整数的值。intgetInt(StringcolumnName),取得当前行中列名为columnName的整数的值。DategetDate(intcolumnIndex),取得当前行中第columnIndex列的日期的值。DategetDate(StringcolumnName),取得当前行中列名为columnName的日期的值。publicStringgetString(intcolumnIndex),取得当前行中第columnIndex列的字符串的值。publicStringgetString(StringcolumnName),取得当前行中列名为columnName的字符串的值。其他类型的get方法可以参考java文档。ResultSet维护指向其当前数据行的光标,让光标向下移动一行的方法是:publicbooleannext()throwsSQLException几种常用数据库的连接连接SQLServer2000:Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”).newInstance();Stringurl=“jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=TestDB”;Stringuser=“sa”;Stringpsw=“”;Connectionconn=DriverManager.getConnection(url,user,psw);Statemnetstmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);Stringsql=“select*fromTestTable”;ResultSetrs=stmt.executeQuery(sql);While(rs.next()){}rs.close();stmt.close();conn.close();几种常用数据库的连接连接Oracle:Class.forName(“oracle.jdbc.driver.OracleDriver”).newInstance();Stringurl=“jdbc:oracle:thin:@localhost:1521:TestDB”;Stringuser=“sa”;Stringpsw=“”;Connectionconn=DriverManager.getConnection(url,user,psw);Statemnetstmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);Stringsql=“select*fromTestTable”;ResultSetrs=stmt.executeQuery(sql);While(rs.next()){}rs.close();stmt.close();conn.close();几种常用数据库的连接连接Sybase:Class.forName(“com.sybase.jdbc.SybDriver”).newInstance();Stringurl=“jdbc:sybase:Tds:localhost:5007/TestDB”;PropertiesSysProps=System.getProperties();SysProps.put(“user”,”userid”);SysProps.put(“password”,”user_password”);Connectionconn=DriverManager.getConnection(url,SysProps);Statemnetstmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);Stringsql=“select*fromTestTable”;ResultSetrs=stmt.executeQuery(sql);While(rs.next()){}rs.close();stmt.close();conn.close();几种常用数据库的连接连接MySQL:Class.forName(“org.gjt.mm.mysql.Driver”).newInstance();Stringurl=“jdbc:mysql://localhost/TestDB?user=soft&password=soft&useUnicode=true&characterEncoding=8859_1”;Connectionconn=DriverManager.getConnection(url,user,psw);Statemnetstmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);Stringsql=“select*fromTestTable”;ResultSetrs=stmt.executeQuery(sql);While(rs.next()){}rs.close();stmt.close();conn.close();ODBC-JDBC桥读取Access数据库(1)创建一个Access数据库;(2)创建ODBC数据源;“控制面板”-“ODBC数据源”-“ODBC数据源管理器”-“系统DSN”-”添加”-“创建新数据源”-选择“MicrosoftAccessDriver(*.mdb)”-”完成”-“ODBCMicrosoftAccess安装”-“选取”-“选定数据库”-“目录”-选取数据库文件-为数据源取名。(3)进行数据库连接。A:装载驱动程序,建立JDBC-ODBC桥Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);B:建立数据库连接Connectioncon=DriverManager.getConnection(“jdbc:odbc:数据源名”);C:创建Statement对象Statementstmt=con.createStatement();D:创建查询ResultSetrs=stmt.executeQuery(“select*frommybook”);JDBC数据访问格式格式:执行基本SQL语句数据访问基本格式:Class.forName("JDBC驱动程序");Connectionconn=DriverManager.getConnection("相应JDBC驱动程序的连接串);Statementstmt=conn.createStatement();ResultSetrs=stmt.executeQuery("DQL语句");//如果是数据查询stmt.executeUpdate("DML语句");//如果是数据操作数据库事务事务的概念一系列不可分割的操作即为一个事务。构成事务的任何一个环节或操作失败,整个事务即失败,即事务中所有环节回到未操作之前的状态。数据库事务数据库事务应由一些列对数据库的操作构成。数据库事务的任何sql执行失败,整个事务回到未操作之前的状态。数据库事务数据库事务的编程模式首先将Connection对象的提交方式设为非自动提交。执行构成事务的sql通过Connection对象提交事务以上代码应用try-catch语句包围,如果发生异常,通过Connection对象回滚事务。数据库事务数据库事务的代码示例小结介绍JDBC的结构;介绍如何利用SQL指令操作数据库以及常用的SQL函数的使用;重点介绍JDBC访问数据库的基本过程;
本文档为【第十Java数据库编程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
正方体
暂无简介~
格式:ppt
大小:225KB
软件:PowerPoint
页数:44
分类:
上传时间:2022-05-11
浏览量:0