版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java 数据库技术异常数据流第1页,共33页。案例分析界面数据库设计第2页,共33页。1、Java数据库编程基础1、 JDBC概述JDBC(Java DataBase Connection) 、Java数据库连接。功能:是Sun公司在1996年提出的一项技术(工具包),主要用于进行Java数据库程序开发。 该工具包使得Java编程人员可以连接到一个 数据库,进而使用SQL 对数据库进行查询和更新操 作。 可以理解成是对查询分析器的模拟实现 第3页,共33页。JDBC运行原理Java数据库应用程序JDBC驱动程序管理器JDBC/ODBC桥接器ODBC驱动程序DB供应商提供的JDBC驱动程序DB
2、JDBC APIJDBC驱动程序 APISQL命令(SQL Server、Oracle)第4页,共33页。JDBC结构、JDBC与JDBC驱动程序的关系: JDBC=JDBC驱动程序管理器JDBC DriverAPI+供编程人员使用供数据库厂商使用JDBCAPI+JDBC驱动程序实现实现java.sql包数据库厂商提供第5页,共33页。java.Sql包功能类、接口(斜体)JDBCAPI执行SQL语句对SQL语句进行封装,并用此sql语句操作数据库Java.sql. Connection Java.sql. StatementJava.sql. PreparedStatement驱动程序管理器
3、装载和管理各个数据库驱动Java.sql. DriverManager执行sql语句的结果集将SQL语句的执行结果封装成象Java.sql. ResultSetJava.sql. ResultSetMetaData辅助类特殊数据类型包装类、异常类Driever API供应商必须实现的驱动程序APIJava.sql. Driver Java.sql. DatabaseMetaData 第6页,共33页。JDBC 特点 用Java语言编写的;可移植性好;能用于所有的数据库JDBC 驱动程序类型 JDBC-ODBC桥接器和ODBC驱动程序SQL Server数据库Java数据库程序ODBCJDBCO
4、DBC桥接器不建议用,因为可移植性差 纯Java编写的JDBC网络驱动程序SQL Server数据库Java数据库程序JDBC网络驱动第7页,共33页。2、 java数据库程序开发步骤步骤2: 加载和注册JDBC-ODBC桥接驱动程序 调用class类的forname()方法加载数据库JDBC驱动程序。例如: 步骤3:获得数据库连接 调用驱动程序管理器(DriverManager对象)的getConnection() 方法,返回Connection对象。 例如:Connection con = DriverManager.getConnection (“jdbc:odbc:数据源”,“用户名”
5、,“密码); 以JDBC-ODBC方式访问数据库步骤1: 准备工作:在ODBC数据源中设置数据源Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver);第8页,共33页。步骤2: 加载和注册JDBC驱动程序 调用class类的forname()方法加载数据库JDBC驱动程序。例如: 步骤3:获得数据库连接 调用驱动程序管理器(DriverManager对象)的getConnection() 方法,返回Connection对象。 例如:Connection con = DriverManager.getConnection (jdbc:microsoft:sql
6、server:/localhost:1433;DatabaseName=bookshop,“sa,“sa);以JDBC方式sqlserver步骤1: 准备工作:下载驱动程序,将SQL Server驱动程序包加入到项目classpath中Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);第9页,共33页。步骤4:获得参数化执行SQL语句的PreparedStatement对象 调用connect对象的prepareStatement(String sql)方法 。例如: String sql = “select * from
7、book where book_id=?”;PreparedStatement pst = conn. prepareStatement (sql); 步骤5: 参数帮定 调用PreparedStatement对象的setXXX(intparameterIndex, intx)方法邦定参数。 说明: 在JDBC中,对SQL的包装有3种方式:java.sql.Statement 用于执行不带参数的简单sql语句java.sql.PrepareStatement。用于执行带或不带参数的预编译sql语句java.sql.CallableStatement 。 用于执行对数据库的存储过程的调用。推荐使
8、用java.sql.PrepareStatement,因为它的功能包含了java.sql.Statement,在打开状态下可重复执行多次,而且效率比较高。第10页,共33页。步骤6: 指定结果集的属性Statement statement = conn.createStatement( ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE )第一个参数指定 ResultSet 的类型。其选项有:TYPE_FORWARD_ONLY:缺省类型。只允许向前访问一次,并且不会受到其他用户对该数据库所作更改的影响。 TYPE_SCROLL
9、_INSENSITIVE:允许在列表中向前或向后移动,甚至可以进行特定定位,例如移至列表中的第四个记录或者从当前位置向后移动两个记录。不会受到其他用户对该数据库所作更改的影响。 TYPE_SCROLL_SENSITIVE:象 TYPE_SCROLL_INSENSITIVE 一样,允许在记录中定位。这种类型受到其他用户所作更改的影响。如果用户在执行完查询之后删除一个记录,那个记录将从 ResultSet 中消失。类似的,对数据值的更改也将反映在 ResultSet 中。 第二个参数设置 ResultSet 的并发性,该参数确定是否可以更新 ResultSet。其选项有:CONCUR_READ_O
10、NLY:这是缺省值,指定不可以更新 ResultSet CONCUR_UPDATABLE:指定可以更新 ResultSet 第11页,共33页。步骤7: 处理查询结果ResultSet rs = pst. executeQuery(); /查询时Int i=pst. executeUpdate(sql); /增 删 改while (rs.next() /用 rs.get(“列名”)获得当前行的某列的值 /用 rs.get(int)获得当前行的值 步骤8: 关闭连接,释放资源pst.close();con.close();第12页,共33页。 步骤 从错误信息中找到,在代码的哪一行出错? 在此行
11、出了什么错误? 根据出错信息改正此错误再次运行代码,看此错误是否已经改掉(是否还报此错误?) JDBC 编程常见运行时错误的改正第13页,共33页。Java异常处理异常是指程序在运行时所发生的错误或者不正常的状态。Java程序运行过程中所发生的异常事件可分为两类:错误(Error):JVM系统内部错误、资源耗尽等严重情况违例(Exception): 其它因编程错误或偶然的外在因素导致的一般性问题,例如:对负数开平方根试图读取不存在的文件网络连接中断例题 第八章:Test1.java第14页,共33页。Java异常类层次第15页,共33页。常见异常RuntimeException 错误的类型转换
12、数组下标越界空指针访问IOExeption从一个不存在的文件中读取数据越过文件结尾继续读取连接一个不存在的URL第16页,共33页。异常处理机制Java程序的执行过程中如出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出(throw)异常。当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。程序员通常只能处理违例(Exception),而对错误(Error)无能为力例题 第八章:Te
13、st2.java第17页,共33页。捕获异常捕获异常是通过try-catch-finally语句实现的。try./可能产生异常的代码catch( ExceptionName1 e )./当产生ExceptionName1型异常时的处置措施catch( ExceptionName2 e ). /当产生ExceptionName2型异常时的处置措施 finally. /无条件执行的语句 finally捕获异常的最后一步是通过finally语句为异常处理提供一个统一的出口,使得在控制流转到程序的其它部分以前,能够对程序的状态作统一的管理。不论在try代码块中是否发生了异常事件,finally块中的语
14、句都会被执行。finally语句是任选的第18页,共33页。捕获异常当使用多个catch语句时,一定要注意先写子类异常,再写父类异常,当父类在前时,执行到父类异常匹配后,就不在往下执行。例题: 第八章: yichang5.java 第19页,共33页。声明抛弃异常声明抛弃异常是Java中处理异常的第二种方式如果一个方法(中的语句执行时)可能生成某种异常,但是并不能确定如何处理这种异常,则此方法应声明抛弃异常,表明该方法将不对这些异常进行处理,而由该方法的调用者负责处理声明抛弃举例:例题: 第八章: yichang6.java 第20页,共33页。人工抛出异常Java异常类对象除在程序执行过程中
15、出现异常时由系统自动生成并抛出,也可根据需要人工创建并抛出首先要自定义异常类,通过继承Throwable或其子类的Exception来实现。例题: 第八章: yichang9.java 第21页,共33页。文件程序终端文件程序网络端点数据流起点终点 网络端点文件,字符串存储区数据流什么是数据流 ?数据流是一组有顺序,有起点和终点的字符集合。在java中有关流的操作使用 io 包import java.io.*;第22页,共33页。流的分类流字节流字符流流输入流输出流按照处理数据的单位划分按照输入输出方式划分第23页,共33页。Java.io中的四个类:以字节为对象: 输入流:InputStre
16、am 输出流:OutputStream以字符为对象: 输入流: Reader 输出流: Writer字节流和字符流的比较字节流适用于各类文件每次读写8位字节效率较低字符流适用于16位的字符文件每次读写16位字符效率较高第24页,共33页。文件处理1、File类(1)所有对文件的操作都要使用File类.(2)其构造: File(“文件名”); File(“目录名”,“文件名”);2、字符文件: FileReader类、 FileWriter类3、字节文件: FileInput类、FileOutput类定义在包java.io中第25页,共33页。2、操作字符文件的类FileReader 读取文件;
17、FileWriter 写入文件;BufferedReader 输入到缓冲区。BufferedWriter 输出到缓冲区。从输入流中按行读取字符的方法: String readLine();向输出流写入多个字符的方法: write(Strings, intoff, intlen); 将指定的字符串s从偏移量 off 开始的 len 个字符写入文件输出流。举例: AddStudent.java第26页,共33页。保存文本文件 FileWriter fw=new FileWriter(b.txt); BufferedWriter bw=new BufferedWriter(fw);建立输出通道 St
18、ring str=txt.getText(); bw.write(str,0,str.length(); bw.flush();完成写的动作刷新缓冲区强制写入第27页,共33页。文件对象的建立File fp=new File(“c:file1.dat”);FileInputStream类用来打开一个输入文件FileOutputStream类用来打开一个输出文件二进制文件的处理第28页,共33页。FileInputStream类的常用方法:read():从流中读入数据close():关闭流FileOutputStream类的方法:write(byte b , int off, int len )
19、:在数组b中,从off开始,写入len个字节的数据。b 数组Off开始,有 l en 个字节二进制文件的处理注意:二进制文件必须按字节读取第29页,共33页。将一个文件内容复制到另一个文件中try File inFile=new File(“file1.dat); File outFile=new File( file2.dat); FileInputStream fis=new FileInputStream(inFile); FileInputStream fos=new FileOutputStream(outFile); int c; while(c=fis.read()!=-1) fos.write(c); fis.close(); fos.close();catch(FileNotFoundException e) catch(IOException ee) 第30页,共33页。文件目录zip文件三、随机存取文件类RandomAccessFile zip文件需要用随机方法
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于《洛神赋图》图像叙事的空间转译研究
- 陕西兵马俑遗产概述
- 2025年政府专职消防文员招录考试笔试参考题库选择题50题及答案
- 2025年医院三基知识考试试题库及答案(共120题)
- 功能食品选择题库及答案
- 2025年六语下册单元试卷及答案
- 《植入式静脉给药装置护理技术》专业解读2026
- 2025年健康课素养测试题及答案
- 庙会出租合同范本
- 河南医学招聘考试题目及答案
- 2025年皮肤科年度工作总结报告
- 实施指南(2025)《HGT 6114-2022 废酸中重金属快速检测方法 能量 - 色散 X 射线荧光光谱法》
- 厨师厨工考试题及答案
- 理化检测知识培训课件
- 2025领导干部政治理论知识网络培训题库及参考答案
- 医院医疗质量同质化管理办法
- GB/T 31526-2025电子商务平台服务质量评价
- 智能管道泄漏检测技术可行性分析报告
- AGV小车安全培训课件
- 客流统计施工方案
- T∕CSTM 00348-2021 粉末冶金高速工具钢
评论
0/150
提交评论