




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第14章Java数据库编程接口 主要内容 14 1数据库与JDBC概述14 1 1数据库概述14 1 2SQL14 1 3什么是JDBC14 1 4JDBC与ODBC14 1 5ODBC数据源设置14 2通过JDBC访问数据库14 2 1JDBC数据库驱动程序14 2 2JDBCAPI14 2 3编写JDBC程序的一般步骤14 3ATM应用程序 14 1 1数据库概述数据库是一个有组织的数据集合 它由一个或多个表组成 每一个表中都存储了对一类对象的数据描述 数据库管理系统 databasemanagementsystem DBMS 以一种与数据库格式一致的方式 提供了存储和组织数据的机制 当前最流行的数据库是关系型数据库 它是将数据表示为表的集合 通过建立简单表之间的关系来定义结构的一种数据库 数据库中的表按照行和列的形式来存储信息 行表示关系型数据库中的记录 列表示数据属性 比较著名的关系数据库管理系统有Oracle Sybase DB2 MySQL MicrosoftSQLServer MicrosoftAccess等 本章ATM应用程序使用小型关系数据库MicrosoftAccess 设计一个简单数据库ATM mdb 该数据库由一张表account组成 如图14 1所示 14 1 2SQL SQL是一个国际化标准语言 几乎所有关系型数据库都用SQL语言执行数据查询和操纵 理解SQL语句时要注意几点 1 SQL语言中的语句都是独立执行的 无上下文联系 2 每条语句都有自己的主关键字 语句中可包含若干子句 3 SQL语句本身不区分大小写 为突出语句格式 下面例子中保留字采用大写 1 建表语句格式 CREATETABLEtable name column1type not null 功能 在当前数据库中创建一张名为的table name表格结构 2 删除表格式 DROPtable name功能 在当前数据库中删除名为table name的表 3 查询语句格式 SELECTcol1 col2 colnFROMtable name WHEREcondition expression 功能 从数据库表中检索满足条件的记录 WHERE子句是可选项 它可以包含 和LIKE运算符 LIKE运算符用于带有通配符百分号 和下划线 的模式匹配 4 插入语句格式 INSERTINTOtable name col1 col2 coln VALUES v1 v2 vn 功能 在表table name中插入一条记录 各列的值依次分别为v1 v2 vn等 若某列的列名未给 则值为NULL 注意 1 如果所有的列名都未给 则在Values中必须依次给出所有列的值 2 给出的值的类型必须与对应的列的类型相一致 5 更新语句格式 UPDATEtable nameSETcol1 v1 col2 v2 coln vn WHEREcondition expression 功能 更新表table name中满足条件的记录 使列col1的值为v1 列col2的值为v2 列coln的值为vn等 注意 如不给出条件 则更新表中所有记录 例如 account表中 账号为 1280316401 的账户取款200元后应更新余额 使用语句如下 UPDATEaccountSETaccountAmount accountAmount 200WHEREaccountNumber 1280316401 6 删除语句格式 DELETEFROMtable name WHEREcondition expression 功能 删除表table name中满足条件的记录 特别注意 如果不给出条件 则删除表中所有记录 例如 对account表中 账号为 1280316401 的账户进行销户处理 语句如下 DELETEFORMaccountWHEREaccountNumber 1280316401 14 1 3什么是JDBC Java程序使用JDBC与数据库进行通信 并用它操纵数据库中的数据 JDBC是JavaDataBaseConnectivity的缩写 它是一种可用于执行SQL语句的JavaAPI 由一组用Java编写的类和接口组成 JDBC主要提供了跨平台的数据库访问方法 为数据库应用开发人员提供了一种标准的应用程序设计接口 使开发人员可以用纯Java语言编写完整的数据库应用程序 类似于Microsoft的ODBC JDBC是一种规范 它让各数据库厂商为Java程序员提供标准的数据库访问类和接口 这样就使得独立于DBMS的Java应用程序的开发工具和产品成为可能 14 1 4JDBC与ODBC JDBC与Microsoft开放数据库连接 ODBC 的工作原理非常类似 ODBC是OpenDatabaseConnectivity的英文简写 它是由Microsoft提出的为连接不同数据库而制定的一种接口标准 是用C语言实现的 标准应用程序数据接口 通过ODBCAPI 应用程序可以存取保存在多种不同数据库管理系统 DBMS 中的数据 而不论每个DBMS使用了何种数据存储格式和编程接口 ODBC ODBC是OpenDatabaseConnectivity的英文简写 它是由Microsoft提出的为连接不同数据库而制定的一种接口标准 是用C语言实现的 标准应用程序数据接口 通过ODBCAPI 应用程序可以存取保存在多种不同数据库管理系统 DBMS 中的数据 而不论每个DBMS使用了何种数据存储格式和编程接口 几乎所有的数据库都支持这一标准 ODBC有其不足之处 比如它并不容易使用 没有面向对象的特性等等 ODBC的结构包括四个主要部分 应用程序接口 驱动器管理器 数据库驱动器和数据源 14 1 5ODBC数据源设置 进行ODBC数据源设置 在WindowsXP环境下 可按路径开始菜单 设置 控制面板 管理工具 数据源 ODBC 双击可打开如图14 3所示的对话框 14 2通过JDBC访问数据库 14 2 1JDBC数据库驱动程序JDBC数据库驱动程序的功能是 一面用底层协议与数据库服务器进行对话 一面用JDBCAPI与用户程序进行对话 为实现 与平台无关 的特点 JDBC为我们提供了一个 驱动程序管理器 它能动态维护数据库查询所需的所有驱动程序对象 用户可以从数据库供应商那里获得JDBC数据库驱动程序 JDBC驱动程序类型 1 JDBC ODBCBridge将对JDBC的调用转化为ODBC的调用 要求本地机必须安装ODBC驱动程序 然后注册一个ODBC数据源名 2 JDBC NativeAPIBridge直接将用户的调用转化为对数据库客户端API的调用 要求本地机必须安装好特定的驱动程序 显然限制了应用程序对其它数据库的使用 3 JDBC MiddleWare它是独立于数据库服务器的 它和一个中间件服务器通讯 由中间件负责与数据库通讯 4 PureJDBCDriver使用该类型的应用程序无需安装附加的软件 所有对数据库的操作都直接由JDBC驱动程序完成 14 2 2JDBCAPI 简单地说 JDBC主要完成下列三项任务 1 同一个数据库建立连接 2 向数据库发送SQL语句 3 处理数据库返回的结果 这些任务由JDBCAPI来完成 JDBCAPI被描述成为一组抽象的Java接口 这些接口都可能产生异常 如 ClassNotFoundException SQLException异常 因而编写程序时必须对抛出的异常进行捕获 1 驱动程序管理器DrvierManager用来加载驱动程序 管理应用程序和已注册的驱动程序的连接 2 连接Connection封装了应用程序与数据库之间的连接信息 3 驱动程序Driver负责定位并访问数据库 建立数据库连接和处理所有与数据库的通讯 4 语句Statement用来在数据库中执行一条SQL语句 5 结果集ResultSet负责保存执行查询后返回的数据 1 DriverManager类 DriverManager类是JDBC的管理层 作用于用户程序和驱动程序之间 它跟踪可用的驱动程序 并在数据库和相应驱动程序之间建立连接 负责管理JDBC驱动程序 使用JDBC驱动程序之前 必须先将驱动程序加载并向DriverManager注册后才可以使用 同时提供方法来建立与数据库的连接 加载Driver类 并且实现自动在DriverManager中注册 这一过程通常通过调用方法Class forName 来完成 这将显式地加载驱动程序类 Class forName sun jdbc odbc JdbcOdbcDriver 加载驱动程序 这里是一个JDBC ODBC桥 类型一或者采用另外一种方法 DriverManager registerDriver newsun jdbc odbc JdbcOdbcDriver Connectioncon DriverManager getConnection jdbc odbc userlist user 表示是通过ODBC来连接数据库的 userlist为ODBC数据源名 user为此数据源的某个表名字 建立一个连接 SqlServer7 0 2000数据库 Class forName com microsoft jdbc sqlserver SQLServerDriver Stringurl jdbc microsoft sqlserver localhost 1433 DatabaseName mydb mydb为数据库Stringuser sa Stringpassword Connectionconn DriverManager getConnection url user password 2 Connection接口 Connection实际上是一个接口 它负责维护Java应用程序与数据库之间的连接 Connection对象代表与数据库的连接 连接过程包括所执行的SQL语句和在该连接上所返回的结果 一个应用程序可与单个数据库有一个或多个连接 或者可与许多数据库有连接 Connection实际上是接口 因而不能实例化 通常使用DriverManager getConnection方法返回一个Connection对象 Connectioncon DriverManager getConnection url 建立一个连接 创建Statement对象Statementstmt con createStatement 3 Statement类和接口 Statement对象用于将SQL语句发送到数据库中 并返回结果 1 创建Statement对象Statementstmt con createStatement 2 使用Statement对象执行语句Stringsql select fromuserlistwhereusername username ResultSetrs stmt executeQuery sql 3 语句完成语句在已执行且所有结果返回时 即认为已完成 对于返回一个结果集的executeQuery方法 在检索完ResultSet对象的所有行时该语句完成 对于方法executeUpdate 当它执行时语句即完成 4 ResultSet接口 ResultSet结果集一般是一个表 其中有查询所返回的列标题及相应的值 即包含符合SQL语句中条件的所有行 并且它通过一套getXXX方法 这些get方法可以访问当前行中的不同列 提供了对这些行中数据的访问 SeetheJDKAPIHelpDocument 4 ResultSet类有了SQL语句对象后 调用语句对象的方法executeQuery 执行SQL语句查询 并将查询结果存放在一个用ResultSet类声明的对象中 例如 以下代码读取学生成绩表存于rs对象中 ResultSetrs sql executeQuery SELECT FROMksInfo ResultSet对象实际上是一个由查询结果数据构成的表 是一个管式数据集 由统一形式的数据行组成 一行对应一条查询记录 在ResultSet对象中隐含着一个游标 一次只能获得游标当前所指的数据行 用next方法可取下一个数据行 用数据行的字段 列 名称或位置索引 自1开始 调用形如getXXXX 方法获得记录的字段值 ResultSet对象的部分方法 1 bytegetByte intcolumnIndex 返回指定字段的字节值 2 DategetDate intcolumnIndex 返回指定字段的日期值 3 floatgetFloat intcolumnIndex 返回指定字段的浮点值 4 intgetInt intcolumnIndex 返回指定字段整数值 5 StringgetString intcolumnIndex 返回指定字段的字符串值 6 doublegetDouble StringcolumnName 返回指定字段的双精度值 7 longgetLong StringcolumnName 返回指定字段的long型整值 8 booleannext 返回是否还有下一字段 以上方法中的columnIndex是位置索引 用于指定字段 columnName是字段名 用户需要在查询结果集上浏览 或前后移动 或显示结果集的指定记录 这称为可滚动结果集 程序要获得一个可滚动结果集 只要在获得SQL的语句对象时 增加指定结果集的两个参数即可 例如 以下代码所示 Statementstmt con createStatement type concurrency ResultSetre stmt executeQuery SQL语句 语句对象stmt的SQL查询就能得到相应类型的结果集 int型参数type决定可滚动集的滚动方式 ResultSet TYPE FORWORD ONLY 结果集的游标只能向下滚动 ResultSet TYPE SCROLL INSENSITIVE 游标可上下移动 当数据库变化时 当前结果集不变 ResultSet TYPE SCROLL SENSITIVE 游标可上下移动 当数据库变化时 当前结果集同步改变 int型参数concurrency决定数据库是否与可滚动集同步更新 ResultSet CONCUR READ ONLY 不能用结果集更新数据库中的表 ResultSet CONCUR UPDATETABLE 能用结果集更新数据库中的表 利用连接对象connect 创建Statement对象stmt 指定结果集可滚动 并以只读方式读数据库 Stmt connect createStatement ResultSet TYPE SCROLL SENSITIVE ResultSet CONCUR READ ONLY 可滚动集上另外一些常用的方法如下 booleanprevious 将游标向上移动 当移到结果集第一行时 返回false voidbeforeFirst 将游标移到结果集的第一行前 voidafterLast 将游标移到最后一行之后 booleannext 将游标移到下一行 voidfirst 将游标移到第一行 voidlast 将游标移到最后一行 booleanisAfterLast 判游标是否在最后一行之后 booleanisBeforeFirst 判游标是否在第一行之前 booleanisLast 判游标是否在最后一行 booleanisFirst 判游标是否在第一行 intgetRow 获取当前所指的行 行号自1开始编号 结果集空 返回0 booleanabsolute introw 将游标移到row行 ResultSetrs stmt executeQuery sql 列印结果集while rs next Stringps rs getString password if ps equals password 验证通过ok true 14 2 3编写JDBC程序一般步骤 importjava sql 加载驱动程序 可能抛出ClassNotFoundException异常 Class forName driverClass 获得jdbc连接Connectioncon DriverManager getConnection url 创建Statement对象Statementstmt con createStatement 得到查询结果集或者执行update等操作ResultSetrs stmt executeQuery select fromstudent 关闭数据库连接con close 注意 try catch SQLExceptione 14 3ATM应用程序 了解了JDBC基本原理以及掌握了JDBCAPI编程步骤后 现在完成简易数据库应用程序的编写 例14 1 举例 从student mdb读入数据 并显示 Student mdb是一个Excell数据库 里面有成绩表 操作步骤 1 在ODBC下把redsun与Studeng mdb联系起来 设置username snowPassword ookk2 运行程序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中防疫知识培训课件
- 生态补偿机制在生态补偿与生态环境保护应急管理体系中的应用报告2025
- 2025年银行行业当前竞争格局与未来发展趋势分析报告
- 2025年膜结构行业当前发展趋势与投资机遇洞察报告
- 2025年文物保护技师专业知识考核试题及答案
- 2025年文化遗产传承管理硕士研究生入学考试试卷及答案
- 2025年文化遗产保护规划师资格考试试题及答案解析
- 办公室工作过渡句(2025年8月13日)
- 2025年文化创意产业发展与政策研究试卷及答案
- 公式本-古蔺县桂花乡墩梓河防洪工程环评报告
- 2024年山西交通控股集团有限公司招聘真题
- 2025年妊娠期糖尿病护理查房记录模板范文
- 2025年传动部件行业当前发展趋势与投资机遇洞察报告
- 基孔肯雅热预防宣传课件
- 2025-2030中国海水淡化技术经济性分析与政策补贴机制报告
- 学校学生一日常规管理细则(2025年修订)
- 【语文】小学四年级下册期末质量模拟试题测试卷
- 人大代表基础知识培训课件
- 2025年高压电工证考试题库及答案
- 湖北省襄阳市枣阳市2024-2025学年七年级下学期期末考试英语试卷(含答案无听力部分)
- 光储充一体化项目可行性研究报告
评论
0/150
提交评论