版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第十章JDBC,本章主要内容,JDBC的设计 结构化查询语言 安装JDBC JDBC编程的基本概念 执行查询操作 可滚动和可更新的结果集 元数据,一个ATM应用程序,10.1数据库基本知识,10.1.基本知识 数据库中以某种文件结构存储的一系列信息表,这种文件结构使用户能够访问这些表、选择表中的列、对表进行排序以及根据各种条件选择行的操作 数据库通常有多个索引与表中的许多列相关联,所以用户能尽快地访问这些表 数据库中这些表的定义以及它们之间的关系就称为数据库的结构,10.1.2 常见数据库 目前PC机上已开发出大量流行数据库,这些都是可以自管理的 如:ApproachdBaseBorland
2、Paradox Micro AccessFoxpro 在本节中使用的是Micro Access数据库 另一类数据库包括那些可由许多PC客户机通过服务器访问的数据库它们与第一类数据库相比具有更加复杂的结构和操作,而且具有更高效的性能,适合商业和企业等大型应用程序的数据存储,如:IBM DB/2、Micro SQL Server、 Oracle、Sybase、SQLBase和XDB 10.1.3 SQL语言 SQL即结构化查询语言,是为国际上接受为操作和访问关系数据库的标准语言 目前使用的SQL语言标准为ISO制定的SQL-92 JDBC也支持SQL-92 SQL包括三种语言:DDL、DML和DC
3、L,10.2 JDBC的基础知识 1.1996年夏,Sun推出了Java数据库连接 (JDBC)工具包,该工具包是一种可用于执行SQL语句的Java API.它由一些Java语言编写的的类和接口组成。 其作用: 连接到一个数据库 对数据库进行查询 对数据库进行更新,JDBC为数据库应用开发人员、数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。,特别是用Java和JDBC开发的应用程序具有具有跨平台性,并且不受供应商的限制,有些数据库供应商目前正在将Java虚拟机纳入数据库中,这样就可以用Java来编写存储过程,相关问题可访问:ht
4、tp:/,目前普遍使用的是JDBC 2。现在JDBC 3的技术规范已经进入了最后评测阶段,不久将会投入使用。,JDK没有提供编程语言进行数据库编程的工具,若要使用表单设计器、查询编辑器和报表生成器,就必须使用第三方提供的软件包.,需要注意的问题:,但用于Java平台开发的“企业”版或“专业”版,都配备了相应的数据库集成工具,遵循JDBC API协议的程序和JDBC程序驱动程序管理器来通信,然后管理器用嵌入的驱动程序访问数据库 使用JDBC/ODBC 桥来利用ODBC的接口访问数据库 通过直接的JDBC驱动程序来实现数据库的访问,10.3 JDBC设计,访问数据库,可访问
5、如下站点获得JDBC驱动程序列表: jdbc/drivers,JDBC驱动程序 第一类:将JDBC转化为ODBC驱动,利用JDBC/ODBC桥和ODBC驱动来访问数据库 第二类:驱动程序直接将用户的调用转化为对数据库客户端相应API的调用。这类驱动程序需要数据库在本地安装个客户端 第三类:驱动程序是独立于数据库服务器的,它只和一个中间层通信,由这个中间层来实现数据库的访问。,第四类:驱动程序直接将用户的请求转换为对数据库的协议请求,直接和数据库服务器通信,JDBC的典型用法:,基于传统C/S模式的数据库访问,客户机,JDBC,数据库 服务器,数据库协议,三层应用模式:,客户 机,中间层,JDB
6、C,数据库 服务器,HTTP、 RMI,数据库 协议,10.4.Java中JDBC的使用,public static synchronize Connection getConnection(String url, String login,String password),用于建立一个到达指定数据库的连接,返回一个Connection对象,此处为 odbc,数据源名,url形式为: jdbc:,用于JDBC编程的类都包含在java.sql和javax.sql软件包中,DriverManager类:用来加载驱动程序,管理应用程序和支持数据库的连接,Connection类应用程序与数据库之间的连
7、接,statement creatStatment() 用于建立一个语句对象,以便执行没有参数的SQL查询和更新,void close() 用于关闭当前的连接,Statement类:用来执行查询和更新操作,void close() 释放Statement所连接的数据库和JDBC资源,boolean execute(String sql) 执行sql语句,若结果为ResultSet则返回true,否则返回false。可使用getResultSet方法或getUpdateCount方法获得该语句运行结果,ResultSet executeQuery(String sql) 执行sql语句,返回结果
8、为ResultSet对象,int executeUpdate(String sql) 执行SQL语句INSERT,UPDATE,DELETE,返回行数或0,另外它也可以执行DDL语言,ResultSet getResultSet() 返回目前的ResultSet int getUpdateCount() 返回目前的更新计数,否则1,ResultSet类:执行查询后返回的结果集,bytegetBytes(int columnindex) bytegetBytes(String columnName) float getFloat(int columnindex) float getFloat(S
9、tring columnName),xxx getxxx(int columnindex) xxx getxxx(String columnName) xxx表示一个类型:int、double、String、date,int getInt(int columnindex) int getInt(String columnName) String getString(int columnindex) String getString(String columnName) boolean next() 返回下一记录,没有时返回false void close()释放ResultSet资源,Resu
10、ltSetMetadata类:用来返回有关数据、数据库和驱动程序信息 int getColumnCount()返回域数 int getColomnDisplaySize(int column) 返回Column域值最大的显示域 String getColomnLabel(int column) 返回Column域表头字符串 String getColomnName(int column) 返回Column域的域名 String getColomnTypeName(int column) 返回Column域的类型,JDBC应用,10.5设置数据源 一.打开Windows中的控制面板,,二.双击O
11、DBC DATA Source,出现“User data Source”,点击“添加”,增加新数据源,三.选择驱动程序,然后点击“完成”,四.指定数据源,,五.点击“选取”按钮,将数据源与数据库连接,六.若要设置login name的password 的话,点击数据源窗口的“高级”按钮,10.6主要过程实现,一.建立JDBC-ODBC桥接器 Java.sql包中有一个类Class,该类有一个静态方法forName用于建立JDBC-ODBC桥接器。具体代码如下:,Class.forName(“sun.jdbc.odbc. JdbcOdbcDriver);,建立桥接器时会发生异常,应该捕获这个异常
12、,代码如下:,try Class.forName( “sun.jdbc.odbc. JdbcOdbcDriver”); catch(ClassNOTFoundException e) . ,二.连接到数据库 首先用包java.sql中的Connection类声明一个对象,再使用类DriverManager调用它的静态方法getConnection创建这个对象:,Connection con=DriverManager. getConnection( “jdbc:odbc:数据源名字”, “数据源的login name”, “数据源的password”);,假设login name为snow,p
13、assword为1234,与数据源redsun连接的过程为:,Connection con=DriverManager. getConnection( “jdbc:odbc:redsun”, “snow”,“1234”);,建立时应捕获异常 try Connection con=DriverManager. getConnection( “jdbc:odbc:redsun”, “snow”,“1234”); catch(SQLException) . ,三.向数据库发送SQL语句 首先使用Statement声明一个SQL语句对象,然后通过刚才创建的连接数据库的对象con调用createStat
14、ement()方法创建这个SQL语句对象,try Statement sql= con.createStatement(); catch(SQLException e) . ,四.处理查询结果 SQL语句对数据库的查询操作将返回一个 ResultSet对象 ResultSet rs=sql.executeQuery(“SQL语句”),例: ResultSet rs=sql.executeQuery( “SELECT * FROM chengjibiao”);,ResultSet对象实际上是一个管式数据集合, Resultset对象一次只能看到一个数据行 若想显示所有的数据行,可用next()实
15、现: while(rs.next() . ,ResultSet对象可以使用位置索引(第一列用1,第二列用2 等)或使用列名称获得字段值。 while(rs.next() for(int i=0;i6;i+) namei=rs.getString(i+1); .,例:一个简单查询的例子Dbase.java,tryClass.forName( sun.jdbc.odbc.JdbcOdbcDriver); catch(ClassNotFoundException e) try con=DriverManager.getConnection( jdbc:odbc:redsun, myname,1234
16、56); sql=con.createStatement(); rs=sql.executeQuery( SELECT * FROM chengjibiao);,while(rs.next() for(int i=0;i6;i+) namei=rs.getString(i+1);,10.6 可滚动的和可更新的结果集,使用JDBC 2中的滚动结果集,可以实现在结果集中向前和向后移动,并且可以移动到结果集中的任何位置,10.6.1 可滚动的结果集 若要通过查询获得可滚动的结果集,可用如下方法: Statement stat=con.creatStatement(type, concurrency)
17、;,若是已存在的查询语句,可用如下方法: PreparedStatment stat=con.preparedStatement(command,type,concurrency);,ResultSet类的type值: TYPE_FORWARD_ONLY 结果集不能滚动 TYPE_SCROLL_INSENSITIVE 结果集可以滚动, 但不体现查询后数据库的变化 TYPE_SCROLL_SENSITIVE 结果集可以滚动, 并且体现查询后数据库的变化,ResultSet类中的Concurrency值: CONCUR_READ_ONLY 结果集不能用于更新数据库 CONCUR_UPDATABLE
18、 结果集可以用于更新数据库,此时下述方法返回的结果集是可滚动的 Statement stat= con.creatStatement (ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet rs=stat.executeQurery(query),我是可滚动的!,常用API: previous() 用于向前滚动一行relative(n)向前向后滚动n行 absolute(n)跳到第n行 getRow()获得当前行号,10.6.2可更新的结果集,此项功能用于支持对结果集中的数据进行编辑,并使数据变化情况自动在数据库中反映出来,下面语句用于获得可更新结果集 Statement stat= con.creatStatement (ResultSet.TYPE_SCROLL_INSENSI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 总溶剂生产工管理综合评优考核试卷含答案
- 烟机电工岗位设备维护考核试卷含答案
- 铁合金炉料烧结工岗中健康知识考核试卷含答案
- 2025年职业病防治宣传日知识竞赛参考试题库(含答案)
- 2025年指南年龄测试题及答案
- 2025年中国红十字会救护员培训理论考试试题含答案
- 2025年中级注册安全工程师《安全生产专业实务(建筑施工安全)》真题及答案
- 2025年注册城乡规划师考试真题及答案(附答案)
- 2025年注册安全工程师考试建筑施工(中级)安全生产专业实务试题及答案
- 2025上半年教师资格考试(初中历史)新版试卷真题附答案
- 云南省西双版纳傣族自治州景洪市2026年公务员遴选试题题库及答案
- 2026年大数据工程师笔试试卷(附答案)
- 林下种植林地协议
- 面料染色工艺质量控制细则
- 衰弱老年住院患者护理专家共识(2026完整版)
- 交通运输部所属事业单位统一招聘笔试真题2025
- 2026中国高端装备润滑材料技术门槛与军事应用价值报告
- 2026年抗菌药物合理使用全员培训计划表
- 电梯维修保养标准操作规程
- 戒烟健康科普 拥抱美好人生
- 2025新初任检察官遴选考试核心题库试题及答案
评论
0/150
提交评论