Java数据库技术异常数据流_第1页
Java数据库技术异常数据流_第2页
Java数据库技术异常数据流_第3页
Java数据库技术异常数据流_第4页
Java数据库技术异常数据流_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1Java数据库技术异常数据流2案例分析界面数据库设计31、Java数据库编程根底1、JDBC概述JDBC(JavaDataBaseConnection)、Java数据库连接。功能:是Sun公司在1996年提出的一项技术〔工具包〕,主要用于进行Java数据库程序开发。─该工具包使得Java编程人员可以连接到一个数据库,进而使用SQL对数据库进行查询和更新操作。─可以理解成是对查询分析器的模拟实现4JDBC运行原理Java数据库应用程序JDBC驱动程序管理器JDBC/ODBC桥接器ODBC驱动程序DB供给商提供的JDBC驱动程序DBJDBCAPIJDBC驱动程序APISQL命令〔SQLServer、Oracle〕5JDBC结构、JDBC与JDBC驱动程序的关系:

JDBC=JDBC驱动程序管理器JDBCDriverAPI+供编程人员使用供数据库厂商使用JDBCAPI+JDBC驱动程序实现实现数据库厂商提供6包功能类、接口(斜体)JDBCAPI执行SQL语句—对SQL语句进行封装,并用此sql语句操作数据库Java.sql.Connection

Java.sql.StatementJava.sql.PreparedStatement驱动程序管理器—装载和管理各个数据库驱动Java.sql.DriverManager执行sql语句的结果集—将SQL语句的执行结果封装成象Java.sql.ResultSetJava.sql.ResultSetMetaData辅助类特殊数据类型包装类、异常类DrieverAPI供应商必须实现的驱动程序APIJava.sql.Driver

Java.sql.DatabaseMetaData

7JDBC特点

用Java语言编写的;可移植性好;能用于所有的数据库JDBC驱动程序类型①JDBC-ODBC桥接器和ODBC驱动程序SQLServer数据库Java数据库程序ODBCJDBC-ODBC桥接器—不建议用,因为可移植性差②纯Java编写的JDBC网络驱动程序SQLServer数据库Java数据库程序JDBC网络驱动82、java数据库程序开发步骤步骤2:加载和注册JDBC-ODBC桥接驱动程序

调用class类的forname()方法加载数据库JDBC驱动程序。例如:

步骤3:获得数据库连接调用驱动程序管理器〔DriverManager对象〕的getConnection()

方法,返回Connection对象。例如:Connectioncon=DriverManager.getConnection(“jdbc:odbc:数据源〞,“用户名〞,“密码");

以JDBC-ODBC方式访问数据库步骤1:准备工作:在ODBC数据源中设置数据源Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver");9步骤2:加载和注册JDBC驱动程序

调用class类的forname()方法加载数据库JDBC驱动程序。例如:

步骤3:获得数据库连接调用驱动程序管理器〔DriverManager对象〕的getConnection()

方法,返回Connection对象。例如:Connectioncon=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=bookshop",“sa",“sa");以JDBC方式sqlserver步骤1:准备工作:下载驱动程序,将SQLServer驱动程序包参加到工程classpath中Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");10步骤4:获得参数化执行SQL语句的PreparedStatement对象调用connect对象的prepareStatement(Stringsql)方法。例如:

Stringsql=“select*frombookwherebook_id=?〞;PreparedStatementpst=conn.prepareStatement(sql);步骤5:参数帮定调用PreparedStatement对象的setXXX(int

parameterIndex,int

x)方法邦定参数。

说明:在JDBC中,对SQL的包装有3种方式:java.sql.Statement用于执行不带参数的简单sql语句java.sql.PrepareStatement。用于执行带或不带参数的预编译sql语句java.sql.CallableStatement。用于执行对数据库的存储过程的调用。推荐使用java.sql.PrepareStatement,因为它的功能包含了java.sql.Statement,在翻开状态下可重复执行屡次,而且效率比较高。11步骤6:指定结果集的属性Statementstatement=conn.createStatement(〕第一个参数指定ResultSet的类型。其选项有:TYPE_FORWARD_ONLY:缺省类型。只允许向前访问一次,并且不会受到其他用户对该数据库所作更改的影响。

TYPE_SCROLL_INSENSITIVE:允许在列表中向前或向后移动,甚至可以进行特定定位,例如移至列表中的第四个记录或者从当前位置向后移动两个记录。不会受到其他用户对该数据库所作更改的影响。

TYPE_SCROLL_SENSITIVE:象TYPE_SCROLL_INSENSITIVE一样,允许在记录中定位。这种类型受到其他用户所作更改的影响。如果用户在执行完查询之后删除一个记录,那个记录将从ResultSet中消失。类似的,对数据值的更改也将反映在ResultSet中。

第二个参数设置ResultSet的并发性,该参数确定是否可以更新ResultSet。其选项有:CONCUR_READ_ONLY:这是缺省值,指定不可以更新ResultSet

CONCUR_UPDATABLE:指定可以更新ResultSet12步骤7:处理查询结果ResultSetrs=pst.executeQuery();//查询时Inti=pst.executeUpdate(sql);//增删改while(rs.next()){//用rs.get×××(“列名〞)获得当前行的某列的值//用rs.get×××(int)获得当前行的值}步骤8:关闭连接,释放资源pst.close();con.close();13

步骤从错误信息中找到,在代码的哪一行出错?在此行出了什么错误?根据出错信息改正此错误再次运行代码,看此错误是否已经改掉〔是否还报此错误?〕JDBC编程常见运行时错误的改正14Java异常处理异常是指程序在运行时所发生的错误或者不正常的状态。Java程序运行过程中所发生的异常事件可分为两类:错误(Error):JVM系统内部错误、资源耗尽等严重情况违例(Exception):其它因编程错误或偶然的外在因素导致的一般性问题,例如:对负数开平方根试图读取不存在的文件网络连接中断例题第八章:15Java异常类层次16常见异常RuntimeException错误的类型转换数组下标越界空指针访问IOExeption从一个不存在的文件中读取数据越过文件结尾继续读取连接一个不存在的URL17异常处理机制Java程序的执行过程中如出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出(throw)异常。当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。如果Java运行时系统找不到可以捕获异常的方法,那么运行时系统将终止,相应的Java程序也将退出。程序员通常只能处理违例(Exception),而对错误(Error)无能为力例题第八章:18捕获异常

捕获异常是通过try-catch-finally语句实现的。try{ ...... //可能产生异常的代码}catch(ExceptionName1e){ ...... //当产生ExceptionName1型异常时的处置措施}catch(ExceptionName2e){...... //当产生ExceptionName2型异常时的处置措施}[finally{...... //无条件执行的语句

}]finally捕获异常的最后一步是通过finally语句为异常处理提供一个统一的出口,使得在控制流转到程序的其它局部以前,能够对程序的状态作统一的管理。不管在try代码块中是否发生了异常事件,finally块中的语句都会被执行。finally语句是任选的19捕获异常当使用多个catch语句时,一定要注意先写子类异常,再写父类异常,当父类在前时,执行到父类异常匹配后,就不在往下执行。例题:第八章:yichang5.java20声明抛弃异常声明抛弃异常是Java中处理异常的第二种方式如果一个方法(中的语句执行时)可能生成某种异常,但是并不能确定如何处理这种异常,那么此方法应声明抛弃异常,说明该方法将不对这些异常进行处理,而由该方法的调用者负责处理声明抛弃举例:例题:第八章:yichang6.java21人工抛出异常Java异常类对象除在程序执行过程中出现异常时由系统自动生成并抛出,也可根据需要人工创立并抛出首先要自定义异常类,通过继承Throwable或其子类的Exception来实现。例题:第八章:yichang9.java22文件程序终端文件程序网络端点数据流起点终点

网络端点文件,字符串存储区数据流什么是数据流?数据流是一组有顺序,有起点和终点的字符集合。在java中有关流的操作使用io包importjava.io.*;23流的分类流字节流字符流流输入流输出流按照处理数据的单位划分按照输入输出方式划分24中的四个类:以字节为对象:输入流:InputStream

输出流:OutputStream以字符为对象:输入流:Reader

输出流:Writer字节流和字符流的比较字节流——适用于各类文件每次读写8位字节效率较低字符流适用于16位的字符文件每次读写16位字符效率较高25文件处理1、File类〔1〕所有对文件的操作都要使用File类.〔2〕其构造:

File(“文件名〞);File(“目录名〞,“文件名〞〕;2、字符文件:

FileReader类、FileWriter类3、字节文件:

FileInput类、FileOutput类262、操作字符文件的类FileReader读取文件;FileWriter写入文件;BufferedReader输入到缓冲区。BufferedWriter输出到缓冲区。从输入流中按行读取字符的方法:

StringreadLine();向输出流写入多个字符的方法:

write(String

s,int

off,int

len);将指定的字符串s从偏移量off开始的len个字符写入文件输出流。27保存文本文件FileWriterfw=newFileWriter("b.txt");BufferedWriterbw=newBufferedWriter(fw);建立输出通道

Stringstr=txt.getText();bw.write(str,0,str.length());bw.flush();完成写的动作刷新缓冲区强制写入28文件对象的建立Filefp=newFile(“c:\\file1.dat〞);FileInputStream类用来翻开一个输入文件FileOutputStream类用来翻开一个输出文件二进制文件的处理29FileInputStream类的常用方法:read():从流中读入数据close():关闭流FileOutputStream类的方法:write(byteb[],intoff,intlen):在数组b中,从off开始,写入len个字节的数据。b[]数组Off开始,有len个字节二进制文件的处理注意:二进制文件必须按字节读取30将一个文件内容复制到另一个文件中try{FileinFile=newFile(“file1.dat");FileoutFile=newFile("file2.dat");FileInputStreamfis=newFileInputStream(inFile);FileInputStreamfos=newFileOutputStream(outFile);

intc;while((())!=-1)(c);fis.close();fos.close(); }catch(FileNotFoundExceptione){}catch(IOExceptionee){}31文件目录zip文件三、随机存取文件类RandomAccessFilezip文件需要用随机方法处理文件目录给出个文件的入口,可以随机读取.创立一个随机文

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论