实验7-通过JDBC访问数据库_第1页
实验7-通过JDBC访问数据库_第2页
实验7-通过JDBC访问数据库_第3页
实验7-通过JDBC访问数据库_第4页
实验7-通过JDBC访问数据库_第5页
已阅读5页,还剩1页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE1PAGE6实验7通过JDBC访问数据库实验目的1.通过阅读本课件中的知识点和例题,结合正在学习的数据库知识,了解数据库存储的特点、数据库访问的概念和方法、JDBC的概念和术语,以及如何通过以JDBC为媒介对数据库的访问,实现数据的查询和记录的更新。2.参考本课件给出的两个例题和教材上的例8.2,编写Java程序,实现对SQLServer数据库访问;通过修改Students的数据源从文件到数据库,练习如何在应用程序中通过访问数据库来获得所需要的数据。知识点和例题1.数据库访问概述⑴数据库存储的特点相对于用文件存储数据和实现I/O,采用数据库技术存储并与应用程序交换数据具有如下特点:①相关的但不同类型的数据被集成化;②数据与程序具有相对的独立性;③可实现多个程序和用户对数据的共享;④数据的冗余度小;⑤避免了并发访问中数据的不一致性;⑥通过设置权限可对数据实施安全性保护;⑦有利于保证数据的完整性;⑧可发现存储故障并恢复到正常状态。⑵数据库访问的概念数据库的创建和维护、数据的访问和更新,既可以在数据库管理系统(DBMS)下进行,也可以在应用程序中实现,后者更加具有现实意义。所谓数据库访问,就是应用程序以某种方式与数据库交互,使用和更新数据库中的数据。实现访问的必要条件是操作系统、数据库管理系统和程序设计语言中有着对访问的支持,这便是数据库接口或数据库驱动程序,在Java中,这种接口称为JDBC,它是由java.sql包中的一组类和接口组成的。⑶数据库操作类型和操作方式数据库访问应具有与DBMS对等的一系列操作,基本操作为数据的检索、修改、插入和删除;辅助操作包括数据库定义、数据转储等。本章仅介绍前一类操作。在多数程序设计语言中,数据库访问操作可通过两种方式实现,一种是通过类库中的类所提供的SQL语句执行机制执行SQL,二是通过类库中的类所提供的一系列方法。对某些操作而言,二者可以相互替换,对另一些操作而言,则只能使用其中的一种。而前者往往更具有普遍意义。2.Java数据库访问⑴ODBC和JDBCJDBC(JavaDatabaseConnectivity)是SUN为Java开发的数据库连接解决方案,它通过JDBC-ODBC桥接器,使用微软的ODBC(OpenDatabaseConnectivity)来实现与不同数据库的连接,但在编程方面要较ODBC更加方便。JDBC内嵌的SQL为程序员提供了一个纯Java的数据库编程接口(由一组类和接口构成),通过它们,JDBC实现了三个最基本的数据库访问功能:建立与数据库的连接、执行SQL语句和处理执行结果。⑵JDBC的构成java.sql中类和接口的名称和基本功能是:名称类型基本功能java.sql.DriverManager类加载JDBC、建立与新的数据库的连接java.sql.Connection接口处理与特定数据库的连接java.sql.Statement接口在指定的连接中处理SQL语句java.sql.PreparedStatement子接口处理预编译的SQL语句java.sql.CallableStatement子接口处理数据库存储过程java.sql.ResultSet接口处理数据库操作结果集⑶JDBCdriver上述类和接口都是抽象的,在不同环境下与数据库的连接,还要靠JDBCDriver来实现:JDBCDriver名称连接机制和环境要求JDBC-ODBCBridge通过ODBC与数据库实现连接,要求每台客户机都装有ODBC驱动程序。Native-APIpartly-JavaDriver将JDBC指令转化为DBMS操作形式,要求客户机装有相应的DBMS。JDBC-NetAll-JavaDriver将JDBC指令转化为独立于DBMS的网络协议,再由服务器转化为特定的DBMS协议。可连接到不同的数据库.Native-protocolAll-JavaDriver将JDBC指令转化为网络协议,并由DBMS直接使用。适用于局域网。⑷通过JDBC访问数据库的步骤①创建指定数据源的URL要创建与数据库的连接,首先要创建针对指定数据源的URL(UniformResoureLocator),创建URL的一般形式如下:Stringurl=jdbc:odbc:数据源名称;假设在ODBC管理器中设置的数据源名称为Student,则创建语句为Stringurl="jdbc:odbc:Student";数据源名称可以在Windows的“控制面板-管理工具-数据源(ODBC)”中针对特定的数据库指定,操作为:添加-MicrosoftAccessDriver-完成,输入数据源名,选择(数据库)-确定。②加载数据库驱动程序为了连接到具体的数据库,JDBC必须首先加载与该数据库相应的驱动程序,代码形式如下:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");其中Class是包java.lang中的一个类:它通过调用静态方法forName,加载sun.jdbc.odbc包中的JdbcOdbcDriver类来建立JDBC-ODBC桥接器。③创建数据库连接调用DriverManager类中的方法getConnection建立与具体数据库的连接,并将该连接的引用赋给Connection类的对象,代码形式如下:Connectioncon=DriverManager.getConnection("URL","用户名","口令");例如对于上述的URL和Access数据库,可以是:Connectioncon=DriverManager.getConnection(url,"user","password");④创建语句对象声明一个Statement对象,通过Connection的对象调用方法createStatement,并将返回值赋给这个Statement对象,代码形式可以是以下两种:Statementstate=con.createStatement();Statementstate=con.createStatement(int

resultSetType,int

resultSetConcurrency);其中:变量取值意义resultSetTypeResultSet.TYPE_FORWARD_ONLY(默认)游标只能向下滚动ResultSet.TYPE_SCROLL_INSENSITIVE上下滚动,不同步更新ResultSet.TYPE_SCROLL_SENSITIVE上下滚动,同步更新resultSetConcurrencyResultSet.CONCUR_READ_ONLY(默认)不允许更新数据库ResultSet.CONCUR_UPDATABLE允许更新数据库⑤执行SQL查询有了Statement对象后,就可以通过它调用Statement的方法来对数据库进行各种操作,操作命令由SQL语句给出,查询结果保存在ResultSet类(查询结果数据集)的对象中返回,假设一个SQL语句定义在字符串sql中:Stringsql="SELECT*FROM学生";则ResultSetresult=state.executeUpdate(sql);将从学生表中查询出所有数据并保存在对象result中⑥处理查询结果利用resultSet类提供的一系列方法,可以对查询结果数据集进行各种操作,例如:方法原型功能说明StringgetString(int

columnIndex)throwsSQLException获取字符串intgetInt(int

columnIndex)throwsSQLException获取整型数doublegetDouble(int

columnIndex)throwsSQLException获取双精度数intgetRow()throwsSQLException获取当前行编号booleanlast()throwsSQLException移动游标到末行voidbeforeFirst()throwsSQLException移动游标到首行之前booleannext()throwsSQLException移动游标到下一行voidclose()throwsSQLException关闭结果集⑦更新、添加和删除记录使用UPDATE、INSERTINTO、DELETEFROM等SQL语句,也可对数据库的某个表进行记录的更新、插入和删除操作。此时代替声明ResultSet对象并通过Statement对象调用executeQuery方法执行SQL语句并处理查询结果,是通过Statement对象调用executeUpdate方法来更新数据库,例如:sql="UPDATE学生SET性别='男'WHERE学ID=1";state.executeUpdate(sql);3.数据库访问实例⑴Student数据库我们尝试运用上面的步骤来访问一个Access数据库Student,其中有4个表,E-R图为:⑵设计查询该数据库中存放着061431和061432两个班学生的基本资料和“C++程序设计”、“程序设计基础”两门课的成绩数据。现要从该数据库中查询出两个班所有同学“C++程序设计”(课程ID=2)的实验报告和期末考试成绩,设计SQL语句如下:SELECT学生.学号,学生.姓名,成绩.实验报告,成绩.期末考试,成绩.总评成绩FROM学生INNERJOIN(课程INNERJOIN成绩ON课程.课程ID=成绩.课程ID)ON学生.学生ID=成绩.学生IDWHERE(((课程.课程ID)=2));⑶在Java中执行查询importjava.sql.*;publicclassUseJdbcQuery{ publicstaticvoidmain(String[]args){ Stringurl="jdbc:odbc:Student"; Stringsql="SELECT学生.学号,学生.姓名,成绩.实验报告,成绩.期末考试FROM学生INNERJOIN(课程INNERJOIN成绩ON课程.课程ID=成绩.课程ID)ON学生.学生ID=成绩.学生IDWHERE(((课程.课程ID)=2));"; try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connectioncon=DriverManager.getConnection(url,"user","password"); Statementstate=con.createStatement(); ResultSetresult=state.executeQuery(sql); while(result.next()){ StringID=result.getString("学号"); Stringname=result.getString("姓名"); doubleexperiment=result.getDouble("实验报告"); doubleexam=result.getDouble("期末考试"); System.out.println(result.getRow()+"\t"+ID+"\t"+ name+"\t"+experiment+"\t"+exam); } result.close(); state.close(); con.close(); } catch(java.lang.Exceptionex){ ex.printStackTrace(); } }}⑷在Java中更新、添加和删除记录importjava.sql.*;publicclassUseJdbcUpdate{ publicstaticvoidmain(String[]args){ Stringurl,sql; url="jdbc:odbc:Student"; try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connectioncon=DriverManager.getConnection(url,"user","password"); Statementstate=con.createStatement(); sql="UPDATE成绩SET期末考试=100WHERE学生ID=1AND课程ID=1"; state.executeUpdate(sql); sql="INSERTINTO学生VALUES(88,2,'06143245','张三','男')"; state.executeUpdate(sql); sql="INSERTINTO学生VALUES(89,2,'06143146','李四','女')"; state.executeUpdate(sql); sql="DELETEFROM学生WHERE学号='06143146'"; state.executeUpdate(sql); state.close(); co

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论