Java-Web应用程序开发完整版课件全书电子教案教材课件(完整).pptx

上传人:可**** 文档编号:77248402 上传时间:2023-03-13 格式:PPTX 页数:311 大小:3.39MB
返回 下载 相关 举报
Java-Web应用程序开发完整版课件全书电子教案教材课件(完整).pptx_第1页
第1页 / 共311页
Java-Web应用程序开发完整版课件全书电子教案教材课件(完整).pptx_第2页
第2页 / 共311页
点击查看更多>>
资源描述

《Java-Web应用程序开发完整版课件全书电子教案教材课件(完整).pptx》由会员分享,可在线阅读,更多相关《Java-Web应用程序开发完整版课件全书电子教案教材课件(完整).pptx(311页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 异常第一章目标目标q了解使用异常的原因q理解Java的异常层次结构q掌握try、throw和catch块检测、指出和处理异常q掌握finally子句释放资源q掌握声明新的异常类概述概述q异常是指程序运行期间出现的问题qJAVA语言提供了一套完善的异常处理机制。正确运用这套机制,有助于提高程序的健壮性q本章首先概述异常处理的概念,然后举例说明基本的异常处理技术Java异常处理机制异常处理机制 处理异常主要考虑两个问题q如何表示异常情况q如何控制处理异常的流程Java异常处理机制异常处理机制 Java异常处理特点q对异常情况进行分类,用Java类来表示异常,具有可扩展性和可重用性q异常流程的代码

2、和正常流程的代码分离,提高了程序可读性q可捕获异常立即处理,也可抛给上一层去处理处理,具有灵活性Java异常处理机制异常处理机制 q异常类的层次结构Exception代表程序的异常(可以捕获并处理)Error代表运行时的系统异常(不应捕获)Java异常处理机制异常处理机制Exception分为两个分支:q派生自RuntimeException的异常q普通异常(非运行时异常)RuntimeExceptionRuntimeException非非RuntimeExceptionRuntimeException一个错误的类型转换试图读取一个文件结尾后面的数据一个越界数组访问试图打开一个错误的URL一个

3、空指针访问试图根据一个不代表任何存在类的字符串来找到一个Class类Java异常处理机制异常处理机制q常见异常类异常类异常类说明说明Exception异常层次结构的根类ArithmeticException算术错误情形,如以零作除数IllegalArgumentException方法接收到非法参数ArrayIndexOutOfBoundException数组大小小于或大于实际的数组大小NullPointerException尝试访问 null 对象成员ClassNotFoundException不能加载所需的类NumberFormatException数字转化格式异常,比如字符串到 float

4、 型数字的转换无效IOException输入输出FileNotFoundException找不到文件EOFException文件结束Java异常处理机制异常处理机制q异常处理流程抛抓模型运用异常处理机制运用异常处理机制qJava提供了trycatchfinally语句来支持异常处理try/可能产生异常的语句catch(异常类型e)/捕获指定类型的异常,catch可以有多个/处理异常finally/finally块是可选的/无论异常是否发生,都会执行的代码trycatch语句语句qtrycatch语句:捕获异常try/可能会出现异常情况的代码catch(异常类型一e1)/处理出现的异常一类型的异

5、常catch(异常类型二e2)/处理出现的异常二类型的异常trycatch语句语句 q示例:整型变量相除,可能会产生除零异常/未捕捉异常inti,j,result;i=10;j=0;result=i/j;System.out.println(运算结果是:+result);System.out.println(程序结束);/运行结果Exceptioninthreadmainjava.lang.ArithmeticException:/byzeroatt01.Excepton1.main(Excepton1.java:8)/给程序加上异常捕获tryinti,j,result;i=10;j=0;re

6、sult=i/j;System.out.println(运算结果是:+result);catch(ArithmeticExceptione)System.out.println(发生除零异常);System.out.println(程序结束);/运行结果发生除零异常程序结束trycatch语句语句q同一段代码中潜在多种异常的情况tryinti,j,result;Stringinput=12w;i=10;/input中保存用户所输入的数字,这里假设输入错误,输入了字母j=Integer.parseInt(input);result=i/j;System.out.println(运算结果是:+re

7、sult);catch(ArithmeticExceptione1)System.out.println(发生除零异常);catch(NumberFormatExceptione2)System.out.println(所输入的内容非数字);System.out.println(程序结束);trycatch语句语句q如果对多个异常不需要区分,只希望捕获它们不让程序终止,此时只需给出异常的基类即可 trycatch(Exceptione)/所有异常都会在此被捕获q下面这种写法,编译器将报错 trycatch(Exceptione1)catch(IOExceptione2)/该catch块永远不会

8、被执行到finally语句语句qfinally:任何情况下都必须执行的代码qfinally块是可选的qfinally块通常放置释放资源的代码try申请资源,如数据库连接,网络连接,打开文件等可能出现异常的代码catch(异常类型一e1)处理异常一类型的异常catch(异常类型二e2)处理异常二类型的异常finally释放资源throws子句子句qthrows:声明可能出现的异常q如果一个方法会出现异常,但没有能力处理它,可以在方法声明处用throws子句来声明抛出异常访问修饰符返回类型方法名(参数列表)throws异常1,异常2publicstaticvoidfun()throwsNumber

9、FormatExceptionq方法只负责完成功能,其中产生的异常,就谁调用该方法谁负责处理 throws子句子句方法调用者了解到被调用方法可能抛出的异常,可采取两种措施:q捕获并处理异常q继续声明抛出异常publicvoidinvoke()tryfun();catch(NumberFormatExceptione)/处理异常publicvoidinvoke()throwsNumberFormatExceptionfun();/后续代码throw语句语句qthrow:抛出异常q当位于最上层的子系统不需要关心来自底层的异常的细节时,常见的做法是:异常转译publicvoiduploadImage

10、File(StringimagePath)throwsUploadExceptiontry/上传图像文件(包括操作文件,操作数据库)catch(IOExceptione1)/把原始异常信息记录到日志中去,便于排错thrownewUploadException();/抛出新异常catch(SQLExceptione2)/把原始异常信息记录到日志中去,便于排错thrownewUploadException();/抛出新异常用户定义异常用户定义异常q通过扩展Exception类来创建自定义的异常/自定义服务器超时异常publicclassServerTimedOutExceptionextendsE

11、xceptionprivateStringreason;/异常原因privateintport;/服务器端口publicServerTimedOutException(Stringreason,intport)this.reason=reason;this.port=port;/抛出自定义异常thrownewServerTimedOutException(不能连接服务器,80);publicStringgetReason()returnreason;publicintgetPort()returnport;异常处理原则异常处理原则q异常只能用于非正常的情况,不能用异常来控制程序的正常流程。例如

12、:publicstaticvoidinitArray(intarray)tryinti=0;while(true)arrayi+=1;catch(ArrayIndexOutOfBoundsExceptione)异常处理原则异常处理原则q避免过于庞大的try块代码块try块代码越庞大,出现异常的地方就越多,分析异常原因就越困难有效的做法是分割可能出现异常的程序段落,分别放在单独的try块中,从而分别捕获异常异常处理原则异常处理原则q在catch子句中指定具体的异常类型/用Exception捕获所有异常Publicvoidprint()while(文件未打印完)try打印一行catch(Excep

13、tione)以上代码看起来省事,但实际上不是好的编程习惯/正确的做法是指定具体的异常类型publicvoidprintwhile(文件未打印完)try打印一行catch(OutOfInkExceptione1)do等待用户更换墨盒while(用户没有更换墨盒)catch(OutOfPaperExceptione2)do等待用户添加打印纸while(用户没有添加打印纸)异常处理原则异常处理原则q不要在catch块中忽略被捕获的异常,例如:trycatch(Exceptione)/对异常不采取任何操作trycatch(Exceptione)e.printStackTrace();/仅仅打印异常信息

14、catch块既然捕获了异常,就应提供异常处理措施q处理异常q重新抛出异常q异常转译总结总结qJava的异常处理涉及到5个关键字:try、catch、throw、throws和finally。q异常处理流程由try、catch和finally3个代码块组成。其中try代码块包含了可能发生异常的程序代码;catch代码块紧跟在try代码块后面,用来捕获并处理异常;finally代码块用于释放被占用的相关资源。qException类表示程序中出现的异常,只要通过处理,就可能使程序恢复运行的异常。q对于方法中可能出现的受检查异常,要么用trycatch语句捕获并处理它,要么用throws子句声明抛出它

15、,Java编译器会对此作检查。I/O流第二章目标目标q了解I/O流概念q理解I/O层次结构q掌握使用字节流q掌握使用字符流概述概述q绝大部分的编程工作都涉及到数据的传递控制(输入/输出)qJAVA中的I/O采用流的方式来实现,即将数据的传递看作为数据在目的和源之间流动qI/O类库位于java.io包中,对各种常见的输入和输出流进行了抽象概述概述按照I/O处理数据的不同分为字节流字符流按照功能的不同分为数据流操作流按实现方式的不同分为底层流高层流字节流字节流q将字节作为最小传输单元q由相应的数据流和操作流构成q字节流类层次图如下(包括输入流和输出流)字节流字节流数据流(底层流):InputStr

16、eamOutputStreamFileInputStreamFileOutStream操作流(高层流):BufferedInputStreamBufferedOutputStreamPrintStream数据流数据流q负责搭建字节数据传输的通道,负责字节数据的传输,是底层流,只提供了基本的字节数据访问方法qInputStream和OutputStram是所有字节流类的基类,都是抽象类,不能实例化,通过定义了若干的方法来规范派生类的行为,如I/O结束后必须关闭流等数据流数据流InputStreamq所有字节输入流类的抽象基类,完成将字节从流中读出publicabstractintread()th

17、rowsIOExceptionpublicintread(byteb)throwsIOExceptionpublicvoidclose()throwsIOExceptionpublicintavailable()throwsIOExceptionq重要方法:数据流数据流OutputStreamq所有字节输出流类的抽象基类,完成将字节写入流中publicabstractvoidwrite(intb)throwsIOExceptionpublicvoidwrite(byteb)throwsIOExceptionpublicvoidflush()throwsIOExceptionpublicvoid

18、close()throwsIOExceptionq重要方法:数据流数据流FileInputStreamqInputStream的派生类,完成从文件中读取字节数据q重要方法:publicFileInputStream(Stringname)throwsFileNotFoundExceptionpublicFileInputStream(Filefile)throwsFileNotFoundException数据流数据流使用FileInputStream基本步骤:q建立文件输入流FileInputStreamin=newFileInputStream(c:demo.txt);q读入字节数据(通常使

19、用循环)while(i=in.read()!=-1)s=s+(char)i;q关闭in.close();在调用I/O流的方法时,注意捕捉异常如IOException数据流数据流FileOutputStreamqOutputStream的派生类,完成将字节数据写入文件中q重要方法:publicFileOutputStream(Stringname)throwsFileNotFoundExceptionpublicFileOutputStream(Stringname,booleanappend)throwsFileNotFoundException数据流数据流使用FileOutputStream

20、基本步骤:1.建立文件输出流2.写字节数据3.关闭tryFileOutputStreamout=newFileOutputStream(file);Stringcontent=Wishgiveyoubetterfuture;charch=content.toCharArray();/转换成字符数组for(inti=0;ich.length;i+)/循环将字符写入文件out.write(chi);out.close();/关闭文件流,否则文件中没内容catch(Exceptione)System.out.println(写入文件时出错);操作流操作流q高层流,不从I/O设备中读取或写入数据,仅从

21、其它流中读取或写入数据,提供了普通流所没有提供的方法来简化编程,或提高I/O的效率q操作流类利用了“装饰器”设计模式,本身继承了InputStream类,加入了大量的方法,用来“装饰”其它数据流类,避免了大量创建新的功能类操作流操作流qBufferedInputStreamq一个带缓冲区的输入流q重要方法:publicBufferedInputStream(InputStream)publicBufferedInputStream(InputStream,int)操作流操作流qBufferedOutputStreamq一个带缓冲区的输出流q重要方法:publicBufferedOutputSt

22、ream(OutputStream)publicBufferedOutputStream(OutputStream,int)操作流操作流qPrintStreamq提供了print和println方法,使输出不再被限制于单个字节。且带有缓冲区q重要方法:publicPrintStream(OutputStreamout)publicPrintStream(OutputStreamout,booleanautoFlush)publicvoidflush()publicvoidprintln(类型x)操作流操作流importjava.io.*;publicclassT24publicstaticvo

23、idmain(Stringargs)try/创建带有缓冲的字节输入流BufferedInputStreambi=newBufferedInputStream(System.in);Strings=;inti;/利用循环读取键盘上的输入,并将其转换成字符判断是否不为回车while(char)(i=bi.read()!=n)s=s+(char)i;/创建字节打印输出流,套接系统默认输出流PrintStreamout=newPrintStream(System.out);out.println(s);catch(Exceptione)System.out.println(I/O错误);字符流字符流q

24、数据流(底层流):ReaderWriterFileReaderFileWriterq操作流(高层流):BufferedReaderBufferedWriterPrintWriter数据流数据流Readerq字符输入流的抽象基类q重要方法publicintread()throwsIOExceptionpublicabstractintread(charcbuf,intoff,intlen)throwsIOExceptionpublicabstractvoidclose()throwsIOException数据流数据流Writerq字符输出流的抽象基类q重要方法publicvoidwrite(in

25、tc)throwsIOExceptionpublicabstractvoidwrite(charcbuf,intoff,intlen)throwsIOExceptionpublicabstractvoidflush()throwsIOExceptionpublicabstractvoidclose()throwsIOException数据流数据流FileReaderq完成基本的文件I/O访问。能以字符方式从文件中读数据q重要方法publicFileReader(StringfileName)throwsFileNotFoundExceptionpublicFileReader(Filefile

26、)throwsFileNotFoundException数据流数据流FileWriterq使用缺省字符编码构造文件流,向文件输出字符数据。如果文件不存在则创建该文件;如果该文件已存在,则缺省为覆盖该文件publicFileWriter(StringfileName)throwsIOExceptionpublicFileWriter(StringfileName,booleanappend)throwsIOExceptionpublicFileWriter(Filefile)throwsIOException数据流数据流q示例FileReaderin=newFileReader(file);/建

27、立字符文件输入流,可显示中文while(i=in.read()!=-1)/循环依次读取文件中的所有字节s=s+(char)i;in.close;FileWriterout=newFileWriter(file);/建立字符文件输出流,可输出中文charch=content.toCharArray();System.out.println(ch);for(inti=0;ich.length;i+)/循环依次读取字符串中的字符写入文件out.write(chi);out.close();/关闭文件流,否则文件中没内容操作流操作流q高层流,采用装饰器设计模式创建q提供了普通流所没有提供的方法来简化编

28、程,或提高I/O的效率操作流操作流BufferedReaderq从字符输入流中读取文本并将字符存入缓冲区以便能提供字符的高效读取。提供了非常重要的读取一行的方法q重要方法publicBufferedReader(Readerin)publicBufferedReader(Readerin,intsize)publicStringreadLine()throwsIOException操作流操作流BufferedWriterq将数据写到缓冲区内,当缓冲区满时,把数据写到字符输出流publicBufferedWriter(Writer)publicBufferedWriter(Writer,int)

29、操作流操作流PrintWriterq将格式化对象打印到一个文本输出流。publicPrintWriter(OutputStream)publicPrintWriter(Writer)publicPrintWriter(OutputStream,boolean)publicPrintWriter(Writer,boolean)publicvoidprintln(类型x)特殊的特殊的I/O-字节字符桥接流字节字符桥接流InputStreamReaderq采用适配器设计模式,把InputStream类型转换为Reader类型q重要方法publicInputStreamReader(InputStre

30、amin)publicInputStreamReader(InputStreamin,Stringenc)字节字符桥接流字节字符桥接流OutputStreamWriterq采用适配器设计模式,把OutputStream类型转换为Writer类型q重要方法publicOutputStreamWriter(OutputStreamin)publicOutputStreamWriter(OutputStream,String)标准标准I/Ojava.lang.System类中提供了三个静态变量qinInputStream类型qoutPrintStream类型qerrPrintStream类型标准标准

31、I/Oq对System.in的适配转换InputStreamReaderreader=newInputStreamReader(System.in);BufferredReaderbr=newBufferedRader(reader);q对System.out的适配转换PrintWriterpw=newPrintWriter(System.out,true);File类类qFile类并不在I/O的继承结构中,用于表示主机文件系统中的文件名或路径名q重要方法:publicFile(Strings)publicFile(Stringpath,Stringname)publicbooleandele

32、te()publicbooleanexists()File类类q示例publicclassIO4publicstaticvoidmain(Stringargs)Filef=newFile(c:demo.txt);System.out.println(f.getAbsolutePath()+n);System.out.println(是否是目录+f.isDirectory()+n);System.out.println(是否隐藏文件+f.isHidden()+n);f.delete();总结总结qJavaI/O类库对各种常见的数据源、数据目的地及处理过程进行了抽象。客户程序不必知道最终的数据源或

33、数据目的地是一个磁盘上的文件还是一个内存中的数组,都可以按照统一的接口来处理程序的输入和输出。qJavaI/O类库具有两个对称性,他们分别是:输入和输出字节流和字符流qJavaI/O类库中的高层流在设计中主要采用了装饰器设计模式。qFile类用于管理文件系统 JDBC(一)第三章目标目标q了解JDBC的四类驱动q理解JDBC的访问方式q掌握基本数据库访问q理解JDBC中异常概述概述q大多数开发语言都提供了数据库的访问qJDBC是由SUN公司提供的一组接口和类,被封装在java.sql包中,用于访问数据库q数据库厂商所提供的第三方驱动程序和类包,可以访问特定数据库JDBC概述概述qJDBC允许大

34、型应用程序把数据写到JDBC接口上,通过接口与数据库交换信息。因而编程人员不必太关心与该应用程序一起使用的是那种数据库JDBC概述概述q一个完整的JDBC应用由三部分组成驱动程序驱动程序管理器应用程序JDBC概述概述qJDBC的四类驱动JDBC-ODBC桥加ODBC驱动程序本地APIJDBC网络纯JAVA驱动程序本地协议纯JAVA驱动程序基本数据库访问基本数据库访问q通过JDBC的接口和类进行数据库访问基本数据库访问基本数据库访问JDBC访问数据库的一般步骤q引入必要的类q加载注册JDBC驱动程序q标示数据源q分配一个Connection对象q分配一个Statement对象q使用该Statem

35、ent对象执行查询q从返回的ResultSet对象中检索数据q关闭ResultSet对象q关闭Statement对象q关闭Connection对象基本数据库访问基本数据库访问qjava.sql包接口(类)名说明Connection此接口表示与数据的连接Statement此接口执行SQL语句并将数据检索到ResultSet中PreparedStatement此接口执行预编译的SQL语句CallableStatement此接口执行已存储过程ResultSet此接口表示了查询出来的数据库数据结果集DriverManager此类加载和卸载各种驱动程序并建立与数据库的连接Date此类包含将sql日期格式

36、转换成java日期格式的各种方法数据库驱动程序注册数据库驱动程序注册 qJ2EE的商业开发一般会搭配MySql数据库/加载MySql驱动程序Class.forName(com.mysql.jdbc.Driver);数据库连接对象数据库连接对象 q建立连接Connectioncon=DriverManager.getConnection(url,user,password);qurl为连接字符串,语法格式如下:jdbc:mysql:/host:port/database?参数名1=参数值1&参数名2=参数值2.语句对象语句对象q创建Statement对象Statementstmt=conn.cr

37、eateStatement();q执行INSERT、UPDATE或者DELETE语句 stmt.executeUpdate(query);/query为所要执行的sql语句q执行SELECT语句 ResultSetrs=stmt.executeQuery(query);/rs为记录集对象记录集对象记录集对象 qResultSet接口来操纵结果集中的记录qResultSet对象主要提供三大类方法1.当前记录指示器移动方法rs.next();/当前记录指针移动到下一条记录上2.当前记录字段值获取方法getXXXStringname=rs.getString(ename);/通过字段名访问Strin

38、gname=rs.getString(2);/通过字段位置访问3.更新当前字段值的方法updateXXXrs.update(ename,jack);/通过字段名更新rs.update(2,jack);/通过字段位置访问记录集对象记录集对象 关闭数据库对象关闭数据库对象 q关闭ResultSet对象rs.close();q关闭Statement对象stmt.close();q关闭Connection对象con.close();记录集对象记录集对象q从数据库emp表中读取员工的编号(empno)和姓名(ename)Statementstmt=con.createStatement();String

39、query=SELECTempno,enameFROMEMP;stmt.execute(query);ResultSetrs=stmt.getResultSet();while(rs.next()inti=rs.getInt(1);/得到当前记录的第一个字段(empno)的值Stringname=rs.getString(2);/得到第二个字段(ename)的值System.out.println(Integer.toString(i)+name);特殊记录集特殊记录集返回结果记录集分为两大类q仅向前、不可更新记录集Statementstmt=Con.createStatement();Res

40、ultSetrs=stmt.executeQuery(selectempno,enamefromemp);q可滚动、可更新记录集Statementstmt=Con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);ResultSetrs=stmt.executeQuery(selectempno,enamefromemp);特殊记录集特殊记录集q可滚动、可更新记录集记录集类型描述TYPE_FORWARD_ONLY不可滚动TYPE_SCROLL_INSENSITIVE可滚动,但看不到外部对数

41、据库的修改TYPE_SCROLL_SENSITIVE可滚动,但能看到外部对数据库的修改记录集并发性描述CONCUR_READ_ONLY指定ResultSet对象不能修改数据库CONCUR_UPDATABLE指定ResultSet对象可以修改数据库 指定以上两种模式时要求指定以上两种模式时要求select语句不能带语句不能带*号号特殊记录集特殊记录集q可滚动、可更新记录集可以使用的移动记录集指针的方法next()移动到记录集的下一条,没有返回false,否则返回trueprevious()移动到前一条记录first()移动到第一条记录last()移动到最后一条记录absolute(introwN

42、umber)移动到rowNumber指定的行relative(intrelativeRowNumber)移动到相对于当前纪录位置的某一行q可使用update()方法对指定字段进行更新q使用updateRow()方法将修改发送到数据库特殊记录集特殊记录集特殊记录集特殊记录集对于可更新结果集使用的查询的限制:q只能使用一个表q必须选择这个表的主键和所有其他NOTNULL列q不能使用ORDERBY子句q必须只选择列值,不能包含计算列q不能使用SELECT*。你必须分别指定列,或者使用表别名,如SELECTcustomers.*fromcustomers特殊处理特殊处理q处理数据库中的null值Str

43、ingname=rs.getString(2);name=name.toUpperCase();q如果name获得的是null值,则第二句调用方法时出现异常。qResultSet的wasNull()方法可以检测上一个获取的字段值是否为空Stringname=rs.getString(2);if(rs.wasNull()name=;name=name.toUpperCase();处理异常处理异常q当数据库或JDBC驱动程序中发生错误时,将抛出一个java.sql.SQLExceptionqSQLException类是Exception类的子类q必须使用trycatch对该异常进行处理qSQLEx

44、ception类定义了2个方法,它们有助于查找造成异常的原因getErrorCode()返回错误编号getMessage()返回错误消息处理异常处理异常q捕获并处理SQLExceptiontry/输入错误的密码con=DriverManager.getConnection(url,“sa,“123123);catch(SQLExceptione)if(e.getErrorCode()=1017)System.out.println(登录用户名/密码错误);elseSystem.out.println(e.getMessage();总结总结qJDBCAPI的主要接口包括Connection、St

45、atement和ResultSet接口q注册一个驱动,建立起连接对象,在这个连接对象的基础上执行SQL语句,返回纪录集,然后利用getXXX方法获得数据。q记录集包括仅向前、不可更新记录集和可滚动、可更新记录集qResultSet的wasNull方法可以检测数据库字段的空值。q通过捕获SQLException来处理数据库异常总结总结 JDBC(二)第四章目标q了解预制语句的原理q掌握预制语句的使用q理解JDBC中事务的处理q掌握JavaBean的创建概述q封装数据库访问连接工厂类JavaBean类q高级数据库访问预制语句元数据q事务预置语句qPreparedStatement接口继承自Stat

46、ementq编译一次可重复执行的语句接口q在sql语句中通过使用占位符来代替常量字段值,setXXX方法来填充字段值,取代掉占位符,形成完整的可执行的sql语句预置语句q创建预置语句对象,在sql语句中使用占位符StringSQL=insertintodept(deptno,dname)values(?,?);PreparedStatementps=con.prepareStatement(SQL);预置语句q使用setXXX()方法为参数赋值q用executeUpdate()方法执行SQL语句ps.setInt(1,60);ps.setString(2,客服部);ps.executeUpda

47、te();预置语句q示例:使用预置语句插入数据Stringsql=insertintoemp(empno,ename,hiredate)values(?,?,?);PreparedStatementpstmt=con.prepareStatement(sql);pstmt.setInt(1,2234);pstmt.setString(2,张三);pstmt.setDate(3,Date.valueOf(2004-3-3);pstmt.executeUpdate();System.out.println(行已添加);元数据q元数据是描述一个RDBMS提供何种功能和数据库中数据类型的数据(数据字典

48、)qJDBC提供了两个元数据接口:DatabaseMetaData数据库元数据ResultSetMetaData结果集元数据元数据qDatabaseMetaData对象提供关于数据库的信息:数据库与用户、数据库标识符以及函数与存储过程数据库支持与不支持的功能数据库限制,如数据库中名称的最大长度架构、编目、表和列元数据qResultSetMetaData对象可以获得关于结果集对象的元数据信息:结果集中列的名称、类型、是NULL还是NOTNULL、精度等信息获取ResultSetMetaData对象:ResultSetrs=stmt.executeQuery(sql);ResultSetMetaD

49、atarsmd=rs.getMetaData();元数据q读取结果集元数据的方法方法名描述getColumnCount()返回结果集中的列数getColumnName(intn)返回n指定的位置上的列的名称getColumnType(intn)返回指定列的类型(用整数表示)getColumnTypeName(intn)返回指定列的类型名称(用字符串表示)isNullable(intn)如果列被定义为NOT NULL,那么返回0;否则返回1元数据q查看emp表的字段名和字段类型Stringsql=select*fromemp;PreparedStatementpstmt=con.prepareS

50、tatement(sql);ResultSetrs=pstmt.executeQuery();ResultSetMetaDatarsmd=rs.getMetaData();intcount=rsmd.getColumnCount();for(inti=1;i=count;i+)System.out.print(rsmd.getColumnName(i)+(+rsmd.getColumnTypeName(i)+)t);事务q事务的主要用途:把数据库从一个一致状态带到下一个一致状态 q事务具备的属性:原子性、一致性、隔离性、耐久性q控制事务的主要语句:提交、回退事务qJDBC通过Connectio

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁