收藏 分享(赏)

JAVA笔记大全(非常难得).doc

上传人:HR专家 文档编号:11539164 上传时间:2020-06-11 格式:DOC 页数:53 大小:218.50KB
下载 相关 举报
JAVA笔记大全(非常难得).doc_第1页
第1页 / 共53页
JAVA笔记大全(非常难得).doc_第2页
第2页 / 共53页
JAVA笔记大全(非常难得).doc_第3页
第3页 / 共53页
JAVA笔记大全(非常难得).doc_第4页
第4页 / 共53页
JAVA笔记大全(非常难得).doc_第5页
第5页 / 共53页
点击查看更多>>
资源描述

1、JDBC java -version查看JAVA版本 JDBC一套允许Java同一个SQL数据库对话的程序设计接口. JDBC是执行SQL语句的API,其本身是一个产品的商标名.它由一组用Java语言编写的类与接口组成。JDBC已成为一种供工具/数据库开发者使用的标准API,用户可以用纯Java API来编写数据库应用程序。使用JDBC可以很容易地把SQL语句传送到任何关系型数据库中。 JDBC是用于将Java程序和关系数据库连接起来的程序接口,通过这个接口,使用户可以将访问请求语句以SQL语句的形式编写出来,然后将该程序接口传送到数据库,结果再由同一个接口返回 JDBC力求达到SQL级API

2、,这就意味着JDBC允许用户建立SQL语句,并将其嵌入到Java API调用中,即为Java定义一个“调用级”(Call-level)的SQL接口 JDBC API被描述成一组抽象的Java接口,使得应用程序可以对某个数据库打开连接,执行SQL语句,并且处理结果。 JDBC是一组由驱动程序实现的Java接口。驱动程序负责从标准JDBC调用向支持的数据库所要的具体调用转变 每个JDBC应用程序(或小程序)至少要有一个JDBC驱动程序,每个驱动程序是针对一种DBMS的。但驱动程序不必直接连到数据库 JDBC接口分为两个层次,一个是面向程序开发人员的应程序层(JDBC API),开发人员用API通过

3、SQL调用数据库和取得结果。另外一个是底层的驱动程序层(JDBC Driver API),处理与具体驱动程序版本的所有通信 java.sql包括了所有的JDBC API java.sql.DriverManager 负责处理驱动程序的调入并且对产生新的数据库连接提供支持 java.sql.Connection 代表对特定数据库的连接 java.sql.Statement 代表一个特定的容器,用来对一个特定的数据库执行SQL语句 java.sql.ResultSet 控制对一个特定语句行数据的存取 其中java.sql.Statement又有两个子类型: java.sql.PreparedSta

4、tement 用于执行预编译的SQL语句 java.sql.CallableStatement 用于执行对一个数据库内嵌过程的调用 JDBC提供了连接数据库的几种方法:直接通信、通过JDBC驱动程序通信、通过ODBC通信(JDBC通过JDBC-ODBC桥与ODBC数据源相连) 基本的JDBC数据库访问流程: 1.建立数据源:这里所建的数据源是指建立ODBC数据源。这一点是ODBC所必须的。当我们使用JDBC-ODBC桥来建立连接时,必须先建立ODBC数据源 2.装入JDBC驱动程序:加载驱动程序的操作只需要一句代码。如果class name是jdbc.DriverXYZ,那么就把代码写成:Cl

5、ass.forName(jdbc.DriverXYZ);对于JDBC-ODBC桥来说,如果class name是sun.jdbc.odbc.JdbcOdbcDriver,实际代码可写成Class.forName(sun.jdbc.odbc.JdbcOdbcDriver)(sun.jdbc.odbc是JDBC-ODBC桥的驱动程序所在的程序包,根据开发环境不同可能不同) 3.建立连接:与数据库建立连接的标准方法是调用方法DriverManager.getConnection(String url,String user,String password)。DriverManager类用于处理驱动程

6、序的调入并且对新的数据库连接提供支持,它位于JDBC的管理层,通过该类,能够连到由URL表示的数据库的驱动程序。JDBC URL的标准语法是:jdbc:,其中subprotocol说明了使用哪种JDBC驱动程序,比如若是用的是JDBC-ODBC桥,就写为odbc,若使用的是Sybase的JDBC驱动程序,就写Sybase;subname则为驱动程序提供了连接数据库所需要的一切信息,比如jdbc:Sybase:/jdbcstudy:4233/db_books,表示使用sybase JDBC驱动程序,且连接安装在名为jdbcstudy的服务器的4233端口的db_books数据库中。对于JDBC-

7、ODBC桥来说,subname就是数据源名。为了存取数据,还要提供用户名和口令。例如:String url=jdbc:odbc:source;Connection con=DriverManager.getConnection(url,user,password); 4.执行SQL语句:JDBC提供了Statement类来发送SQL语句,Statement类的对象用createStatement方法创建;SQL语句发送后,返回的结果通常存放在一个ResultSet类的对象中,ResultSet可以看作是一个表,这个表包含由SQL返回的列名和相应的值,ResultSet对象中维持了一个指向当前行

8、的指标,通过一系列的getXXX方法,可以检索当前行的各个列,并显示出来 5.检索结果:对Result对象进行处理后,才能见查询结果显示给用户。Result对象包括一个由查询语句返回的一个表ResultSet,这个表中包含所有的查询结果。对Result对象的处理必须逐行进行,ResultSet.next方法使指针下移一行。而对每一行中的各个列,则可以按任何顺序进行处理。Result类的getXXX方法可将结果集中的SQL数据类型转换为Java数据类型,如getInt、getString、getTime等 6.关闭连接:对象使用完毕后,应当关闭连接 执行一个数据库调用不外乎就是创建一个State

9、ment类(通过Connect接口),并通过该类的execute方法来实现。用executeQuery()方法返回一个ResultSet,而executeUpdate()方法返回UPDATE、INSERT或DELETE语句所影响的行数 缺省情况下,JDBC在每一个SQL语句被送到数据库时才提交这些语句,这被称为“自动提交”。实际上,为了使程序能够更好地进行错误处理,我们可以常见一个Connection对象,用以保证在未提交之前,数据库不会有任何改变,每一个Connection对象都是独立的,某一个该对象中的提交操作都不会对其他的对象造成影响。Connection类提供了setAutoCommi

10、t()方法,使得我们可以关闭“自动提交”import java.sql.*import java.awt.*public class Jdbcexp public static void main(String args) String URL=jdbc:odbc:source;/source是ODBC数据源 Connection con=null;/public interface Connection:A connection (session) with a specific database. SQL statements are executed and results are re

11、turned within the context of a connection. Statement sm=null;/public interface Statement:The object used for executing a static SQL statement and returning the results it produces. ResultSet rs=null;/public interface ResultSet:A table of data representing a database result set, which is usually gene

12、rated by executing a statement that queries the database. try /加载JDBC-ODBC bridge驱动程序 Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);/public final class Class:Instances of the class Class represent classes and interfaces in a running Java application;static Class forName(String className):Returns the C

13、lass object associated with the class or interface with the given string name. catch(Exception e) System.out.println(无法加载JDBC-ODBC bridge驱动程序); return; /与数据库连接并显示 try con=DriverManager.getConnection(URL);/public class DriverManager:When the method getConnection is called, the DriverManager will atte

14、mpt to locate a suitable driver from amongst those loaded at initialization and those loaded explicitly using the same classloader as the current applet or application;static Connection getConnection(String url):Attempts to establish a connection to the given database URL. sm=con.createStatement();/

15、Statement createStatement():Creates a Statement object for sending SQL statements to the database. /执行SQL语句并显示 rs=sm.executeQuery(SELECT * FROM authors WHERE au_id20000000);/ ResultSet executeQuery(String sql):Executes the given SQL statement, which returns a single ResultSet object. System.out.prin

16、tln(结果为:); while(rs.next()/boolean next():Moves the cursor down one row from its current position. /取各个字段的值 int au_id=rs.getint(1);/int getInt(int columnIndex):Retrieves the value of the designated column in the current row of this ResultSet object as an int in the Java programming language. String

17、au_name=rs.getString(2);/ String getString(int columnIndex):Retrieves the value of the designated column in the current row of this ResultSet object as a String in the Java programming language. String phone=rs.getString(3); System.out.println(au_id=+au_id); System.out.println(au_name=+au_name); Sys

18、tem.out.println(phone=+phone); catch(SQLException e) finally/在finally作用范围内的代码块中的语句不管怎样都必须执行。当程序运行中发生异常时,方法中的执行流程将被中断,赭石它就会跳过一些语句,过早地从程序中退出。但是,在本例中,即使发生了异常使程序中断,也还是希望数据库连接能被正常关闭 try /关闭对象 rs.close(); sm.close(); /关闭连接 con.close(); catch(SQLException e) -import java.sql.*import java.awt.*public class

19、Jdbcexp1/不固定URL、用户名和口令,而是把它们作为参数,在程序执行的时候由用户输入 public static void main(String args) String URL=jdbc:odbc:source;/source是ODBC数据源 Connection con=null; if(args.length!=4) /要求输入参数 System.out.println(语法:java Jdbctexp+DRIVER URL UID PASSWORD); try /加载JDBC驱动程序 Class.forName(args0); catch(Exception e) Syste

20、m.out.println(无法加载JDBC-ODBC bridge驱动程序); return; /与数据库连接并显示 try con=DriverManager.getConnection(args1,args2,args3); System.out.println(连接成功); catch(SQLException e) e.printStackTrace(); finally try /关闭连接 con.close(); catch(SQLException e) e.printStackTrace(); 11:08| 发送消息| 固定链接| 查看引用通告 (0)| 写入日志| JDBC

21、与Java数据库程序设计访问数据库 Java语言增加了一个非常重要的内容:Java数据库连接(Java Database Connectivity),简称JDBC 在关系型数据库中,有一个很重要的概念就是:数据是唯一的。也就是说,不管是什么样的数据,一定会有一种方法,使得我们能够唯一地确定某一条记录 现代计算机环境都是分布式的,客户机/服务器(CLient/Server,简称C/S)就是分布式的一个例子。 C/S是一种应用程序结构,它事实上是一种适当安排软硬件的概念。主要是将运算功能与资源分散在服务器与工作站的架构,这种架构通常用于数据库处理工作中。这种结构将对数据的处理划分成不同的应用程序,

22、并分布到不同的机器上。一个C/S程序将对数据的存储和检索交给数据库处理,而将对数据的操作和获得放到其它地方。服务器是数据库引擎,负责数据的存储,是给予者;客户机则负责创建和获得数据,是需求者。C/S结构通过消息传递机制,由客户端发出请求给服务器,服务器进行相应处理后经传递机制送回客户端。一个C/S系统以服务器为中心,并允许多个客户机访问相同的数据。 我们一般所讲的C/S系统是一个两层结构。一般来说,工作站所构成的那一层被称为客户机,又称为表示层,而数据存储层则是服务器,这个服务器是一个典型的包含所有信息的资源库。 客户机/服务器在分布处理过程中,使用基于连接的网络通信模式。该通信模式首先在客户

23、机和服务器之间定义一套通信协议,并创建一个Socket类,利用这个类建立一条可靠的链接;然后,客户机/服务器再在这条链接上可靠地传输数据。客户机发出请求,服务器监听来自客户机的请求,并为客户机提供响应服务,即“请求应答”模式。 实际上,系统的结构取决于应用程序。由于在两层模型中,客户机直接连接到数据库上,这就是的应用程序对数据模型有很强的依赖性,一旦数据改变,应用程序也就不得不重写,这就导致了C/S模型的可扩充性差;此外C/S结构也导致了“肥客户机”问题;对象重用也是C/S结构所不能解决的问题 Browser/Server模型把C/S模型的服务器进一步深化,分解成一个应用服务器(Web服务器)

24、和一个或多个数据库服务器,从而成为三层C/S结构。B/S模型简化了C/S中的客户端,客户端只需装上OS、网络协议软件及浏览器;而服务器端则集中了所有的应用逻辑,开发、维护等几乎所有工作也都集中在服务器端。这是的客户机被称为“瘦客户机”,服务器被称为“肥服务器” 三层C/S结构将Client端与用户界面无关的功能移到了中间层(第二层)。所谓三层结构包括: 表示层:是用户接口部分,是用户与系统间交互信息的界面。它的主要功能是检查用户输入的数据,显示系统输出的数据。如果表示层需要修改时,只需改写显示控制和数据校验程序,而不影响其他两层。检查的内容也只限于数据格式和取值范围,不包括有关业务本身的处理逻

25、辑 应用层:是应用的主体,它包括了应用中全部的业务处理程序。换句话说,除了输入/输出功能在表示层、数据库在数据层以外,全部的统计、汇总、分析、打印功能全部存放在应用层 表示层和应用层之间的数据交换要尽可能简洁。在应用设计中,一定要避免一次业务处理在表示层和应用层之间进行多次数据交换的现象发生 数据层:是数据库管理系统(DBMS)和数据库,负责管理对数据库数据的读写 B/S结构是由三层C/S结构转化而来的。它将Web浏览器作为表示层,将大量的业务处理程序放在应用服务层上作为应用层,而将数据库放在数据库服务器(DB Server)上作为数据层。在B/S结构中,应用服务器又被称为Web服务器,实质上

26、,客户机与Web服务器之间类似于一种终端与主机的模式,而Web服务器与数据库服务器之间是一种C/S数据库模式。Web服务器在逻辑上是独立的,但在物理上它既可以是独立的服务器,也可以与应用服务器(?)一起放在同一个服务器中,构成B/S结构 在三层结构中,应用层包含了所有的事务处理程序,一般由数据存储接口和公用API组成:表示层并不直接与数据库连接,而是通过应用层中的事物对象(Business Object)来访问数据。一个事务对象提供了在数据库中存取数据的方法,而这些方法在对象之外都是不能获得的,而这些方法在对象之外都是不能获得的,也就是说,它不会影响其他的对象,但同时,事物对象也为外部对象提供

27、了访问其公共接口的方法 在B/S结构中,采用Internet浏览器作为表示层 目前许多数据库系统均支持SQL,对于由SQL数据库组成的异构数据库系统,JDBC和ODBC为访问其异构成员提供了统一的方式。 ODBC(Open Database Connectivity),即开放式数据库连接,是用C语言写成的一种在不同数据库管理系统中存取数据的标准应用程序接口 ODBC使用结构化查询语言(SQL)作为其数据库访问语言。其总体结构有4个组件: 应用程序:执行处理并调用ODBC API函数,以提交SQL语句并执行结果 驱动程序管理器(Driver Manager):根据应用程序需要加载/卸载驱动程序,

28、处理ODBC函数调用,或把它们传送到驱动程序上 驱动程序:处理ODBC函数调用,提交SQL请求到一个指定的数据源,并把结果返回到应用程序。如果有必要,驱动程序修改一个应用程序请求,以使请求与相关的DBMS支持的语法一致 数据源:包括用户要访问的数据及其相关的操作系统、DBMS及用于访问DBMS的网络平台 每种数据库引擎都需要向驱动程序管理器注册它自己的ODBC驱动程序,当一个程序向ODBC发出一个SQL查询指令,驱动程序管理器就将请求从应用程序传给ODBC驱动程序,并由ODBC驱动程序翻译这个指令,以便相应的数据源识别出这个查询,并正确的响应。ODBC驱动程序的使用把应用程序从具体的数据调用中

29、隔离开来,驱动程序管理器针对特定数据库的各个驱动程序进行集中管理,并向应用程序提供统一的标准接口 JDBC(Java Database Connectivity),是用于执行SQL语句的Java应用程序接口,是一套API集合,在这个集合中设置了许多允许Java程序连接数据库的框架。JDBC由一组用Java语言写成的类和接口组成,是一种连接不同数据库的规范,其宗旨是让各数据库开发商为Java程序员提供标准的数据库访问类和接口。JDBC与Java结合,使用户可以很容易地把SQL语句传送到任何关系型数据库中,程序员用它编写的数据库应用程序,可以在各种数据库系统上运行 JDBC和ODBC都是基于X/O

30、pen的SQL调用级接口,JDBC沿袭了ODBC的设计思想,同时在其主要抽象和SQL CLI实现上也沿袭了ODBC,其总体结构也类似于ODBC,有四个组件:应用程序、驱动程序管理器、驱动程序和数据源 JDBC使用相同源代码的应用程序通过动态加载不同的JDBC驱动程序,可以访问不同的DBMS。连接不同的DBMS时,各个DBMS之间通过不同的URL进行标识。JDBC的DatabaseMetaData接口提供了一系列方法,可以检查DBMS对特定特性的支持,并相应确定有什么特性,从而能对特定数据库的特性予以支持。与ODBC一样,JDBC也支持在应用程序中同时建立多个数据库连接 JDBC除了具有ODBC

31、的上述特点外,更具有对硬件平台、操作系统异构性的支持,因为JDBC使用的是Java语言。此外,JDBC驱动程序管理器是内置的,驱动程序本身也开通过Web浏览器自动下载,无须安装、配置;而ODBC驱动程序管理器和ODBC驱动程序必须在每个客户机上分别安装、配置11:07| 发送消息| 固定链接| 查看引用通告 (0)| 写入日志| JDBC与Java数据库程序设计Java编程基础篇 Java语言在本质上是解释执行的 在程序被编译时,实际上是在对程序进行词法分析,并把源代码分解为词法符号和空白符号。忽略空白符号后,再对剩余的部分进行处理。Java语言中的词法符号一共有5种:关键字、标识符、常量、运

32、算符和分隔符 在Java语言中,数据类型可分为两大类:基本数据类型和引用类型 基本数据类型是不能再分解的数据类型(8种:byte、short、int、long、char、float、double、boolean),数据在作为函数参数是以“传值”方式工作的; 引用类型有时也称复合类型,它是可以分解为基本类型的数据类型,其数据在作为函数参数时是以“传址”的方式工作的。Java的引用类型包括类(class)、接口(interface)、数组(array) int的能表示的数值范围超过了20亿,如果要以“毫秒”为单位来表示一年,就需要使用long型 字符型数据是指用单引号括起来的一个或多个字符,单引号

33、用来表示字符常数。例如A代表一个字符,而A是包含了单个字符的一个字串。字符型变量的类型为char,在Java语言中,字符型数据不能用作整数,因为Java语言中没有无符号整数类型。但是字符型数据可以转换为整数来运算。字符型数据除转义符外只能存放一个字符 java语言中的布尔型不能和任何其他类型进行转换 字符串类型String。当用+连接一个字符串和一个非字符串的值时,非字符串变量将被自动转换成字符串。如String mystr=ID+100,这句会把mystr赋值为ID100,所以可以用语句System.out.println(The number is+num)输出我们想要的内容 求一个字符串

34、的子串可以用String类所提供的substring方法,substring(a,b)中的b是你不打算留下的字符串的第一个位置 length方法可以得到一个字符串的长度 charAt(n)方法返回字符串中位于n位置的那个字符 我们可以用equals方法来检查两个字符串是否相等s1.equals(s2)。对于equals方法来说,s1和s2既可以是字符串变量,也可以是字符串常量。如mystring.equals(s)。如果在检测字符串是否相等时,希望忽略字母大小写的区别,可以用equalsIgnoreCase方法 int compareTo(String other):按字典顺序,字符串若在ot

35、her之前,返回负值;之后,返回正值;相等,返回0 boolean endsWith(String suffix):若指定字符串以suffix结尾,返回ture boolean startsWith(String prefix):若指定字符串以prefix开始,返回ture int indexOf(String str),int indexOf(String str,int fromIndex):返回与str相等的第一个字串的起始位置,从索引位置0或fromIndex开始 Sring replace(char oldChar,char newChar):返回一个新串,它用newChar替换ol

36、dChar Sring toLowerCase():将指定字符串中的字符全部转换为小写 Sring toUpperCase():将指定字符串中的字符全部转换为大写 String trim():去掉指定字符串中开头和结尾部分的空格 在Java语言中没有专门的乘幂运算符,要进行幂运算,必须采用pow方法。pow方法是java.lang中的Math类的一部分,其使用方法如下 double y=Math.pow(x,a) Java语言不支持运算符重载 Java语言对加法运算法进行了扩展,使之能够进行字符串的连接 左移一位(最高位作为补位)相当于除以2 超类是相对于子类而言的,某一个类的父类就是这个类的

37、超类 实例就是一个特定的对象,是某个特定类所描述的一个对象,是类的具体实现。而类则是各个实例间相似性的描述。即,类是实例的抽象,实例是类的具体 在Java语言中,一个新的类必须在已有类的基础上构造,即由已有的类派生出来,类定义的一般形式如下: accessSpecifier class NameofClass extends parentClass implements interfacelist /按照一般约定,用首字母大写的字符串表示类名 variablemodifier type instance_variable; methodmodifier type Nameofmethod(pa

38、rameterlist) method_body; 构造方法就是用来初始化新建对象的一个特殊方法: 构造方法名与类名相同; 构造方法可以由一个或多个参数,也可以没有参数; 构造方法只能通过new运算符来使用,而不能直接引用方法名; 构造方法没有返回值; 构造方法不能从超类中直接继承; 构造方法可以重载,一个类可以有多个构造方法,他们的参数状态各不相同 与构造方法相对的就是结束方法finalize,其作用一般是进行关闭文件和释放网络资源的操作。结束方法不需要在程序中被现实地调用,只要在类中有一个名为finalize的方法,Java运行器便会在回收对象空间时自动调用这个方法。结束方法没有返回值,也

39、不带任何参数 复制数组:System.arraycopy(from,fromIndex,to,toIndex,count);将from数组中,从下标fromIndex开始的count个元素复制到to数组从toIndex下标开始的位置 数组可以作为参数和返回值 Java没有多维数组,只有一维数组,多维数组被用作“数组的数组” public static switchrow() int a=1,2,3,4,5,6,7,8,9; int temp=a2; a2=a0; a0=temp; Java中用接口来解决不能多重继承的问题。对接口的定义只能由常量和抽象方法组成 接口定义的一般格式为: acces

40、sSpecifier interface iterfaceName extends superinterfacelist body; 从本质上说,接口使你的类可以实现特定的方法,不存在任何关系的两个类之间因为实现了相同的接口而共享其中定义的变量和方法 例如,标准库中定义了一个名为Comparable的接口,其代码形式可简化为如下形式: public interface Compable public int compareTo(Object b) 这段代码说明,只要是实现了Comparable接口的任何一个类都会有一个compareTo方法,而不管他们的超类中是否有此方法,并且,这些类的所有子

41、类也都会自动实现Comparable。对于一个特定的类,则可以定义不同的compareTo的实现方法。要告诉Java自定义的一个类实现了Comparable,需要作如下定义: class Myclass extends ParentClass implements Comparable 若父类已经实现了一个接口,那么它的子类就不必显示地使用关键字implements Java应用程序接口(Java Application Programming Interface),简称Java API,其概念与C/C+类库差不多,我们也可以把它看成是Java类库。 所有系统定义的类被分成8个包,其名称和用途

42、如表所示 java.lang:包含了Java语言的核心部分 java.io:程序的输入、输出 java.util:工具类 :程序与网络的信息交换 java.awt:建立图形用户界面 java.awt.image:图像处理 java.awt.peer:有关系统跨平台移植的处理 java.applet:使Applet运行 JavaBeans概述 与VB相比,用Java语言编程需要更多的人工编程,涉及到大量的代码。为此,Sun公司可通过JavaBeans为Java编程环境引入了以组件为基础的“粘合”模型。JavaBeans被用来开发组件软件,它实际上有些类似ActiveX控件,它能做与Activex差不多的事情,它是用来开发即插即用组件的一种规范。与ActiveX控件不同的是,JavaBeans自然具有Java语言的跨平台工作能力,同时还自动配备了一个安全管理器。JavaBeans的提出使得Java语言能够创建和处理以组件形式出现的特殊的Java类。 任何JavaBeans组件都能与本地虚拟机上的其它组件通信,它与远程服务器的连接则通过3种对象总线进行,即:远程方法调用(RMI)、Internet InterORB(IIOP)以及Java数据库连接(JDBC),分别实现与Java虚

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > 计算机原理

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报