数据库编程基础.ppt

上传人:wuy****n92 文档编号:91250539 上传时间:2023-05-24 格式:PPT 页数:41 大小:285.66KB
返回 下载 相关 举报
数据库编程基础.ppt_第1页
第1页 / 共41页
数据库编程基础.ppt_第2页
第2页 / 共41页
点击查看更多>>
资源描述

《数据库编程基础.ppt》由会员分享,可在线阅读,更多相关《数据库编程基础.ppt(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第12章 数据库编程基础 HuFuxiangChapter 12 Program of Database 预习与提问 1、说明字段(列)、记录(行)、表、数据库的关系。2、在SQL Server2000数据库中,提供了哪些类型的字段?3、如果要开发有多种题型的考试软件,对于试题文件和评分标准,理解的保存方法是什么?12.1 JDBC的工作原理一、什么是JDBCo JDBCJava DataBase Connection,JAVA数据库 连 接 的 API(Application Progarm Interface-应用程序接口),它允许JAVA应用程序访问任何形式的表格化数据,包括SQL Se

2、rver和ACCESS、Excel等。o JDBC的主要特点:与任何关系数据库协同工作的原理相同,可以适用天任何关系数据库。12.1 JDBC的工作原理二、JDBC的工作过程o 与数据源建立连接:通过DriverManager类建立与数据源的连接,这个连接作为数据操作的起点,也是连接会话事务操作的基础;o 向 数 据 库 发 出 SQL命 令:通 过 Statement类 或 者PreparedStatement类向数据源发送SQL命令,然后再调用类中的execute方法来执行SQL命令;o 处理数据源返回的结果:对于DDL/DML操作,返回被修改的记录数,对于查询操作,返回结果集Result

3、Set,通过遍历结果集可以获得所需的查询结果。12.1 JDBC的工作原理三、JDBC驱动程序的四种类型o JDBCODBC桥ODBC(开放数据库连接):通过ODBC驱动程序提供JDBC访问,缺点是必须加载到目标机器上,并且ODBC-JDBC转换影响效率。o 本地API部分JAVA驱动程序:使用本地API与数据源通信,使用JAVA方法调用数据操作的API函数。缺点是必须在目标机器上存放本地代码,不同厂商提供的驱动程序可能不一致;12.1 JDBC的工作原理三、JDBC驱动程序的四种类型o JDBCNet纯JAVA驱动程序:将JDBC调用转化为DBMS独立网络协议,然后由服务器转化为DBMS协议

4、。缺点是协议转换困难。o 本地协议的纯JAVA驱动程序:全部是JAVA驱动程序,允许从JAVA客房端直接调用数据库服务器,不需要对客户端进行配置,只要注册相应的驱动程序即可,同时它全面继承JAVA的跨平台性和安全性,是最理想的驱动程序类型。12.1 JDBC的工作原理四、JDBC的两个概念o 连接池:建立数据库连接需要较多的时间和资源,采用连接池方法后,可以保持若干已经建好的连接,需要进行数据通信时可以直接使用这些连接,以节省时间和资源。o 事务操作:事务transcation,是对一个处理的全部操作过程,当所有步骤全部完成后,这个处理才算结束,否则必须回滚Rollback,即一旦某一步骤失败

5、,则之前所有步骤都要撤销。12.2 SQLSever2000 for JDBC的安装与测试一、必备软件/系统需求o 数据库:sql server 2000;o sql server 2000 补丁:sql server 2000 sp3 以上;=8E2DFC8D-C20E-4446-99A9-B7F0213F8BC5&displaylang=eno 驱动程序:sql server driver for jdbco sql server driver for jdbc 补丁:JDBC SP3;o java 版本:jdk1.4 以上。12.2 SQLSever2000 for JDBC的安装与测试

6、一、软件安装o 确认 sql server 2000 和JDK 可正常运行;o 安装sql server 2000 补丁SP3o 安装sql server driver for jdbc;默认的安装路径是:C:Program FilesMicrosoft SQL Server 2000 Driver for JDBCo 安装sql server driver for jdbc 补丁JDBC SP3。安装目录lib 下的三个jar 文件是JDBC 驱动核心:msbase.jar,mssqlserver.jar,msutil.jar 12.2 SQLSever2000 for JDBC的安装与测试

7、二、配置1、配置JCreator:将安装目录lib 下的三个jar 文件全部加为系统包。步骤是:o 配置/选项/JDK 配置文件;o 选择JDK 配置文件,编辑/添加/添加存档;o 打 开C:Program FilesMicrosoft SQL Server 2000 Driver for JDBClib 文件夹;o 选 择 全 部 三 个jar 文 件,即mssqlserver.jar,msbase.jar,msutil.jar;o 打开/确定 12.2 SQLSever2000 for JDBC的安装与测试二、配置2、配置SQLServer2000:以Windows 管理员身份启动机器,再

8、设置SQL 数据库的管理员和密码。步骤:o 启动SQL Server2000 服务管理器;o 启 动SQL Server2000 企 业 管 理 器,右 击SQL 服 务器 名,“属 性/安 全 性”,选 择 身 份 验 证 为“SQL Server 和 Windows”,其他不变;o 系 统 若 弹 出 对 话 框 要 输 入 管 理 员 名 称 和 密 码,请 全 部输入“sa”,配置完成。o 若 没 有 出 现 输 入 管 理 员 名 称 和 密 码 的 对 话 框,则 依 次展 开“服 务 器 名/安 全 性/登 录”,双 击“sa”用 户,输入密码为“sa”,确定,配置完成。12.2

9、 SQLSever2000 for JDBC的安装与测试三、测试1、正确结果:用JCreator 打开文件Connet.java,编辑运行,如果出现以下结果,表明配置正常。12.2 SQLSever2000 for JDBC的安装与测试三、测试2、错误结果:用JCreator打开文件SQLConnection.java,编辑运行,如果出现以下结果,表明配置错误。:用户 sa 登录失败。原因:未与信任 SQL Server 连接相关联。o 解决步骤:这一问题一般是由于SQL Server未集成Windows身份验证导致的,所以解决方案为:o 1打开SQL Server企业管理器;o 2选择服务器

10、名称上右键选择“编辑SQL Server注册属性”,然后在对话框中选择“使用windows身份验证”;o 3试一下,如果不行,再检查安全性设置是否正确,转下一步;o 4同样右键,选择“属性”,然后打开“安全性”选项卡;o 5在选项卡中,选择身份验证为“SQL Server和 Windows”,其他不变。12.2 SQLSever2000 for JDBC的安装与测试三、测试3、可能错误:JDBC 错误的原因一般有3 个:(1)classpath 有 问 题,一 般 出 现 在 用JDK 编辑运行时,用JCreator 不会出现此现象;(2)sql server 2000 sp3 补丁没装;(3

11、)用户权限问题:o 是否是Windows 管理员;o 是否是sql server 系统管理员sa;o 管理员sa 的密码是否是sa;12.2 SQLSever2000 for JDBC的安装与测试四、测试程序(Connet.java)1.public class Connet2.private con=null;3.private final String url=jdbc:microsoft:sqlserver:/;4.private final String serverName=localhost;5.private final String portNumber=1433;6.priv

12、ate final String databaseName=“pubs;7.private final String userName=sa;8.private final String password=sa;9.private final String selectMethod=cursor;12.2 SQLSever2000 for JDBC的安装与测试10.public Connet()11.private String getConnectionUrl()12.return url+serverName+:+portNumber+;databaseName=+databaseName

13、+;selectMethod=+selectMethod+;13.14.private getConnection()15.try16.);17.con=java.sql.DriverManager.getConnection(getConnectionUrl(),userName,password);18.if(con!=null)System.out.println(Connection Successful!);19.catch(Exception e)20.e.printStackTrace();21.System.out.println(Error Trace in getConne

14、ction():+e.getMessage();22.23.return con;24.12.2 SQLSever2000 for JDBC的安装与测试25.public void displayDbProperties()26.dm=null;27.rs=null;28.try29.con=this.getConnection();30.if(con!=null)31.dm=con.getMetaData();32.System.out.println(Driver Information);33.System.out.println(tDriver Name:+dm.getDriverNa

15、me();34.System.out.println(tDriver Version:+dm.getDriverVersion();35.System.out.println(nDatabase Information);36.System.out.println(tDatabase Name:+dm.getDatabaseProductName();37.System.out.println(tDatabase Version:+dm.getDatabaseProductVersion();38.System.out.println(Avalilable Catalogs);39.rs=dm

16、.getCatalogs();40.while(rs.next()41.System.out.println(tcatalog:+rs.getString(1);42.43.rs.close();rs=null;closeConnection();44.else System.out.println(Error:No active Connection);45.catch(Exception e)e.printStackTrace();46.dm=null;47.12.2 SQLSever2000 for JDBC的安装与测试48.private void closeConnection()4

17、9.try50.if(con!=null)51.con.close();52.con=null;53.catch(Exception e)54.e.printStackTrace();55.56.57.public static void main(String args)throws Exception58.59.Connet myDbTest=new Connet();60.myDbTest.displayDbProperties();61.62.12.3 JDBC的工作过程一、JDBC 的工作原理o JDBC 是支持基本SQL 数据库功能的一系列抽象的接口,最重要 的接口包括:o Man

18、ager(处理驱动的调入并且对产生新的数据库连接提供支持)o(代表对特定数据库的连接)o(代表一个特定的容器,对一个特定的数 据库执行SQL 语句)o(控制对一个特定语句的行数据的存取)这些接口在不同的数据库功能模块的层次上提供了一个统一的用户界面,使得独立于数据库的Java 应用程序开发成为可能,同时提供了多样化的数据库连接方式。JDBC 的工作原理如下图:12.3 JDBC的工作过程一、JDBC 的工作原理o JDBC的工作原理示意图(上图)o JDBC与数据库的连接方式(下图)12.3 JDBC的工作过程二、开 发JDBC 应 用o 1.引入一个必要的类o 2.加载JDBC驱动程序o 3

19、.标识数据源(URL、Username、Password)o 4.分配一个Connection对象o 5.分配一个Statement对象o 6.使用该Statement对象执行检查 SQL语句o 7.返回的ResultSet对象中检索数据类似于迭代器的操作o 8.关闭ResultSet对象,关闭Statement对象,关闭Connection对象12.3 JDBC的工作过程二、开 发JDBC 应 用1、装载驱动程序通过JDBC来连接关系数据库,应用程序必须采取的第一个步骤是加载合适的JDBC驱动程序,并获得一个与该数据库的连接。用JDBC的DriverManager类实现。此类实现了接口。加载

20、Driver接口并把它注册给DriverManager类有两种方法:(1)使用Class.forName()方法,一般是:);(2)标识jdbc.drivers系统属性内的Driver类12.3 JDBC的工作过程2、建立连接实现Connection接口的一个类对象(即一个Connection对象)代表一个与某个具体数据源的连接。Connection对象实际上是建立一个上下文环境,以便程序员能在它里面创建并执行SQl命令。Connection databaseConnection=DriverManager.getConnection(sourceURL);如:con=java.sql.Dri

21、verManager.getConnection(getConnectionUrl(),userName,password);这里的url 一般是如下格式:jdbc:microsoft:sqlserver:/+serverName+:+portNumber+;databaseName=+databaseName+;selectMethod=+selectMethod12.3 JDBC的工作过程3、语句与结果集Statement接口提供了执行SQL语句和检索结构的一种方法。由于Statement是一个接口,所以程序员不能直接创建一个Statement对象。通常创建这个对象的方法是:Stateme

22、nt statement=connection.createStatement();当建成一个Statement 对象之后,它提供一个工作空间供用户创建SQL 查询,执行该查询,以及检索返回的任何结果,可以通过调用该Statement 对象的下列执行方法来执行SQL 查询:executeQuery()用于在单个ResultSet 对象的数据库中检索出数据的SQL 语句。executeUpdate()执行不返回ResultSet 对象的查询。它的返回值是一个整数(称为更新计数),它给出受到影响的行数。execute()执行返回多个结果集,多个更新计数值或这两者组合的语句。12.3 JDBC的工作

23、过程3、语句与结果集Statement接口提供了执行SQL语句和检索结构的一种方法。由于Statement是一个接口,所以程序员不能直接创建一个Statement对象。通常创建这个对象的方法是:Statement statement=connection.createStatement();当建成一个Statement 对象之后,它提供一个工作空间供用户创建SQL 查询,执行该查询,以及检索返回的任何结果,可以通过调用该Statement 对象的下列执行方法来执行SQL 查询:executeQuery()用于在单个ResultSet 对象的数据库中检索出数据的SQL 语句。executeUpd

24、ate()执行不返回ResultSet 对象的查询。它的返回值是一个整数(称为更新计数),它给出受到影响的行数。execute()执行返回多个结果集,多个更新计数值或这两者组合的语句。12.3 JDBC的工作过程4、应用举例(1)下面的语句建立名为cx 的Statement 对象:Statement cx=con.creatStatement();在Statement对象上,可以使用execQuery方法执行查询语句。execQuery的参数是一个String对象,即一个SQL的Select语句。它的返回值是一个ResultSet类的对象。ResultSet result=cx.execQue

25、ry(“SELECT*FROM A”)该语句将在result中返回表A中的所有行。对Result对象进处理后,才能将查询结果显示给用户。Result 对象包括一个由查询语句返回的一个表,这个表中包含所有的 查询结果。对Result对象的处理必须逐行,而对每一行中的各 个列,可以按任何顺序进行处理。Result类的getXXX方法可将 结果集中的SQL数据类型转换为Java数据类型。12.3 JDBC的工作过程4、应用举例(2)对数据库中的记录可以进行修改、插入和删除操作,分别对应于SQL 的Update、Insert 和Delete 操作。同Select语句类似,executeUpdate 方

26、法的参数是一个String 对象,即要执行的SQL 语句。它返回一个整数。对于修改、插入和删除操作,返回的是操作记录 的行数,对于不返回值的SQL 语句,executeUpdate 方法返回零。例:cx.executeUpdate=(“UPDATE A SET Code=5 WHERE DEPARTMENT=COMPUTER”)12.3 JDBC的工作过程三、java.sql包的用法1、主要接口:o 软件包 java.sql 提供使用 JavaTM 编程语言访问并处理存储在数据源(通常是一个关系数据库)中的数据的 API。Java(TM)是Sun 公司的商标,标识了一系列在独立的和网络化的环境

27、中创建并安全的运行程序的技术。1.Array:SQL 类型ARRAY,在 Java 编程语言中的映射关系。2.CallableStatement:用于执行 SQL 存储过程的接口。3.Connection:与特定数据库的连接(会话)。4.DatabaseMetaData 关于数据库的整体综合信息。5.Driver:每个驱动程序类必须实现的接口。6.ParameterMetaData 可用于获取关于 PreparedStatement 对象中参数的类型和属性信息的对象。12.3 JDBC的工作过程三、java.sql包的用法7.PreparedStatement 表示预编译的 SQL 语句的对象

28、。8.ResultSet 表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。9.ResultSetMetaData 可用于获取关于 ResultSet 对象中列的类型和属性信息的对象。10.Savepoint 保存点的表示形式,保存点是可以从 Connection.rollback 方法引用的当前事务中的点。11.SQLData 该接口用于 SQL 用户定义类型(UDT)到 Java 编程语言中类的自定义映射关系。12.SQLInput 一个输入流,它包含表示 SQL 结构化类型或 SQL 不同类型的实例的值组成的流。13.SQLOutput 用于将用户定义类型的属性写回数据库的输出

29、流。14.Statement 用于执行静态 SQL 语句并返回它所生成结果的对象。15.Struct 用于 SQL 结构化类型的 Java 编程语言中的标准映射关系。12.3 JDBC的工作过程三、java.sql包的用法2、类12.3 JDBC的工作过程三、java.sql包的用法3、异常12.3 JDBC的工作过程四、应用举例:向northwind数据库中的表categories插入2条记录1.import java.sql.*;2.import;3.public class insert4.public static void main(String args)5.String url=

30、jdbc:microsoft:sqlserver:/localhost:1433;DatabaseName=northwind;6.String query=select*from categories;7.String query1=insert categories values(10,Hanbao,Sweet);8.String query2=insert categories values(11,Naicha,Coffee taste);12.3 JDBC的工作过程9.try10.);11.Connection con=DriverManager.getConnection(url,s

31、a,sa);12.Statement stmt=con.createStatement();13.stmt.executeUpdate(query);14.stmt.executeUpdate(query1);15.stmt.executeUpdate(query2);16.stmt.close();con.close();17.18.catch(SQLException ex)19.ex)ex.printStackTrace();20.21.12.4 数据库综合应用o 首先用户在SQL Server 2000 中手工建立一个数据库bookstore,所有参数均取默认值,然后编写Java 程序

32、在此数据库中建立一个表books,并实现对books 表的管理,表包含的字段如表下所示:12.4 SQL Server2000数据库应用o 功能要求:能够实现建表、删除表、删除全部记录、删除指定记录、修改指定记录的内容、插入新记录和根据字段值插入记录等功能。o 程序实现:1.import java.sql.*;2.public class DBTableManager/主类,用于表的管理3.private static final String DRIVER_NAME=;4.private static final String URL=jdbc:microsoft:sqlserver:/lo

33、calhost:1433;User=sa;Password=sa;DatabaseName=bookstore;12.4 SQL Server2000数据库应用5.public void update(int id,String name,float price,String auth)/修改记录内容6.try/?表示占位符,运行时将会被指定参数替换);7.Connection conn=DriverManager.getConnection(jdbc:microsoft:sqlserver:/localhost:1433;user=sa;passWord=sa;DatabaseName=bo

34、okstore);8.String update=Update books set bookName=?,bookPrice=?,bookauthor=?where bookId=?;9.PreparedStatement pstm=conn.prepareStatement(update);10.pstm.setString(1,name);/第1 个参数,表示bookName11.pstm.setFloat(2,price);/第2 个参数,表示bookPrice12.pstm.setString(3,auth);/第3 个参数,表示author13.pstm.setInt(4,id);/

35、第4 个参数,表示bookID14.pstm.executeUpdate();/执行更新操作15.pstm.close();16.conn.close();17.catch(ClassNotFoundException e)18.e.printStackTrace();19.catch(SQLException e)20.e.printStackTrace();21.22.12.4 SQL Server2000数据库应用23.public void selectId(int id)/根据id 号查询输出指定记录24.try 25.);26.Connection conn=DriverManag

36、er.getConnection(jdbc:microsoft:sqlserver:/localhost:1433;user=sa;password=sa;DatabaseName=bookstore);27.String sql=select*from books where bookId=?;28.PreparedStatement pstm=conn.prepareStatement(sql);29.pstm.setInt(1,id);/替换第1 个占位符,表示bookID30.ResultSet sr=pstm.executeQuery();/建立结果集31.while(sr.next

37、()/逐一读出各记录的列,并存贮在变量中32.int i=sr.getInt(bookId);33.String name=sr.getString(bookName);34.int price=sr.getInt(bookPrice);35.String auth=sr.getString(bookauthor);36.System.out.printf(%8dt%8st%8dt%8srn,i,name,price,auth);37.38.catch(ClassNotFoundException e)39.e.printStackTrace();40.catch(SQLException e

38、)41.e.printStackTrace();42.43.12.4 SQL Server2000数据库应用44.public void select()/查询输出表记录45.try 46.);47.Connection conn=DriverManager.getConnection(jdbc:microsoft:sqlserver:/localhost:1433;user=sa;password=sa;DatabaseName=bookstore);48.String select=select*from books;49.PreparedStatement ptsm=conn.prepa

39、reStatement(select);50.ResultSet rs=ptsm.executeQuery();/记录器 51.while(rs.next()52.int id=rs.getInt(bookId);53.String name=rs.getString(bookName);54.int price=rs.getInt(bookPrice);55.String auth=rs.getString(author);56.System.out.printf(%8dt%8st%8dt%8srn,id,name,price,auth);57.58.catch(ClassNotFoundE

40、xception e)59.e.printStackTrace();60.catch(SQLException e)61.e.printStackTrace();62.63.12.4 SQL Server2000数据库应用public void newinsert(String name,float price,String auth)/根据指定值向表插入记录 自己补充完整 public void insert(String name,double price,String auth)/插入新记录 自己补充完整 public void create()/采用statement 建立books

41、表,列id 为主码且自动增长 自己补充完整public void delete(int id)/根据id 号删除指定的记录 自己补充完整public void deleteAll()/从表books 中删除全部记录 自己补充完整12.4 SQL Server2000数据库应用o public void drop(String books)/从数据库bookstore 中删除表bookso try o);o Connection conn=DriverManager.getConnection(jdbc:microsoft:sqlserver:/localhost:1433;User=sa;pa

42、ssWord=sa;DatabaseName=bookstore);o String drop=drop table+books;o PreparedStatement pstm=conn.prepareStatement(drop);o pstm.executeUpdate();o pstm.close();o conn.close();o catch(ClassNotFoundException e)o e.printStackTrace();o catch(SQLException e)o e.printStackTrace();o o 12.4 SQL Server2000数据库应用o

43、 public static void main(String args)/主方法o DBTableManager create=new DBTableManager();/主类实例化o create.newcreate();/用statement 建立表books,以下命令根据具体情况选择执行o/create.newcreate();/用preparedstatement 建books 表o/create.insert(Java,12.4,张小根);/插入一条新记录o/create.newinsert(java EE,29.8f,刘红华);/新增一条记录o/create.delete(1);/根据id 号修改记录内容o/create.update(3,java EE,52,张正军);/根据id 号修改一条记录 o/create.select();/查询表记录o/create.selectId(4);/根据id 号查询一条记录o/create.deleteAll();/删除所有记录o/create.drop(books);/删除表bookso o

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

当前位置:首页 > 教育专区 > 大学资料

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

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