资源目录
压缩包内文档预览:(预览前20页/共30页)
编号:21836180
类型:共享资源
大小:21.32MB
格式:ZIP
上传时间:2019-09-06
上传人:QQ24****1780
认证信息
个人认证
王**(实名认证)
浙江
IP属地:浙江
25
积分
- 关 键 词:
-
大学
java
程序设计
教程
赵辉
课件
ppt
- 资源描述:
-
大学JAVA程序设计教程-赵辉-课件PPT,大学,java,程序设计,教程,赵辉,课件,ppt
- 内容简介:
-
第10章 输入输出处理,本章内容提要,10.1 输入输出流简介,流是指在计算机的输入与输出之间运动的数据序列。 根据操作类型的不同,流可以分为输入流和输出流。用来从程序中读取数据的流称为输入流,而用来向程序中写入数据的流称为输出流。 输入输出系统通过流与物理设备相连接,尽管与它们连接的物理设备不尽相同,但所有的流的行为具有同样的方式。,10.2 java.io包,Java中数据输入输出的所有功能都是通过java.io包中的类和接口完成。,10.3 文件,Java中的抽象类File提供了一些方法来操纵文件和获得文件的信息。 创建文件对象 File类的对象主要用来获取文件本身的一些信息,不涉及对文件的读写操作。,Java提供了三种构造方法来创建一个文件对象。 File(String filename) File(String directoryPath,String filename) File(File f, String filename),10.3 文件,/根据参数指定的文件路径来创建一个File文件对象 File file1=new File( “c:testabc. txt“); /根据给定的目录来创建一个File对象,指定其目录和文件名 File file2=new File( “c:test“,“abc. txt“); /根据已知的目录文件对象File来创建一个新的File实体对象 File file3=new File(fiie2,“abc. txt“);,10.3 文件,以上三种方法只是生成一个文件对象,但没有生成真正的文件,如果要生成实实在在的文件,就需要调用createNewFile ( )方法。,例10-1创建文件对象,10.3 文件,文件操作 File类所提供的方法分为两类,一类针对文件的处理,另一类针对目录的处理。,10.3 文件,例10-2 获取文件的信息,Name: Test10_2.java Path: C:Test10_2.java 文件存在 文件是可读的 文件是可写的 文件长度为424 bytes.,10.3 文件,目录操作,1创建目录 Java提供了File类的重载构造方法来生成一个目录对象。通过该构造方法只是生成一个目录对象,如果要生成实实在在的目录,就需要调用mkdir()方法。 File(String directoryPath),10.3 文件,2列出目录中的文件 如果File对象是一个目录,那么该对象可以调用下述方法列出该目录下的文件和子目录: public String list() /用字符串形式返回目录下的全部文件 public File listFiles() /用File对象形式返回目录下的全部文件,10.3 文件,Java中可以使用File类的下述两个方法,列出指定类型的文件: public String list(FilenameFilter obj) 该方法用字符串形式返回目录下的指定类型的所有文件。 public File listFiles(FilenameFilter obj) 该方法用File对象返回目录下的指定类型所有文件。,10.3 文件,例10-3 列出 c:java 目录下的所有java文件,FilenameFile是一个接口,该接口有一个方法: public boolean accept(File dir,String name),10.3 文件,运行可执行文件 当要执行一个本地机器上的可执行文件时,可以使用java.lang包中的Runtime类。首先使用Runtime类声明一个对象,然后使用该类的静态getRuntime()方法创建这个对象。 例如: Runtime ec; ec = Runtime.getRuntime();,10.3 文件,10.4 字节流,抽象类InputStream是所有字节输入流的基类,抽象类OutputStream是所有字节输出流的基类。 因为InputStream和OutputStream都是抽象类,所以不能直接生成对象,而是要通过覆盖其抽象方法的继承类来创建程序中所需要的对象。,InputStream类和OutputStream类,1InputStream 类 InputStream类中定义了与字节输入流操作有关的方法,可以完成从输入流中读入数据的功能. 2.OutputStream类 OutputStream类定义了所有字节输出流中的方法,可以完成写入数据的功能,10.4 字节流,FileInputStream类和FileOutputStream类 1FileInputStream 类 创建文件输入流 为了创建FileInputStream 类的对象,用户可以调用它的构造方法。下面列出了两个构造方法: FileInputStream(String name) FileInputStream(File file),10.4 字节流,处理 I/O 异常 当使用文件输入流构造方法建立文件输入流时,可能会出现IOException程序必须使用一个try-catch块检测并处理这个异常。 为了把一个文件输入流对象与一个文件关联起来,使用类似于下面所示的代码: try /创建输入流 FileInputStream ins = new FileInputStream(“myfile.dat“); catch (IOException e ) System.out.println(“File read error: “ +e );,10.4 字节流,从输入流中读取字节 输入流的作用是提供通往数据的通道,程序可以通过这个通道读取数据。Java中的read()方法完成了从输入流中读取数据的功能。read()方法的格式如下: int read(); int read(byte b); int read(byte b, int off, int len);,10.4 字节流,关闭流 如果没有关闭那些被打开的流,当另一个程序试图打开这个流时,则可能会出现错误。 关闭输出流的另一个原因是把该流缓冲区的内容冲洗掉。,10.4 字节流,2FileOutputStream 类 FileOutputStream提供了文件的写入能力。FileOutputStream类有2个构造方法: FileOutputStream(String name) FileOutputStream(File file) 可以使用 write 方法把字节发送给输出流,如下所示: public void write(byte b) public void.write(byte b,int off,int len),10.4 字节流,例10-6 使用字节流写文件,10.4 字节流,10.5 字符流,1.Reader和Writer 对字符文件(如文本文件)的处理是以Unicode字符为基本单位的。Reader和Writer就解决了这个问题,它们可以以字符为单位处理数据流。 Reader和Writer也是两个抽象基类,只是提供了一些用于字符流处理的方法,本身不能用来生成实例。Java类库中所有进行字符流处理的类都基于Reader和Writer这两个类。,10.5 字符流,10.5 字符流,2.FileReader类和FileWriter类 FileReader和FileWriter类分别是Reader和Writer的子类。 类FileReader创建了一个可以读取文件内容的Reader类。它最常用的构造方法如下: public FileReader(String filePath) public FileReader(File fileObj),10.5 字符流,类FileWriter创建一个可以写文件的Writer类。它最常用的构造方法如下: public FileWriter(String filePath) public FileWriter(String filePath,boolean append) public FileWriter(File fileObj),10.5 字符流,3.BufferedReader类和BufferedWriter类 BufferedReader类的构造方法如下: BufferedReader (Reader in) 例如: BufferedReader in = BufferedReader(new FileReader(“Student.txt“); BufferedReader流能够读取文本行,方法是readLine()。,10.5 字符流,可以将BufferedWriter流和FileWriter流连接在一起,然后使用BufferedWriter流将数据以确定长度字符串的形式写到目的地. 例如: FileWriter tofile = new FileWriter(“hello.txt“); BufferedWriter out = BufferedWriter(tofile);,10.5 字符流,例10-7文件编辑,1.下面关于Java中的类的说法正确的是()。 A.J2SE B.JRE C.J2EE D.J2ME 答案:ACD,10.5 字符流,10.6 RandomAccessFile 类,Java语言中还定义了另一个功能更强大、使用更方便的RandomAccessFile类,它可以实现对文件的随机读写操作。 RandomAccessFile类既不是输入流的子类,也不是输出流的子类,但是RandomAccessFile类创建的流既可以是输入流也可以是输出流。,1创建RandomAccessFile对象 RandomAccessFile 类有以下两个构造方法: RandomAccessFile(String name,String mode) RandomAccessFile(File file,String mode) 例如: File f1=new File(“a.txt“); RandomAccessFile myf1=new RandomAccessFile(f1,“rw“);,10.6 RandomAccessFile 类,2对文件位置指针的操作 RandomAccessFile实现的是随机读写,即可以在文件的任意位置执行数据读写。 long getFilePointer() void seek(long pos) int skipBytes(int n),10.6 RandomAccessFile 类,RandomAccessFile对象的文件位置指针遵循如下的规律: 新建RandomAccessFile对象的文件位置指针位于文件的开头处。 每次读写操作之后,文件位置指针都相应后移读写相应的字节数。 利用getFilePointer()方法可以获取当前文件位置指针从文件头算起的绝对位置。 利用seek()方法可以移动文件指针位置。,10.6 RandomAccessFile 类,10.6 RandomAccessFile 类,10.6 RandomAccessFile 类,例10-8将整型数据文件逆序输出,10,9,8,7,6,5,4,3,2,1,10.6 RandomAccessFile 类,第10章 输入输出处理本章内容提要10.1 输入输出流简介 流是指在计算机的输入与输出之间运动的数据序列。 根据操作类型的不同,流可以分为输入流和输出流。用来从程序中读取数据的流称为输入流,而用来向程序中写入数据的流称为输出流。 输入输出系统通过流与物理设备相连接,尽管与它们连接的物理设备不尽相同,但所有的流的行为具有同样的方式。 10.2 java.io包 Java中数据输入输出的所有功能都是通过java.io包中的类和接口完成。 10.3 文件 Java中的抽象类File提供了一些方法来操纵文件和获得文件的信息。 创建文件对象 File类的对象主要用来获取文件本身的一些信息,不涉及对文件的读写操作。Java提供了三种构造方法来创建一个文件对象。 File(String filename) File(String directoryPath,String filename) File(File f, String filename)10.3 文件 /根据参数指定的文件路径来创建一个File文件对象 File file1=new File( c:testabc. txt); /根据给定的目录来创建一个File对象,指定其目录和文件名 File file2=new File( c:test,abc. txt); /根据已知的目录文件对象File来创建一个新的File实体对象 File file3=new File(fiie2,abc. txt); 10.3 文件 以上三种方法只是生成一个文件对象,但没有生成真正的文件,如果要生成实实在在的文件,就需要调用createNewFile ( )方法。例10-1创建文件对象10.3 文件文件操作 File类所提供的方法分为两类,一类针对文件的处理,另一类针对目录的处理。10.3 文件例10-2 获取文件的信息Name: Test10_2.javaPath: C:Test10_2.java文件存在文件是可读的文件是可写的文件长度为424 bytes. 10.3 文件目录操作 1创建目录 Java提供了File类的重载构造方法来生成一个目录对象。通过该构造方法只是生成一个目录对象,如果要生成实实在在的目录,就需要调用mkdir()方法。 File(String directoryPath) 10.3 文件2列出目录中的文件 如果File对象是一个目录,那么该对象可以调用下述方法列出该目录下的文件和子目录: public String list() /用字符串形式返回目录下的全部文件 public File listFiles() /用File对象形式返回目录下的全部文件10.3 文件 Java中可以使用File类的下述两个方法,列出指定类型的文件: public String list(FilenameFilterobj) 该方法用字符串形式返回目录下的指定类型的所有文件。 public File listFiles(FilenameFilter obj) 该方法用File对象返回目录下的指定类型所有文件。 10.3 文件例10-3 列出 c:java 目录下的所有java文件 FilenameFile是一个接口,该接口有一个方法: public boolean accept(File dir,String name)10.3 文件运行可执行文件 当要执行一个本地机器上的可执行文件时,可以使用java.lang包中的Runtime类。首先使用Runtime类声明一个对象,然后使用该类的静态getRuntime()方法创建这个对象。 例如: Runtime ec; ec = Runtime.getRuntime(); 10.3 文件10.4 字节流 抽象类InputStream是所有字节输入流的基类,抽象类OutputStream是所有字节输出流的基类。 因为InputStream和OutputStream都是抽象类,所以不能直接生成对象,而是要通过覆盖其抽象方法的继承类来创建程序中所需要的对象。InputStream类和OutputStream类 1InputStream 类 InputStream类中定义了与字节输入流操作有关的方法,可以完成从输入流中读入数据的功能. 2.OutputStream类 OutputStream类定义了所有字节输出流中的方法,可以完成写入数据的功能 10.4 字节流FileInputStream类和FileOutputStream类 1FileInputStream 类创建文件输入流 为了创建FileInputStream 类的对象,用户可以调用它的构造方法。下面列出了两个构造方法: FileInputStream(String name) FileInputStream(File file)10.4 字节流处理 I/O 异常 当使用文件输入流构造方法建立文件输入流时,可能会出现IOException程序必须使用一个try-catch块检测并处理这个异常。 为了把一个文件输入流对象与一个文件关联起来,使用类似于下面所示的代码:try /创建输入流FileInputStream ins = new FileInputStream(myfile.dat);catch (IOException e )System.out.println(File read error: +e );10.4 字节流从输入流中读取字节 输入流的作用是提供通往数据的通道,程序可以通过这个通道读取数据。Java中的read()方法完成了从输入流中读取数据的功能。read()方法的格式如下: int read(); int read(byte b); int read(byte b, int off, int len);10.4 字节流 关闭流 如果没有关闭那些被打开的流,当另一个程序试图打开这个流时,则可能会出现错误。 关闭输出流的另一个原因是把该流缓冲区的内容冲洗掉。10.4 字节流2FileOutputStream 类 FileOutputStream提供了文件的写入能力。FileOutputStream类有2个构造方法: FileOutputStream(String name) FileOutputStream(File file) 可以使用 write 方法把字节发送给输出流,如下所示: public void write(byte b) public void.write(byte b,int off,int len)10.4 字节流例10-6 使用字节流写文件10.4 字节流10.5 字符流 1.Reader和Writer 对字符文件(如文本文件)的处理是以Unicode字符为基本单位的。Reader和Writer就解决了这个问题,它们可以以字符为单位处理数据流。 Reader和Writer也是两个抽象基类,只是提供了一些用于字符流处理的方法,本身不能用来生成实例。Java类库中所有进行字符流处理的类都基于Reader和Writer这两个类。10.5 字符流10.5 字符流 2.FileReader类和FileWriter类 FileReader和FileWriter类分别是Reader和Writer的子类。 类FileReader创建了一个可以读取文件内容的Reader类。它最常用的构造方法如下: public FileReader(String filePath) public FileReader(File fileObj) 10.5 字符流类FileWriter创建一个可以写文件的Writer类。它最常用的构造方法如下: public FileWriter(String filePath) public FileWriter(String filePath,boolean append) public FileWriter(File fileObj)10.5 字符流3.BufferedReader类和BufferedWriter类 BufferedReader类的构造方法如下: BufferedReader (Reader in) 例如: BufferedReader in = BufferedReader(new FileReader(Student.txt); BufferedReader流能够读取文本行,方法是readLine()。10.5 字符流 可以将BufferedWriter流和FileWriter流连接在一起,然后使用BufferedWriter流将数据以确定长度字符串的形式写到目的地. 例如: FileWriter tofile = new FileWriter(hello.txt); BufferedWriter out = BufferedWriter(tofile); 10.5 字符流例10-7文件编辑1.下面关于Java中的类的说法正确的是()。 A.J2SE B.JRE C.J2EE D.J2ME答案:ACD10.5 字符流10.6 RandomAccessFile 类 Java语言中还定义了另一个功能更强大、使用更方便的RandomAccessFile类,它可以实现对文件的随机读写操作。 RandomAccessFile类既不是输入流的子类,也不是输出流的子类,但是RandomAccessFile类创建的流既可以是输入流也可以是输出流。 1创建RandomAccessFile对象 RandomAccessFile 类有以下两个构造方法: RandomAccessFile(String name,String mode) RandomAccessFile(File file,String mode) 例如: File f1=new File(a.txt); RandomAccessFile myf1=new RandomAccessFile(f1,rw);10.6 RandomAccessFile 类 2对文件位置指针的操作 RandomAccessFile实现的是随机读写,即可以在文件的任意位置执行数据读写。 long getFilePointer() void seek(long pos) int skipBytes(int n)10.6 RandomAccessFile 类 RandomAccessFile对象的文件位置指针遵循如下的规律:新建RandomAccessFile对象的文件位置指针位于文件的开头处。每次读写操作之后,文件位置指针都相应后移读写相应的字节数。利用getFilePointer()方法可以获取当前文件位置指针从文件头算起的绝对位置。利用seek()方法可以移动文件指针位置。10.6 RandomAccessFile 类 10.6 RandomAccessFile 类 10.6 RandomAccessFile 类 例10-8将整型数据文件逆序输出 10,9,8,7,6,5,4,3,2,1 10.6 RandomAccessFile 类 第11章 数据库与JDBC,本章内容提要,11.1 JDBC简介,JDBC(Java DataBase Connectivity,Java数据库连接)是Java程序连接和存取数据库的应用程序接口(API),它由一组用Java语言编写的类与接口组成。 通过JDBC提供的方法,用户能够以一致的方式连接多种不同的数据库系统 ,而不必再为每一种数据库系统编写不同的Java程序代码。,11.1 JDBC简介,JDBC结构,11.1 JDBC简介,在编写数据库程序时,通常采用两种方式与数据库进行交互。一种是通过JDBC-ODBC桥。另一种方法是通过数据库提供商或第三方公司开发的JDBC驱动程序对数据库进行访问,这种方式加强了应用程序的可移植性和安全性。,JDBC应用模式,11.1 JDBC简介,1.应用模式一两层结构,11.1 JDBC简介,在两层结构中,Java applet和Java应用程序将直接与数据库进行对话。用户的SQL语句被送往数据库中而其结果将被送回给用户。数据库可以位于另一台计算机上,用户通过网络连接到上面。即客户机/服务器(c/s)配置。,11.1 JDBC简介,2.应用模式二两层结构,11.1 JDBC简介,在三层结构中,命令先被发送到服务的“中间层”,然后由它将SQL语句发送给数据库。数据库对SQL语句进行处理并将结果送回到中间层,中间层再将结果送回给用户。三层结构具有更强的优势,首先,使用灵活,可以用中间层来控制对数据的访问和可做的操作的种类;其次,操作简单,用户可以利用易于使用的高级API,而由中间层把它转换为相应的低级调用。,11.2 JDBC主要类和接口,JDBC由java.sql包中的20多个java类组成。java.sql包提供了核心的JDBC API,其包含了访问数据库所必须的类、接口和各种访问数据库异常类。,DriverManager 类 该类用来处理JDBC驱动程序,以及创建数据库连接。 Driver 该接口代表JDBC驱动程序,必须有驱动程序供应商实现。 Connection 该接口代表数据库连接,并拥有创建SQL语句的方法,以完成常规的SQL操作。,11.2 JDBC主要类和接口,Statement 提供用来执行SQL语句的方法。 ResultSet 该接口提供了对返回结果集的操作方法。 SQLException 一个关于对数据库访问的异常接口。该接口提供了一些方法,用以检索数据库提供的错误消息和错误代码。,11.2 JDBC主要类和接口,DriverManager类,DriverManager类是java.sql包中用于数据库驱动程序管理的类,作用于用户和驱动程序之间。它跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接,也处理诸如驱动程序登录时间限制及登录和跟踪消息的显示等事务。DriverManager类直接继承自java.lang.object,11.2 JDBC主要类和接口,11.2 JDBC主要类和接口,Connection接口,Connection是用来表示数据库连接的对象,对数据库的一切操作都是在这个连接的基础上进行的,11.2 JDBC主要类和接口,11.2 JDBC主要类和接口,Statement 接口,Statement用于在已经建立的连接的基础上向数据库发送SQL语句的对象。它只是一个接口的定义,其中包括了执行SQL语句和获取返回结果的方法。 创建Statement对象的基本方法如下: Statement st=con.creatStatement();,11.2 JDBC主要类和接口,.3种Statement对象,Statement、PrepareStatement、CallableStatement 。它们都作为在给定连接上执行SQL语句的容器,每个都专用于发送特定类型的SQL语句。 Statement对象用于执行不带参数的简单SQL语句; PrepareStatement对象用于执行带或不带IN参数的预编译SQL语句; CallableStatement对象用于执行对数据库存储过程的调用。,11.2 JDBC主要类和接口,.3种执行SQL语句的方法,executeQuery方法用于产生单个结果集的SQL语句,如SELECT语句; executeUpdate方法用于执行INSERT、UPDATE、DELETE及DDL(数据定义语言)语句; execute方法用于执行返回多个结果集或多个更新技术的语句。,11.2 JDBC主要类和接口,PreparedStatement 接口,PreparedStatement接口继承了Statement接口,但PreparedStatement语句中包含了警告预编译的SQL语句,因此可以获得更高的执行效率。在PreparedStatement语句中可以包含多个用问号“?”代表的字段,在程序中可以利用setXXX方法设置该字段的内容,从而增强了程序设计的动态性。,11.2 JDBC主要类和接口,PreparedStatement与Statement的区别,PreparedStatement构造的SQL语句不是完整的语句,而需要在程序中进行动态设置。 PreparedStatement的优势 1.增强了程序设计的灵活性; 2.由于PreparedStatement语句是经过预编译的,因此它构造的SQL语句的执行效率比较高。,11.2 JDBC主要类和接口,ResoultSet 接口,ResultSet接口用来暂时存放数据库查询操作获得的结果。它包含了符合SQL语句中条件的所有数据行,并且它提供了一系列get方法对这些数据行中的数据进行访问。,11.2 JDBC主要类和接口,ResultSet 结果集的游标,ResultSet结果集的指针指向当前数据行。最初它位于第一行之前,因此第一次访问结果集时通常调用next方法将指针置于第一行上,使它成为当前行。随后每次调用next指针向下移动一行 。,11.2 JDBC主要类和接口,11.3 通过JDBC访问数据库,JDBC驱动程序类型,配置ODBC数据源,1.本章以SQLServer数据库Sales为例讲解数据源配置过程以及对数据库的相关操作。假设Sales库中有一个表goodsStore,该表存储商品相关信息。 2.其结构如图11-7所示。 3.其中表内的数据如图11-8所示。 4.具体配置见范例。,11.3 通过JDBC访问数据库,JDBC工作流程,在Java语言中,访问数据库的步骤是: 1. 加载JDBC驱动程序; 2. 创建数据库的连接; 3. 执行SQL语句; 4. 接收并处理结果集; 5. 断开连接,关闭数据库。,11.3 通过JDBC访问数据库,第11章 数据库与JDBC本章内容提要11.1 JDBC简介 JDBC(Java DataBase Connectivity,Java数据库连接)是Java程序连接和存取数据库的应用程序接口(API),它由一组用Java语言编写的类与接口组成。 通过JDBC提供的方法,用户能够以一致的方式连接多种不同的数据库系统 ,而不必再为每一种数据库系统编写不同的Java程序代码。 11.1 JDBC简介JDBC结构 11.1 JDBC简介 在编写数据库程序时,通常采用两种方式与数据库进行交互。一种是通过JDBC-ODBC桥。另一种方法是通过数据库提供商或第三方公司开发的JDBC驱动程序对数据库进行访问,这种方式加强了应用程序的可移植性和安全性。 JDBC应用模式 11.1 JDBC简介1.应用模式一两层结构11.1 JDBC简介 在两层结构中,Java applet和Java应用程序将直接与数据库进行对话。用户的SQL语句被送往数据库中而其结果将被送回给用户。数据库可以位于另一台计算机上,用户通过网络连接到上面。即客户机/服务器(c/s)配置。11.1 JDBC简介2.应用模式二两层结构11.1 JDBC简介 在三层结构中,命令先被发送到服务的“中间层”,然后由它将SQL语句发送给数据库。数据库对SQL语句进行处理并将结果送回到中间层,中间层再将结果送回给用户。三层结构具有更强的优势,首先,使用灵活,可以用中间层来控制对数据的访问和可做的操作的种类;其次,操作简单,用户可以利用易于使用的高级API,而由中间层把它转换为相应的低级调用。 11.2 JDBC主要类和接口 JDBC由java.sql包中的20多个java类组成。java.sql包提供了核心的JDBC API,其包含了访问数据库所必须的类、接口和各种访问数据库异常类。 DriverManager 类 该类用来处理JDBC驱动程序,以及创建数据库连接。Driver 该接口代表JDBC驱动程序,必须有驱动程序供应商实现。Connection 该接口代表数据库连接,并拥有创建SQL语句的方法,以完成常规的SQL操作。11.2 JDBC主要类和接口 Statement 提供用来执行SQL语句的方法。ResultSet 该接口提供了对返回结果集的操作方法。SQLException 一个关于对数据库访问的异常接口。该接口提供了一些方法,用以检索数据库提供的错误消息和错误代码。11.2 JDBC主要类和接口 DriverManager类 DriverManager类是java.sql包中用于数据库驱动程序管理的类,作用于用户和驱动程序之间。它跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接,也处理诸如驱动程序登录时间限制及登录和跟踪消息的显示等事务。DriverManager类直接继承自java.lang.object 11.2 JDBC主要类和接口 11.2 JDBC主要类和接口 Connection接口 Connection是用来表示数据库连接的对象,对数据库的一切操作都是在这个连接的基础上进行的 11.2 JDBC主要类和接口 11.2 JDBC主要类和接口 Statement接口 Statement用于在已经建立的连接的基础上向数据库发送SQL语句的对象。它只是一个接口的定义,其中包括了执行SQL语句和获取返回结果的方法。 创建Statement对象的基本方法如下: Statement st=con.creatStatement();11.2 JDBC主要类和接口 .3种Statement对象 Statement、PrepareStatement、CallableStatement 。它们都作为在给定连接上执行SQL语句的容器,每个都专用于发送特定类型的SQL语句。 Statement对象用于执行不带参数的简单SQL语句; PrepareStatement对象用于执行带或不带IN参数的预编译SQL语句; CallableStatement对象用于执行对数据库存储过程的调用。 11.2 JDBC主要类和接口 .3种执行SQL语句的方法 executeQuery方法用于产生单个结果集的SQL语句,如SELECT语句; executeUpdate方法用于执行INSERT、UPDATE、DELETE及DDL(数据定义语言)语句; execute方法用于执行返回多个结果集或多个更新技术的语句。 11.2 JDBC主要类和接口 PreparedStatement 接口 PreparedStatement接口继承了Statement接口,但PreparedStatement语句中包含了警告预编译的SQL语句,因此可以获得更高的执行效率。在PreparedStatement语句中可以包含多个用问号“?”代表的字段,在程序中可以利用setXXX方法设置该字段的内容,从而增强了程序设计的动态性。 11.2 JDBC主要类和接口 PreparedStatement与Statement的区别 PreparedStatement构造的SQL语句不是完整的语句,而需要在程序中进行动态设置。 PreparedStatement的优势 1.增强了程序设计的灵活性; 2.由于PreparedStatement语句是经过预编译的,因此它构造的SQL语句的执行效率比较高。 11.2 JDBC主要类和接口 ResoultSet 接口 ResultSet接口用来暂时存放数据库查询操作获得的结果。它包含了符合SQL语句中条件的所有数据行,并且它提供了一系列get方法对这些数据行中的数据进行访问。 11.2 JDBC主要类和接口 ResultSet 结果集的游标 ResultSet结果集的指针指向当前数据行。最初它位于第一行之前,因此第一次访问结果集时通常调用next方法将指针置于第一行上,使它成为当前行。随后每次调用next指针向下移动一行 。11.2 JDBC主要类和接口 11.3 通过JDBC访问数据库 JDBC驱动程序类型 配置ODBC数据源1.本章以SQLServer数据库Sales为例讲解数据源配置过程以及对数据库的相关操作。假设Sales库中有一个表goodsStore,该表存储商品相关信息。2.其结构如图11-7所示。 3.其中表内的数据如图11-8所示。4.具体配置见范例。 11.3 通过JDBC访问数据库 JDBC工作流程在Java语言中,访问数据库的步骤是: 1. 加载JDBC驱动程序; 2. 创建数据库的连接; 3. 执行SQL语句; 4. 接收并处理结果集; 5. 断开连接,关闭数据库。 11.3 通过JDBC访问数据库 第12章 Java高级编程,本章内容提要,多线程是指同时存在几个执行体,按几条不同的执行线索共同工作的情况。Java 语言内置对多线程的支持,这是Java语言的重要特点之一。它使得编程人员可以很方便地开发出具有多线程功能、能同时处理多个任务的功能强大的应用程序。,12.1 多线程,关于线程的几个术语 1程序 程序是一段静态代码,它是应用软件执行的蓝本。 2进程 进程是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程,这个也是进程本身从产生、发展至消亡的过程。 3线程 线程与进程相似,是比进程更小的执行单位,线程是一段完成某个特定功能的代码。,12.1 多线程,4多线程 多线程是一种允许在程序中并发执行彼此间相互独立的多个线程的控制机制。多线程的执行是并发的,是逻辑上的“同时”,而不是物理上的“同时”。多个线程看似是同时执行,但事实上CPU只有一个,只能是轮流执行,线程不是真正的并行,只是并发。为了建立这些线程正在同步执行的感觉,Java快速地把控制从一个线程切换到另一个线程。,12.1 多线程,创建和使用线程 Java语言中包含了一个Thread类对多线程的概念提供支持。Thread类实现了Runnable接口,在Runnable接口中定义了run()方法,创建线程类就要实现run()方法。 其格式定义为: public void run( ) ,12.1 多线程,在Java中有两种定义线程类的方法 1定义Thread类的子类构造线程 定义一个继承Thread类的子类,并在该类中重写线程类的run()方法。可以直接实例化这个类,这个类的实例就是一个可执行的线程。 例12-1通过继承Thread类构造线程体,12.1 多线程,2通过接口构造线程 实现java.lang.Runnable接口,并实现其run()方法。这个类的实例并不是一个可执行的线程,必须将它的实例作为参数传给Thread类,做进一步的封装。 例12-2通过实现Runnable接口构造线程体,12.1 多线程,3两种方法的比较 (1)继承Thread类 优点:代码简单,实现线程直观易懂。 缺点:将无法再继承其他类。 (2)实现Runnable接口 优点:要实现多线程只能采用实现Runnable接口的方法。 缺点:没有直接使用继承Thread类创建线程方便。,12.1 多线程,线程的调度 1线程的状态 线程的状态表示了线程正在进行的活动以及在这段时间内线程能完成的任务。下图表示了一个Java线程所具有的不同状态。,12.1 多线程,2线程的优先级 多线程系统会给每个线程自动分配一个线程的优先级,任务较紧急的线程,,其优先级就较高,相反则较低。在线程排队时,优先级高的线程可以排在较前的位置,能优先享用到处理器资源,对于优先级相同的线程。则遵循队列的“先进先出”的原则。,12.1 多线程,设置优先级的语句为: Thread t1=new Thread(); t1.setPriority(5); Thread类还定义了3个常数,来表示线程优先级。 MAX_PRIORITY:最高优先级(值为10)。 MIN_PRIORITY:最低优先级(值为1)。 NORM_PRIORITY:默认优先级(值为5)。,12.1 多线程,3线程常用方法 (1)start() (2)run() (3)join() (4)wait() (5)interrupt() (6)sleep(int millsecond),12.1 多线程,(7)notify() (8)notifyAll() (9)isAlive() (10)currentThread() (11)getName(),例12-3 打断线程,12.1 多线程,张三正在睡觉,不听课 上课! 上课! 上课! 张三被老师叫醒了 张三开始听课,例12-4银行汇款,12.1 多线程,sum=100 sum=200 sum=300 sum=400 sum=500 sum=600,网络编程基本知识 1网络通信方式 面向连接的通信方式指双方通信前首先建立连接,然后在传递数据,所有数据以包的形式按照一定的顺序发送和接收,最后关闭连接。 面向无连接的通信方式指双方通信前不需要建立连接,双方利用数据报来发送和接收相互独立的数据包,是一种非可靠的无连接投递报文的通信服务。,12.2 网络编程,2通信协议TCP与UDP 网络上主机之间的应用程序进行通信时有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。 TCP是一种面向连接的保证可靠传输的协议。 UDP是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址。,12.2 网络编程,3通信连接 当采用TCP协议时,通信双方之间首先要建立连接,也就是两者分别运行不同的程序,由一端发出连接请求,另一端等候连接请求,当等候端收到请求并接受请求后,两个程序就建立起一个连接,之后通过该连接进行数据交换。此时请求方称为客户端,接收方称为服务端。这种通信机制称为客户/服务器(C/S)模式。,12.2 网络编程,URL编程 1URL的组成 URL的基本结构由五部分组成: :/:/#,12.2 网络编程,2创建一个URL (1)public URL (String spec); (2)public URL(URL context, String spec); (3)public URL(String protocol, String host, String file); (4)public URL(String protocol, String host, int port, String file);,12.2 网络编程,3解析URL 一个URL对象生成后,其属性是不能被改变的,但是URL类提供一些方法可以获取这些属性: public String getProtocol() public String getHost() public int getPort() public String getFile(),12.2 网络编程,4通过URL访问网络资源 当建立一个URL对象后,就可以通过它读取指定的网络资源。如果希望通过URL访问文本资源,可以使用URL的方法openStream(),其定义为: InputStream openStream(); WWW,FTP等标准化的网络服务都是基于TCP协议的,所以本质上讲URL编程也是基于TCP的一种应用。,12.2 网络编程,例12-6利用URL访问网站文件资源,12.2 网络编程,opening Stream 长春工业大学 ChangChun University Of Technology 当前在线: 237 Stream Closed,Socket通信 Socket通信是以TCP为通信协议的一种面向连接的通信方式。Socket被称为套接字,用于描述网络的IP地址和端口,Java应用程序通过套接字向网络发出请求,或者应答网络请求来建立相互间的通信。,12.2 网络编程,1Socket通信模式 网络应用程序通常采用客户/服务器(C/S)模式,通过Socket进行C/S程序设计的一般连接过程是这样的:服务器端(Server)监听某个端口是否有连接请求,客户端(Client)向服务器端发出连接请求,服务器端向客户端发回接受消息。一个连接就建立起来,此后,服务器端和客户就可以与对方进行通信了。,12.2 网络编程,在选择端口时,必须小心。每一个端口提供一种特定的服务,只有给出正确的端口,才能获得相应的服务。端口号时,最好选择一个大于1023的数以防止发生冲突。01023的端口号为系统所保留,例如http服务的端口号为80,telnet服务的端口号为21,ftp服务的端口号为23, 所以在选择在创建socket时如果发生错误,将产生IOException,在程序中必须对之作出处理。所以在创建Socket或ServerSocket是必须捕获或抛出例外。,12.2 网络编程,例12-6利用Socket建立通信连接,设计C/S结构应用程序 程序运行时应首先启动服务端程序,然后再运行客户端;如果希望在两个主机上运行该程序,需要修改客户端程序中创建Socket对象时的服务器地址参数。,12.2 网络编程,数据报通信 数据报通信是以UDP为通信协议的一种无连接的通信方式。数据报又称为UDP套接字,它无需建立、拆除连接,而是直接将信息打包传向指定的目的地,使用简单,占用系统资源少,适合于非实时的通信。,12.2 网络编程,1DatagramSocket类和DatagramPacket类 (1)DatagramSocket类 DatagramSocket() DatagramSocket(int prot) DatagramSocket(int port, InetAddress laddr) 上述的三个构造方法都声明抛弃非运行时例外SocketException,程序中必须进行处理,或者捕获、或者声明抛弃。,12.2 网络编程,(2)DatagramSocket类 DatagramPacket(byte buf,int length) DatagramPacket(byte buf, int length, InetAddress addr, int port) DatagramPacket(byte buf, int offset, int length) DatagramPacket(byte buf, int offset, int length,InetAddress address, int port),12.2 网络编程,第一种和第三种构造方法用来创建接收数据的对象, 然后调用DatagramSo
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。