版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第15章 Java数据库连接,15.1 创建数据源 15.2 JDBC-ODBC桥接器 15.3 顺序查询 15.4 可滚动结果集 15.5 排序查询 15.6 模糊查询 15.7 随机查询 15.8 更新、添加、删除记录 15.9 预处理语句 15.10 数据库访问中的套接字技术,第15章 Java数据库连接,教学目的: 学习在JAVA中如何建立数据源,学习对数据源的访问,对数据内容的查询及更改等基本操作。,第15章 Java数据库连接,教学内容: 1、JDBC与数据库概述 2、访问数据库 3、数据库查询 4、更新、添加、删除记录 5、JDBC事务支持 重点难点内容: 数据库的建立以及内容的
2、查询。,补充:基本概念,一、关系数据库中的基本概念: 数据库:是应用程序要通过关系数据库管理系统进行管理的数据的总称,通常由多个相互之间存在各种关系的数据表构成。 数据表 数据记录 数据字段 主码 外码,补充:基本概念,二、SQL简介 SQL最初是IBM公司为关系数据库管理系统System R设计的查询语言,1986年美国国家标准局的数据库委员会X3H2批准了它作为关系数据库语言的美国标准。此后不久,国际标准化组织ISO也将其作为关系数据库语言的国际标准。,补充:基本概念,SQL基本语句有下列几种: 1、查询语句 SELECT DISTINCTWHERE 例: SELECT * FROM pe
3、rson SELECT id,name,sex,birthday FROM person,补充:基本概念,SELECT * FROM person WHERE name LIKE 李% 2、插入语句 INSERT INTO (VALUES 例 INSERT INTO person (id, name, sex,) VALUES (CLINT, 张三, 男) 3、修改语句 UPDATE SET 字段=字段值 ,字段=字段值 WHERE ,补充:基本概念,三、 JDBC介绍 JDBC(Java DataBase Connection)是Java数据库连接API。简单地说,JDBC能完成3件事: 与
4、一个数据库建立连接。 向数据库发送SQL语句。 处理数据库返回的结果。,补充:基本概念,四、JDBC常用类与方法 1、DriverManager类:负责管理JDBC驱动程序。使用JDBC驱动程序之前,必须先将驱动程序加载并向DriverManager注册后才可以使用,同时提供方法来建立与数据库的连接。方法: 1)Class.forName(Stringdriver);/加载注册驱动程序,补充:基本概念,2)staticConnectiongetConnection(Stringurl, Stringuser,Stringpassword)throws SQLException;/取得对数据库的
5、连接。 3)StaticDrivergetDriver(Stringurl)throws SQLExcetion;/在已经向DriverManager注册的/驱动程序中寻找一个能够打开url所指定的数据库/的驱动程序。,补充:基本概念,2、Connection类负责维护JSP/JAVA数据库程序和数据库之间 的联机。可以建立三个非常有用的类对象。常用方 法如下: StatementcreateStatement()throws SQLException;/建立Statement类对象 statementcreateStatement(intresultSetType,intresultSetC
6、oncurrency)throwsSQLException;/建立Statement类对象,补充:基本概念,resultSetType的取值如下:1)TYPE_FORWARD_ONLY结果集不可滚动。2)TYPE_SCROLL_INSENSITIVE结果集可滚动,不反映数据库的变化。3)TYPE_SCROLL_SENSITIVE结果集可滚动,反映数据库的变化。4)resultSetConcurrency值。5)CONCUR_READ_ONLY不能用结果集更新数据。6)CONCUR_UPDATABLE能用结果集更新数据。,补充:基本概念,DatabaseMetaDatagetMetaData()
7、 throwsSQLException; /建立DatabaseMetaData类对象 PreparedStatementprepareStatement (Stringsql)throwsSQLException; /建立PreparedStatement类对象 booleangetAutoCommit()throws SQLException/返回Connection类对象的 AutoCommit状态,补充:基本概念,voidclose()throwsSQLException /结束Connection对象对数据库的联机。booleanisClosed()throwsSQLExceptio
8、n/测试是否已经关闭Connection类对象对数据库的联机。,补充:基本概念,3、Statement类通过Statement类所提供的方法,可以利用标准的SQL命令,对数据库直接新增、删除或修改操作方法:1)ResultSetexecuteQuery(Stringsql) throwsSQLException/使用SELECT命令对数据库进行查询,补充:基本概念,2)intexecuteUpdate(Stringsql)throwsSQLException/使用INSERTDELETEUPDATE对数据库进行新增、删除和修改操作。3)voidclose()throwsSQLException
9、/结束Statement类对象对数据库的联机。,补充:基本概念,4、PreparedStatement类 PreparedStatement类和Statement类的不同之处在于PreparedStatement类对象会将传入的SQL命令事先编好等待使用,当有单一的SQL指令比多次执行时,用PreparedStatement类会比Statement类有效率常用方法如下:1)ResultSetexecuteQuery()throwsSQLException/使用SELECT命令对数据库进行查询。,补充:基本概念,2) intexecuteUpdate()throwsSQLException/使用
10、INSERTDELETEUPDATE对数据库进行新增、删除和修改操作。 3)voidsetInt(intparameterIndex,intx)throwsSQLException/设定整数类型数值给PreparedStatement类对象的IN参数。,补充:基本概念,4)voidsetFloat(intparameterIndex,floatx) throwsSQLException/设定浮点数类型数值给PreparedStatement类/对象的IN参数。5) voidsetNull(intparameterIndex,intsqlTypthrowsSQLException/设定NULL类
11、型数值给PreparedStatement类/对象的IN参数。,补充:基本概念,6)voidsetString(intparameterIndex,Stringx)throwsSQLException/设定字符串类型数值给PreparedStatement类/对象的IN参数。7)voidsetDate(intparameterIndex,Datex)throwsSQLException/设定日期类型数值给PreparedStatement类对/象的IN参数。,补充:基本概念,8) voidsetTime(intparameterIndex, Timex)throwsSQLException /
12、设定时间类型数值给PreparedStatement类对象的IN参数。,补充:基本概念,5、ResultSet类负责存储查询数据库的结果。并提供一系列的方法对数据库进行新增、删除和修改操作。也负责维护一个记录指针(Cursor),记录指针指向数据表中的某个记录,通过适当的移动记录指针,可以随心所欲的存取数据库,加强程序的效率。方法如下:1)booleanabsolute(introw)throwsSQLException/移动记录指针到指定的记录。,补充:基本概念,2)voidbeforeFirst()throwsSQLException /移动记录指针到第一笔记录之前。3)voidafter
13、Last()throwsSQLException/移动记录指针到最后一笔记录之后。4)booleanfirst()throwsSQLException/移动记录指针到第一笔记录。5)booleanlast()throwsSQLException/移动记录指针到最后一笔记录。,补充:基本概念,6)booleannext()throwsSQLException /移动记录指针到下一笔记录。 7)booleanprevious()throws SQLException/移动记录指针到上一笔记 录。,补充:基本概念,五、数据库访问过程 一个简单的数据库查询包括如下步骤:载入JDBC数据库驱动程序,建立
14、与数据库的连接,在建立数据库连接的前提下执行SQL语句,取结果集和结果信息,提交事务,关闭数据库。如果是更新操作,则执行SQL语句后没有结果集。,补充:基本概念,1、 JDBCODBC访问的流程 JDBC Driver Mannager-JDBCODBC桥-ODBC-数据库客户机驱动库-数据库服务器-返回查询结果,在这种访问中值的我们注意的是虽然JAVA是“Write Once ,Run Anywhere”,但是如果通过这种访问的话,需要客户端必须设置ODBC和有相应的数据库客户机的驱动。 由于不是所有的数据库服务器提供商都提供JDBC驱动程序(给JDBC访问提供相应的接口),所以就有了JDB
15、CODBC Bridge。,补充:基本概念,2、JDBC驱动返回查询结果 JDBC Driver Mannager-局部JDBC驱动-客户端数据库-数据库服务JDBC驱动返回查询结果器-返回查询结果,这种访问事实上是转换JDBC调用为相应的数据库(Oracle, Sybase, Informix, DB2, 和其他的数据库数据库管理系统)的客户端API调用,这种方式的访问需要相应的数据库提供商提供相应的JDBC驱动程序,但是有一种好处,可以独立于odbc用于可以随处可Run的客户端的浏览器中的Applet程序。,补充:基本概念,3、连接数据库 JDBC URL 语法:jdbc: 如:jdbc:
16、odbc:studentdb , jdbc:dbpro:stu jdbc:odbc/:5000/stu 建立连接 Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”); String url=“jdbc:odbc:studentdb”; Connection con=DriverManager.getConnection (url,”user”,”pass”);,补充:基本概念,4、了解数据库信息 可以通过取得DatabaseMetaData对象来了解数据源的信息: DatabaseMetaData bma=con.gtMetaData(); Databa
17、seMetaData对象有很多方法取得数据库的基本信息(方法如下) getURL,getUserName(),getDatabaseProduceName(),getDatabaseProduceVersion(),isReadOnly(),getDriverName(),getDriverVersion(), getTabels(), getColumns(), getIndexInfo()。,补充:基本概念,六、数据库查询 所有SQL语句都是通过Statement或其子类(PreparedStatement, CallableStatement )的对象实现。 1、Statement St
18、atement用于一般SQL查询语句的执行 1)创建: Connection对象的createStatement方法可以 创建Statement对象如: Statement stmt=con.createStatement();,补充:基本概念,2)执行方法如下: executeQuery,executeUpdate,execute具体使用如下: String tsql=“select name,age from table1”; ResultSet rs=stmt.executeQuery(tsql); 非select语句如:int nRet= stmt.executeUpdate(tsql
19、); execute方法用于:返回多个结果集。 3)关闭:close stmt.close();,补充:基本概念,2、PreparedStatement 通过PreparedStatement可以将SQL语句预编译,还可以内嵌参数进行预编译具体使用如下: String tsql=“Select * from table1 where id=”+nID+” and name=”+strName+”; 或:PreparedStatement ps=con.preparedStatement(“delete from table1 where id=? And name=?”); ps.setInt
20、(1,nID); ps.setString(2,strName); ps.executeUpdate();,补充:基本概念,七、读取结果集中的数据 可以通过ResultSet类来查询结果集中的数据。如方法:next,getXXX(XXX为各种类型) 等,使用如下: ResultSet rs=st.executeQuery(“Select * from table1”); while(rs.next() rs.getInt , rs.getString , ,15.1 创建数据源,为了同数据库建立连接,首先要创建一个ODBC数据源。打开Windows中的控制面,对于WindowXP,选择“性能和
21、维护”“管理工具”“数据源(ODBC)” ;对于Window2000,选择“管理工具”“数据源(ODBC)”;对于Window9X,选择 “数据源(ODBC)”。也可以使用“资源管理器”双击c:windowssystem32下的可执行文件“odbcad32”打开“数据源(ODBC)”。,15.1 创建数据源,建立数据源的步骤: 打开“数据源(ODBC)”将出现ODBC数据源管理器对话框 在ODBC数据源管理器对话框中选择“用户DSN”,然后单击“添加”按钮,将出现安装数据源的驱动程序对话框,可以在选择列表中选择相应的驱动程序。 在选择驱动程序对话框选择好驱动程序后,单击“完成”按钮,将出现创建
22、数据源对话框,。在该对话框中,你需要为创建的数据源起一个名称,并为你创建的数据源选择一个数据库。,15.2 JDBC-ODBC桥接器,1、建立一个JDBC-ODBC桥接器 为了要连接到这个数据库,我们首先 要建立一个JDBC-ODBC桥接器: Class.forName(sun.jdbc.odbc. JdbcOdbcDriver);,15.2 JDBC-ODBC桥接器,2、连接到数据库 Connection con= DriverManager.getConnection (jdbc:odbc:数据源名字, login name, password ); 3、发送SQL语句 Statement
23、 sql=con.createStatement(); 4、处理查询结果 ResultSet rs= sql.executeQuery (“SQL语句);,15.3 顺序查询,使用结果集Result的next()方法,可以顺序的查询。一个结果集将游标最初定位在第一行的前面,第一次调用next()方法使游标移动到第一行。next()方法返回一个boolean型数据,当游标移动到最后一行之后返回false。,15.4 可滚动结果集,1、要得到一个可滚动的结果集,必须首先使 用下述方法先获得一个Statement对象: Statement stmt=con.createStatement (int
24、type ,int concurrency); 2、再根据参数的type、concurrency的取值 情况,stmt返回相应类型的结果集: ResultSet re=stmt.executeQuery(SQL语句);,15.4 可滚动结果集,3、type的取值决定滚动方式,取值情况如下: ResultSet.TYPE_FORWORD_ONLY 结果集的游标只能向下滚动。 ResultSet.TYPE_SCROLL_INSENSITIVE 结果集的游标可以上下移动,当数据库变化时,当前结果集不变。 ResultSet.TYPE_SCROLL_SENSITIVE 返回可滚动的结果集,当数据库变化时,当前结果集同步改变。,15.4 可滚动结果集,4、Concurrency 取值决定是否可以用结果 集更新数据库,Concurrency取值: ResultSet.CONCUR_READ_ONLY 不能用结果集更新数据库中的表。 ResultSet.CONCUR_UPDATETABLE 能用结果集更新数据库中的表。,15.5 排序查询,可以在SQL语句中使用ORDER BY子语 句,对记录排序。,15.6 模糊查询,可以用SQL语句操作符LIKE进行模式般配,使用“%”代替0个或多个字符,用一个下划线“_”代替1个字符。比如,下述语句查询姓氏是“王”的记录: rs=sql.execut
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理中的艺术与科学
- 烧伤护理进展与临床应用
- 护理人员身心健康管理
- 银行从业法律法规题库及答案
- 工作疾病协议书
- 情侣间幸福协议书
- 威海国企考试题库及答案
- 2020-2021学年榆树市闵家中学北师大版七年级数学上册同步试卷不含答案
- 2026年枕叶认知功能障碍诊疗试题及答案(神经内科版)
- 2026年小型酒吧租赁协议
- 2025年下半年浙江杭州市萧山区国有企业招聘人员笔试历年参考题库附带答案详解
- 2026年70周岁以上驾驶人三力测试模拟题
- 2026年4月23日四川省宜宾市五方面人员选拔笔试真题及答案深度解析
- GB/T 17498.6-2026室内固定式健身器材第6部分:跑步机附加的特殊安全要求和试验方法
- 国家义务教育质量监测四年级英语模拟试题(2套含解析)
- 《低空经济应用技术》课件全套 第1-15章 低空经济概论-智慧城市
- 2026年《中华人民共和国保守秘密法》培训课件
- 攀枝花市2026年春季人才引进(484人)笔试备考试题及答案解析
- 同等学力英语高频重点词汇表(共36页)
- 小学生劳动教育课程 《西红柿炒鸡蛋》公开课课件
- 国民经济统计学教学大纲
评论
0/150
提交评论