您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > Java对数据库的简单实用
DatabaseOperationRelationDatabaseOverviewSQLlanguageJava’sDatabaseconnectionandusingAsimpleExample数据文件管理系统-数据库计算机应用的初期:数据和数据的处理对应用程序而言往往是一体的。应用程序处理结束时,数据的生命周期也就结束了。用户希望数据能用于多个应用程序,出现了文件管理系统。文件管理系统实现了数据在各个应用间的共享,但是文件管理系统管理的基本是分散的、相互独立的数据文件。不同应用程序的文件管理系统数据格式各不相同,共享比较困难;存在大量冗余。20世纪60年代出现了数据库技术与数据文件相比,数据库消除了数据冗余,保证了数据完整性、一致性和安全性,实现了数据无关性。3DATABASEOVERVIEW数据库是以某种文件结构存储的一系列信息表可以通过某些语句访问这些表、选择表中的行或列、对表进行排序、以及根据各种条件对表内的内容进行查询每一个表中都存储了对一类对象的数据描述表中的每一列描述了对象的一个属性(field或column)表的每一行则是对一个对象的具体描述,称为一个记录(record或row)举例:学生-课程-选课关系数据库学号姓名性别年龄系别98001980029800398004张平王新李花赵燕男男女女19201818计算机计算机数学电子课程号课程名先行课学分1234567数据库数学软件工程操作系统数据结构网络系统C语言557744644433学号课程号成绩980019800198001980029800298002125513908692807794SQL语言SQL(StructureQueryLanguage,结构化查询语言)是操纵数据库的标准语言。其语法非常简单,但功能强大,可以进行复杂的数据库操作SQL语言的特点非过程化语言-命令式语言,将要求交给系统,自动完成全部工作,一次处理的是一个记录集合统一语言,既是自含式语言又是嵌入式语言,它能够独立的用于联机交互的使用方式,用户可以在终端上直接键入SQL命令对数据库进行操作SQL可嵌入许多高级语言开发工具中,供程序员设计程序时使用关系数据库的公共语言目前流行的数据库产品,几乎全部支持SQL语言大多数数据库的存取语言和标准接口使不同的数据库之间有了相互操作的基础SQL的命令常用的SQL命令CREATE——定义基本表格式:CREATETABLE表名(列名数据类型,……)实例,建立一个“学生表”,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept5个属性组成CREATETABLEStudent(SnoCHAR(5)NOTNULLUNIQUE,SnameCHAR(20),SsexCHAR(1),SageINT,SdeptCHAR(15));常用的SQL命令SELECT——查询,取出特定记录格式:SELECT[DISTINCT|ALL]目标列表达式[,目标列表达式……FROM表名[,表名]……[WHERE条件表达式][GROUPBY列名1[HAVING条件表达式]][ORDERBY列名2[ASC|DESC]]例1:查询全体学生的学号与姓名SELECTSno,SnameFROMStudent例2:查询计算机系年龄大于20岁的学生的姓名、出生年月SELECTSname,’YearofBirth:’,2014-SageFROMStudentWHERESage20ANDSdept=‘CS’查询结果SnameYearofBirth:2014-Sage李勇YearofBirth:1993刘晨YearofBirth:1992……常用查询条件查询条件运算符或谓词比较确定范围确定集合字符匹配空值多重条件=,,=,,=,!=,,!,!,NOT+上述比较符BETWEEN,AND,NOTBETWEENANDIN,NOTINLIKE,NOTLIKEISNULL,ISNOTNULLAND,OR常用的SQL命令INSERT——添加一条新记录格式:INSERTINTO表名[(属性列1)][,属性列2]]VALUES(常量1[,常量2]……)例如:将一个新学生记录(学号:95020;姓名:陈冬;性别:男;所在系:CS;年龄:19岁),插入Student中INSERTINTOStudentVALUES(‘95020’,’陈冬’,‘男’,’CS’,19)常用的SQL命令UPDATE——数据更新,改变特定记录的值格式:UPDATE表名SET列名=表达式[,列名=表达式]……[WHERE条件];例如:将学生95001的年龄增加1UPDATEStudentSETSage=Sage+1WHERESno=95001常用的SQL命令DELETE——删除特定的记录格式:DELETEFROM表名WHERE条件;例如:删除计算机系所有学生的选课记录DELETEFROMSCWHERE‘CS’=(SELECTSdeptFROMStudentWHEREStudent.Sno=SC.Sno);JDBC的使用JDBC是一种可用于执行SQL语句的JavaAPI(ApplicationProgrammingInterface应用程序设计接口)是Java和数据库之间的标准接口,使用JDBC作为Java的数据库访问规范,可以实现数据库访问的平台无关性。它由一些Java语言编写的类和接口组成通过使用JDBC,开发人员可以很方便地将SQL语句传送给几乎任何一种数据库。也就是说,开发人员可以不必写一个程序访问Sybase,写另一个程序访问Oracle,再写一个程序访问Microsoft的SQLServer。JDBC的任务(1)与一个数据库建立连接(2)向数据库发送SQL语句(3)处理数据库返回的结果JDBC是一种低级的API数据库驱动方式当应用程序被移植到不同的平台或数据库系统,应用程序不变,改变的是驱动程序,驱动程序扮演了多层数据库设计中的中间层(或中间件)的角色。应用程序(java)JavaJDBC驱动程序(java类)数据库SunJDBC/ODBC桥(本地)ODBC驱动程序数据端客户机100%纯Java解决方案Java/本地代码混合解决方案JDBC接口与驱动程序JDBC主要提供两个层次的接口,分别是面向程序开发人员的JDBCAPI(JDBC应用程序接口)和面向系统底层的JDBCDriveAPI(JDBC驱动程序接口),它们的功能如下图所示。Java应用程序JDBCAPIJDBC驱动程序管理器JDBCDriverAPIJDBC-Net驱动程序JDBC-ODBC驱动程序ODBCDriver驱动程序A驱动程序BJDBC中间件协议数据库专用访问协议JDBC各个数据库厂家遵循JDBC接口规范,各自实现自己的驱动程序(Driver),如下图所示:21驱动程序负责把标准JDBC调用转换成具体数据库的调用JDBC的体系结构从图中可看出JDBCAPI所关心的只是Java调用SQL的抽象接口,而不考虑具体使用时采用的是何种方式,具体的数据库调用要靠JDBCDriverAPI(JDBC驱动程序接口)来完成,即JDBCAPI可以与数据库无关,只要提供了JDBCDriverAPI,就可以JDBCAPI访问任意一种数据库,无论它位于本地还是远程服务器。JDBCAPIJDBCAPI由一组Java类和接口组成。JDBCAPI定义一个独立于多种具体关系数据库的、通用的SQL数据库存取框架,这使应用程序开发者可以面对统一的数据库接口编程。23JDBC的两个程序包Java.sql(核心API)Javax.sql(扩展API)JAVA.SQL(核心API)这个包中的类主要针对基本的数据库编程服务,如生成连接、执行语句以及准备语句和运行批处理查询等。Java.sql包同时还提供了一些高级的处理,比如批处理更新、事务隔离和可滚动结果集等。JAVAX.SQL(扩展API)它主要为数据库方面的高级操作提供了接口和类。如连接管理、分布式事务和行集等。JDBCAPI(续)所有数据库的JDBC驱动程序都应实现的重要接口java.sql.DriverManagerjava.sql.Connectionjava.sql.Statementjava.sql.ResultSet25JDBCAPI(续)java.sql.DriverManager是一个类,调用其静态方法处理驱动程序的调入和对驱动程序的管理。java.sql.Connection其对象代表对特定数据库的一个连接,连接对象由DriverManager的静态方法getConnection()创建。26JDBCAPI(续)java.sql.Statement代表一个特定的容器,用以执行SQL语句。java.sql.ResultSet其对象代表执行一个Select语句后的结果集合,用以控制结果的输出格式。27数据库连接步骤一Step1注册数据库驱动即将驱动程序类装入JVM的过程。常使用类调用器(ClassLoader)。为了让JDBC与平台无关,JDBC提供了“驱动程序管理器”,如果你需要连接3种不同厂商的数据库,那么就需要三个不同的驱动器对象。以下语句装载了两个不同的数据库驱动Class.forName(“sun.jdbc.odbc.jdbcOdbcDriver”)//Access数据库的驱动类;Class.forName(“com.mysql.JDBCDriver”);//MYSQL数据库的驱动类;几个数据库驱动类名称Step2创建数据库连接(1)从编程的角度,有两个类负责与数据库建立连接。DriverManager类,负责管理已注册驱动程序的集合,实质上就是提取使用驱动程序的细节,而不用程序员直接处理。实际的JDBCDriver类,由独立厂商提供,负责建立数据库连接和处理所有与数据库的通信。30数据库连接步骤二(2)JDBC采用JDBCURL来标识数据库,用一个dbURL字符串请求连接数据库。dbUBL标准格式如下:jdbc:子协议:数据库标识形如:jdbc:drivertype:driversubtype://parmeterjdbc:表示所使用的是JDBC协议子协议:驱动程序的名称或数据库连接机制的名称,也叫subprotocaldriversubtype:可选的参数数据库标识符parmeter:随所用的数据库驱动程序而有所不同,但通常会指定一个逻辑名称——通常用来设置数据库服务器的IP地址、端口号和数据库的名称不同厂商的数据库,提供的驱动程序和连接的URL都不同例:StringdbUrl=“jdbc:odbc:people”;StringdbUrl=“jdbc:rmi://192.168.170.27:1099/jdbc:cloudscape:db”子协议服务器名端口号数据库标识对MySQL,数据库URL为jdbc:mysql://localhost:3306/dbName32数据库连接步骤二(3)dbURL构造好以后,调用static函数:DriverManager.getConnection(),传入dbURL,完成数据库的连接,该函数返回一个Connection对象Connectionc;c=DriverManager.getConnection(dbUrl);c=DriverManager.getConnection(dbUrl,user,password);数据库连接步骤三、四、五3.建立Statement对象,准备调用SQL语句Statementstmt=con.createStatement();4.准备并执行调用SQL语句Stringsql=“select*fromEmployees”;ResultSetrs=
本文标题:Java对数据库的简单实用
链接地址:https://www.777doc.com/doc-2880959 .html