基于java的数据库技术及其应用内容摘要:
配合 setSavepoint()方法所设置的退回点,退回到相应的点 getMetaData 返回用于连接的一个 DatabaseMetaData对象 getTransactionIsolation() 返回连接的事务处理隔离层 getWarnings() 返回在这个连接中通过调用报告的第一个 SQL警告 inReadOnly() 返回连接的只读状态 setAutoClose() 激活默认 /禁止连接的只读状态 setReadOnly() 激活 /禁止连接的只读模式 setTransactionIsolation() 为新建的连接设置事务处理隔离层 4. Statement对象用于将 SQL语句发送到数据库中,实际上 有 三种 Statement对象 , 他们都作为在给定连接上执行 SQL 语句的包容器: Statement、 PreparedStatement(他从Statement中继承而来)和 CallableStatement(它从 PreparedStatement中继承而来)。 这些对象都是专用于发送特定类型的 SQL语句的,他们的区别在于 Statement对象用于执行不带参数的 SQL语句, PreparedStatement 对象用于带或不带 IN参数的预编译 SQL 语句, CallableStatement对象用于执行对 数据库已存储过程的调用。 9 一般情况下在建立了特定数据库连接后,就可以用该连接发送 SQL 语句了, Statemnt对象用 Connection的 createStatement()方法创建,如在 ACCESS数据库 中使用 JDBCODBC Bridge作为驱动 时 ,它的一般形式为 : Connection con (jdbc:odbc:数据源名字 ,数据源的登录名 login name,数据源的密码 password )。 Statement stmt ()。 如果没有设置数据源的登录名和密码 ,那么这两个参数可以用空字符串代替 , 即 “ ”。 有以 下 几 个: execute()执行一个可能返回多个结果集的 SQL 语句; executeQuery()执行返回一个 ResultSet 对象结果的 SELECT 语句;executeUpdate()执行一个不返回 ResultSet对象的删除 delect 、插入 insert into、或更改 update的 SQL 语句; close()该方法的作用是释放资源 ,getResultSet()方法的作用是为一个 ResultSet 对象返回当前的结果。 GetUpdateCount()方法返回当前更新计算的结果 ,但必须检查结果是否为一个 ResultSet对象或一个整数值。 5. 该类是用来分析 SQL查询语句的结果,它包含符合 SQL语句中的所有行,并且它能通过一套 getXXX()方法 对这些行中 的 数据 进行 访问。 ResultSet类中提供了四个移动行的方法,next()将数据指针下移一行; first()将数据指针移到结果集的第一行; last()将数据指针移到结果集的最后一行; previous()将数据指针上移一行。 获得一 行 数据后 ,ResultSet 对象可以使用位置索引 (第一列使用 1,第二列使用 2„„ )或使用列名称 ,就可以通过 getXXX()方法获得字段值 了。 可能是 JDK 的版本的 原因 ,getString()方法有时只能用位置索引作为参数 ,否则既不报错 ,也取不到数据 ,我多次遇见过 这种 的情况 ,所以 getString()方法最好用位置索引作为参数 ,以免出错。 表 22是具体的 getXXX()方法 : 表 2- 2 ResultSet对象的 getXXX()方法 [2] 返回类型 方法名称及其参数 byte getByte(int columnIndex) Date getDate(int columnIndex) double getDouble(int columnIndex) float getFloat(int columnIndex) int getInt(int columnIndex) long getLong(int columnIndex) String getString(int columnIndex) byte getByte(String columnName) Date getDate(String columnNam) double getDouble(String columnNam) float getFloat(String columnNam) int getInt(String columnNam) long getLong(String columnNam) String getString(String columnNam) (六 ) JDBC典型应用模型 10 在实际应用中我们可以采用 两种开发模型 ,一种是两层开发模型 ,另一种是三层 (或多层 )开发模型。 两层模型如图 27 所示 ,在 两层 结构 模型 中 ,应用程序 Application 或小的应用程序Applet作为客户端直接用驱动程序和数据库进行交互 ,客户端的 SQL请求由驱动程序送到数 据库 ,结果直接返回客户端 .数据库可以是本地的也可以 是 另一台计算机上的 ,其中客户端所 在的计算机为客户机 ,数据库所在的计算机为服务器。 这种配置就是客户机 /服务器配置。 图 27 JDBC 两层应用结 构 [13] 三层模型如图 28所示。 在三层结构中 数据库操作命令发送到中间层 ,由中间层将操作命令所要求的 SQL语句发送给数据库 ,数据库将 SQL语句的结果返回到中间层 ,中间层在将结果返回给应用 程序 ,客户端与中间层连接有 很多种途径 ,比如客户机是网络浏览器 的 ,可通过HTTP协议将操作命令送到中间层 ,如果中间层为一般的 Java应用程序 ,中间层在另一台网络计算机上 ,可以通过 RMI(Remote Method Invocation)远程方法调用联系 ,也可以在同一台计算机上建立客户端和中间服务层 ,只需要将程序所需要的各数 据库功能模块封装在独立的Java类里就可以了。 三层结构很清楚的将客户端 ,事务逻辑 (中间层 )和源数据分开 ,三层结构与两层结构相比较有如下优点 :(1)当数据库系统更换时 ,不用修改客户端程序 ,仅修改中间层。 (2)将数据库从客户端脱离出来 ,减小了客户端的设计难度 .(3)可以单独优化中间层 ,以求获得更高的速访问速率。 图 28 JDBC 三 层应用结构 [13] (七 ) 数据库访问过程 的步骤 上边我们介绍了 JDBC 的结构和常用的类,那么下边我们根据这一结构,运用这些常用的类和方法,来对 JDBC访问数据库的 基本步骤作以 介绍。 一个 JDBC基本程序应该包括的步骤有: 1. 加载 包和 必要的类 package 包名。 import .*。 import .*。 import .*。 import .*。 import .*。 import .*。 import .*。 import .*。 这些类一般是关于图形界面和数据库的。 2. 连接数据库 11 (1) 加载 JDBC驱动程序 要通过 JDBC来连接数据库,应用程序必需加载 JDBC驱动程序,这样才可能建立与数据 库的连接。 DriverManager 类负责选取数据库驱动程序和建立新的数据库连接,DriverManager类实现了。 但要先 加载 我们的驱动程序, 方法有两种 : 1).通过 调用 ()方法 ,该方法是显示的加载驱动类 ,由于与外部设置无关 ,因此这是一种较好的选择。 根据驱动 程序 的不同装载 时也有些区别。 下边给出 三 个实例 : a). (“ sun,” )。 //加载的是 JDBCODBC桥驱动 . b). (“ ” )。 //加载的是 microsoft SQL Server 2020 Driver for JDBC c). (“ ” )。 //加载的是用纯 Java代码开发的驱 //程序 ,这种方法很适合跨平台的开发 2).其实还可以通过设置系统属性 ,这种方式允许用户修改一个属性文件 来安装驱动。 属性包含一个驱动程序管理器 可激活 驱动程序的名字列表。 驱动程序名字之间用逗号隔开,但你需要知道厂商提供的驱动程序类名,而且要确保驱动程序文件在指定的路径上。 如: =:。 (2) JDBC标识数据源( URL) URL是 用来描述一个电子资源,并使用了一种唯一地标识该资源的方法。 JDBC使用 URLs 来标识驱动程序和数据源这两者的位置 [10],格式如下: jdbc:子协议 :数据库子名称 其中 jdbc作为协议是 固定不变的 , 子协议 部分是 数据库机制的名称 ,如果数据库在其它计算机上 ,还可以将端口号作 为 URL的一部分。 例 1: jdbc:oracle:thin@site:port:dasebase //Oracle_Thin驱动使用的 URL格式 例 2: jdbc:odbc:datasourse:odbcoptions //使用 JDBCODBC桥时的 URL格式 例 3: jdbc:microsoft: //使用的 microsoft SQL Server 2020 Driver for JDBC作为驱动 ,其中 zhengfan //是数据库的机器名, 1433是 SQL Server监听接口, ( 3) JDBC与常用数据库 建立连接 在注册 了驱动程序,定义了 URL,并知道数据库的用户名和密码后,就可以调用DriverManager的 getConnection方法来建立一个 Connecton对象了: Connecton con =(URL, username,password)。 具有上边的知识,我们下边给出 JDBC与 常用的数据库连接的代码 (JDBC与 Access的连接这里没有给出 ,因为在后边 开发 的 “ 简单银行系统 ” 中我们使用的就是 Access 作为数据库 ,在那里有 更详细的说明 ) , 这些代码现在就比较容易看懂了。 1)连接 SQL Server 2020数据库 [7] (“ ” )。 String url=“ jdbc: //test为数据库名程 String user=“ 用户名 ” ; String password=“密码”; Connection conn =(url,user,password)。 12 Statement stmt=( )。 2)链接 Oracle 9i数据库 [7] (“ ” )。 String url=” jdbc:oracle:thin:@localhost:1521:test” //test为数据库 SID String user=“ 用户名 ” ; String password=“密码”; Connection conn =(url,user,password)。 Statement stmt=( )。 我们可以发现上边的代码其实比较相似,所以以后遇到没有见过的数据库,就可以按照这个步骤建立连接,需要修改的仅仅是参数而已。 3. 数据库的操作 1). 建立一个 Statement对象 Statement 类是接口类,所有不能直接实例化一个 Statement 对想,而是调用一个Connection 对 象 的 createStatement() 方 法 来 获 取 , 如 : Statement stmt =(),当建立了一个 Statement对象后就可以根据不同的需要,通过调用 executeQuery()、 executeUpdate()、 execute()三个方法来执行数据库事务了。 这三个方法在上边介绍 Statement类时已经作了详细的说明了 ,此处不在介绍了。 2). 建立一个 ResultSet对象 ResultSet对象是用来保存和 执行 SQL查询语句返回结果的对象, 含有 SQL执行后产生的表 ,方法为 : ResultSet rs=(“ select * from 数据库 中的表 名 ” )。 可以通过 next()方法在表中移动 ,用 getXXX()方法获得表中的数据 ,(其中 XXX为是要获得数据的数据类型类 ,比如 :Int,String,Date,Time等 ,前边有详细介绍 ) 3). 关闭 ResultSet对象、 Statement对象、 Connection对象 这三个对象都 有 close()方法,使用完对象后调用该方法,将处理和释放这些对象所占的资源 ,一名优秀的程序员养 成 良好的编程习惯是有必要的。 4. 异常处理 因为 访问 数据库 时 可能涉及到 读取 脏数据等 问题,使得数据的正确性不能保证,所以很多地方。基于java的数据库技术及其应用
相关推荐
界面包的职责是: ( 1) 与用户的交互,接收用户的各种输入以及输出各种提示信息或处理结果。 ( 2) 对于输入的数据进行数据校验,过滤非法数据。 ( 3) 向业务处理对象发送处理请求。 用户界面包图展开如图 32所示: 用 户 界 面输 入 , 输 出数 据 效 验发 送 业 务 处 理 请 求 图 32 用户界面包展开图 Fig32 Package Diagram of Users
课程设计内容 需求分析 魔板游戏就是大家以前常玩的拼板游戏。 就是将一幅完整 的图片分成小块,打乱顺序,再拼好,并且只能将图块和临界的空格交换位置。 用最短的时间和最省的步骤将图形拼好,此玩法虽然简单,但特别考验智力,魔板游戏与魔方游戏相似属于益智游戏。 2020 级程序设计综合实验报告 10 此项目我们需要通过面向对象的 Java 程序设计来实现,游戏设计中需要用到 GUI 图形界面的设计
ne 先在内存中进行索引操作,并根据一定的批量进行文件的写入。 这个批次的间隔越大,文件的写入次数越少,但占用内存会很多。 反之占用内存少,但文件 IO操作频 繁,索引速度会很慢。 在 IndexWriter 中有一 MERGE_FACTOR 参数可以帮助你在构造索引器后根据应用环境的情况充分利用内存减少文件的操作。 根据我的使用经验:缺省 Indexer 是每 20 条记录索引后写入一次,每
=()。 (color)。 Font f = new Font(宋体 ,size)。 (f)。 (str,x,y)。 (c)。 } public static void main(String[] args){ new GamePlaneFrame().launchFrame()。 } public void launchFrame(){ ()。 addKeyListener(new
定标题和 /或图标的选项卡,在一组组件之间进行切换。 JTextArea 类负责创建一个显示纯文本的多行区域。 它作为一个轻量级组件 Container 类负责创建一个容器对象,此容器可以包含其它组件。 AboutDialog 类是 JDialog 类的子类,负责创建一个显示对话框。 10 : jMainPane、 jPanel jPanel变量是 JPane1 创建的面板容器。 jt jt2
环境,及先进的系统开发方案,从而达到充分利用现有 资源,提高系统开发水平和应用效果 的 目的。 (1) 系统应基本 完成服务器代理功能 ,满足 多用户同时连接的请求 需要,并达到操作过程简便。 (2) 系统采用 多线程的连接技术,实现服务器端和客户 端整合的方式 ,显示用户界面 的 信息,基本操作。 Server(服务器端)负责实现数据服务。 (3) 系统应具备数据库维护功能