《Java与数据库JDBC》PPT课件_第1页
《Java与数据库JDBC》PPT课件_第2页
《Java与数据库JDBC》PPT课件_第3页
《Java与数据库JDBC》PPT课件_第4页
《Java与数据库JDBC》PPT课件_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

1、第13章 Java与数据库JDBC,姓名 性别 出生日期 职务,王红 女 75/03/05 工程师,张强 男 70/06/15 讲师,李刚 男 70/07/09 工人,王芳 女 65/10/09 工程师,字段(列),记录 (行),表文件,示例: 表文件与二维表对应,1、创建新表 student,2、追加新记录命令格式: INSERT INTO 表名(字段名1,字段名2.) VALUES(表达式1,表达式2),功能: 在表尾追加一个新记录,并直接馈入数据。 说明:1.表不必是打开的,字段与表达式的类型必须相同。 2.如果字段名全部缺省,就必须按字段顺序填写 values子句的所有表达式。,例:为

2、刚建立学生信息表student(姓名,性别,年龄)填加数据,insert into student values(白雪公主,女,16) insert into student (年龄,姓名) values (23,白马王子),INSERT INTO 表名(字段名1,字段名2.) VALUES(表达式1,表达式2),3、用Select-SQL命令直接查询简化 Select-SQL命令格式:SELECT* / , . FROM 表名 WHERE AND ,例1:在学生表student中,查找所有学生的姓名,select 姓名 from student,例:在学生表student(姓名,性别,年龄)

3、中,查找所有学生的记录,select * from student,SELECT * / , . FROM 表名WHERE AND ,Where子句指定查询条件:列名、比较运算符、列名于常数 常用的比较运算符: =、=、 between and、and、or、not,例2:在学生表student中,查询所有年龄大于20的男同学的正确的SQL语句是,Select * from student where 年龄20 and 性别=男,SELECT * / , . FROM 表名WHERE AND ,例3:在学生表student中,查询年龄在20至23岁之间的学生姓名和年龄正确的SQL语句是,Sel

4、ect 姓名,年龄 from student where 年龄=20 and 年龄=23 Select 姓名,年龄 from student where 年龄 between 20 and 23,SELECT * / , . FROM 表名WHERE AND ,4、更新记录命令格式: Update 表名 set 字段名1=表达式1 ,字段名2=表达式2 .) where 联结条件,例: update student set 年龄=20 where 姓名=贾宝玉,5、删除记录命令格式: delete * from 表名 where 联结条件,例: delete from student wher

5、e 姓名=贾宝玉,JDBC,1996年夏,Sun公司推出了Java数据库连接(Java Database Connectivity,JDBC)工具包的第一个版本。 该工具包使得程序员可以使用结构化查询语言(SQL)连接到一个数据库,对数据库进行查询,或者对数据库进行更新。 JDBC使得Java不仅能够和远程数据通信,也能够在各种不同得数据源之间通信,从而扩大了Java这种跨平台编程语言的应用范围,提高了它的应用价值。 JDBC是Java程序连接和存取数据库的应用程序接口(API),它是Java核心API的一部分。,13.1.1 JDBC数据库应用模型,JDBC由两层组成,上面一层是JDBC A

6、PI,下面一层是JDBC驱动程序API 。,JDBC驱动程序,JDBC驱动程序按照连接方式的不同可以分为四种类型: Type 1:JDBC-ODBC Bridge Type 2:Native API Bridge Type 3:JDBC-Middleware Type 4:Pure JDBC Driver,JDBC的用途是什么?,简单地说,JDBC可做三件事: 与数据库建立连接; 发送SQL语句, 处理结果。 JDBC API在java.sql包中定义,其中包括JDBC API用到的所有类、接口和方法,利用JDBC开发数据库应用的一般步骤,(1)建立与数据库的连接 (2)执行SQL语句 (3)

7、处理结果集 (4)关闭数据库的连接,使用JDBC连接到数据库步骤,(1)建立与数据库的连接 A、加载JDBC驱动程序 在使用JDBC驱动程序之前,先加载并注册此驱动程序,若使用JDBC-ODBC桥,则为: Class.forName(“sun.jdbc.odbc.jdbcodbcDriver”); Class.forName(“oracle.jdbc.driver.OracleDriver”);,(1)建立与数据库的连接 B、连接到数据库 使用DriverManager的getConnection()来连接到指定的数据库,由于可能会同时使用不同的JDBC驱动程序,DriverManager会从

8、已注册的JDBC驱动程序中搜索合适的驱动程序并连接到数据库,若是使用JDBC-ODBC桥,则为: String url= “jdbc:oracle:student” Connection con = DriverManager.getConnection(url, “ ”, “”),使用JDBC连接到数据库步骤,数据库URL的格式为: jdbc: 子协议odbc表示对ODBC数据源的访问,其格式为: jdbc:odbc: 例如:String url = jdbc:odbc:people;,使用JDBC连接到数据库步骤,DriverManager类的getConnection方法用于建立与某个数

9、据源的连接。若与由URL指定的数据源建立连接成功,则返回一个Connection类的对象。以后对于这个数据源的操作都是基于这个对象。getConnection方法是DriverManager类中的静态方法。 其中,getConnection()的第1个参数是数据库URL,第2个为用户名字,第3个为密码。 例如:Connection con = DriverManager.getConnection(url, “sa”, “”),使用JDBC连接到数据库步骤,(2)将SQL语句送至数据库,执行SQL语句 A、创建Statement对象 建立了到特定数据库的连接之后,就可用该连接发送SQL语句。S

10、tatement对象用Connection的方法createStatement创建,如下列代码段中所示:Connectioncon=DriverManager.getConnection(url,sunny,);Statementstmt=con.createStatement();,使用JDBC连接到数据库步骤,(2)将SQL语句送至数据库,执行SQL语句 B、发送Statement对象SQL语句 为了执行Statement对象,被发送到数据库的SQL语句将被作为参数提供给Statement的方法:ResultSetrs=stmt.executeQuery(“SELECT姓名,性别,年龄FR

11、OMstudent);,使用JDBC连接到数据库步骤,(2)将SQL语句送至数据库,执行SQL语句 C、使用Statement对象执行语句 Statement接口提供了三种执行SQL语句的方法:executeQuery、executeUpdate和execute。 使用哪一个方法由SQL语句所产生的内容决定。 方法executeQuery用于产生单个结果集的语句, 例如SELECT语句。,使用JDBC连接到数据库步骤,(2)将SQL语句送至数据库,执行SQL语句 C、使用Statement对象执行语句 方法executeUpdate用于执行INSERT、UPDATE或DELETE语句以及SQL

12、DDL(数据定义语言)语句 方法execute用于执行返回多个结果集、多个更新计数或二者组合的语句。,JDBC应用,(2)将SQL语句送至数据库,执行SQL语句 C、使用Statement对象执行语句 执行语句的所有方法都将关闭所调用的Statement对象的当前打开结果集(如果存在)。 这意味着在重新执行Statement对象之前,需要完成对当前ResultSet对象的处理。,使用JDBC连接到数据库步骤,(2)将SQL语句送至数据库,执行SQL语句 D、使用Statement对象执行语句语句完成 对于返回一个结果集的executeQuery方法,在检索完ResultSet对象的所有行时该语

13、句完成。 对于方法executeUpdate,当它执行时语句即完成。 但在少数调用方法execute的情况中,在检索所有结果集或它生成的更新计数之后语句才完成。,使用JDBC连接到数据库步骤,(3)处理结果集读入数据库返回的结果 结果集一般是一个表,其中有查询所返回的列标题及相应的值。 例如,如果查询为SELECT姓名,性别,年龄FROMstudent,则结果集将具有如下形式:,使用JDBC连接到数据库步骤,(3)处理结果集读入数据库返回的结果 ResultSet: ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法(这些get方法可以访问当前行中的不同列)提供了对这

14、些行中数据的访问。 ResultSet.next方法用于移动到ResultSet中的下一行,使下一行成为当前行。,使用JDBC连接到数据库步骤,(3)处理结果集行和光标 ResultSet维护指向其当前数据行的光标。每调用一次next方法,光标向下移动一行。 最初它位于第一行之前,因此第一次调用next将把光标置于第一行上,使它成为当前行。 随着每次调用next导致光标向下移动一行,按照从上至下的次序获取ResultSet行。 在ResultSet对象或其父辈Statement对象关闭之前,光标一直保持有效,使用JDBC连接到数据库步骤,(3)处理结果集列 方法getXXX提供了获取当前行中某

15、列值的途径。在每一行内,可按任何次序获取列值。但为了保证可移植性,应该从左至右获取列值,并且一次性地读取列值。列名或列号可用于标识要从中获取数据的列。例如,如果ResultSet对象rs的第二列名为“性别”,并将值存储为字符串,则下列任一代码将获取存储在该列中的值:Strings=rs.getString(“性别);Strings=rs.getString(2);,使用JDBC连接到数据库步骤,(3)处理结果集列 注意列是从左至右编号的,并且从列1开始。同时,用作getXXX方法的输入的列名不区分大小写。提供使用列名这个选项的目的是为了让在查询中指定列名的用户可使用相同的名字作为getXXX方

16、法的参数。,使用JDBC连接到数据库步骤,(3)处理结果集读入数据库返回的结果 由于是进行查询的工作,因此会返回一个ResultSet对象,可使用while来读出所返回的数据. 例如: ResultSetrs=stmt.executeQuery(“SELECT姓名,性别,年龄FROMxs); While (rs.next() ,使用JDBC连接到数据库步骤,(4)关闭数据库的连接关闭Statement对象: Statement对象将由Java垃圾收集程序自动关闭。 而作为一种好的编程风格,应在不需要Statement对象时显式地关闭它们。 这将立即释放DBMS资源,有助于避免潜在的内存问题,使

17、用JDBC连接到数据库步骤,(4)关闭数据库的连接 关闭 结果集; 关闭 Statement对象; 关闭 连接;,使用JDBC连接到数据库步骤,下面的代码段是执行SQL语句的示例。 java.sql.Statementstmt=conn.createStatement();ResultSetr=stmt.executeQuery(“ SELECT姓名,性别,年龄FROMstudent ”);int i=0; while(r.next()i=i+1; /打印当前行的值。Stringname=r.getString(姓名);Stringsex=r.getString(性别);floatage=r.

18、getInt(年龄);System.out.println(ROW=+i+ name + sex + age);,使用JDBC连接到数据库步骤,实例:JDBCTest.java,import java.sql.*; public class JDBCTest public static void main(String args) String url = jdbc:odbc:mydatabase; String query = SELECT * FROM student; try Class.forName (sun.jdbc.odbc.JdbcOdbcDriver); catch(java

19、.lang.ClassNotFoundException e) System.err.print(ClassNotFoundException: ); System.err.println(e.getMessage(); ,加载JDBC-ODBC bridge 驱动程序;使用Class.forName 方法显式加载驱动程序完成:,建立操作数据库的SQL语句;,try Connection con = DriverManager.getConnection (url); Statement stmt = con.createStatement (); ResultSet r = stmt.exe

20、cuteQuery (query); while(r.next() String r1=r.getString(姓名); String r3=r.getString(性别); int r2=r.getInt(年龄); System.out.println(r1+ +r2+ +r3); r.close();stmt.close();con.close(); catch (SQLException ex) System.out.println (n* SQLException caught *n); ,实例:JDBCTest.java,String url = jdbc:odbc:mydataba

21、se;,创建statement对象,发送SQL语句,关闭,通过JDBC访问数据库的基本流程,基本流程 1建立ODBC数据源(可选) 2装入JDBC驱动程序 3建立连接 4执行SQL语句 5检索结果 6关闭连接,建立ODBC数据源(可选),当使用JDBC-ODBC Bridge来建立连接时,必须先建立ODBC数据源。 ODBC数据源的配置步骤: 打开Windows的“控制面板”,在“管理工具”中找到“数据源(ODBC)”,建立ODBC数据源(可选),在“用户DNS”选项卡的“用户数据源”列表中,单击“添加”按钮,弹出“创建新数据源”对话框,建立ODBC数据源(可选),选择创建“Microsoft

22、 Access Driver”类型的数据源,然后单击“完成”按钮,弹出“ODBC Microsoft Access安装”对话框,建立ODBC数据源(可选),在此对话框中,输入数据源名称,并单击“创建”按钮,弹出“新数据库”对话框。如果事先已经建立了数据库,可以单击“选择”按钮,并指明数据库的存放路径。,建立ODBC数据源(可选),在“新建数据库”对话框中,输入需要新建的数据库名称,选择数据库的保存路径,然后单击“确定”按钮,返回“ODBC Microsoft Access安装”对话框。 在“ODBC Microsoft Access安装”对话框中单击“确定”按钮,返回“ODBC数据源管理器”对

23、话框,新添加的用户数据源将出现在此对话框中。此时,单击“确定”按钮,新用户数据源创建完成。数据源创建完成之后,便可以对这个数据源进行数据表的创建和修改,记录的添加、修改和删除等数据库操作。,添加ODBC数据源,import java.sql.*; public class JDBCInsert public static void main(String args) String url = jdbc:odbc:mydatabase; try Class.forName (sun.jdbc.odbc.JdbcOdbcDriver); catch(java.lang.ClassNotFoundE

24、xception e) System.err.print(ClassNotFoundException: ); System.err.println(e.getMessage(); try stmt.executeQuery (insert into student values(美眉, 女, 18) ); stmt.close();con.close(); catch (SQLException ex) System.out.println (n* SQLException caught *n); ,实例:JDBCInsert.java,插入记录,无返回结果 并注意单引号和双引号,思考此程序

25、哪里有问题!,更新数据,import java.sql.*; public class JDBCUpdate public static void main(String args) String url = jdbc:odbc:student; try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); Connection con = DriverManager.getConnection(url); Statement stmt = con.createStatement(); stmt.executeUpdate(update student se

26、t 年龄=80 where 姓名=美眉); stmt.close(); con.close(); catch (Exception e) e.printStackTrace(); ,删除数据,import java.sql.*; public class JDBCDelete public static void main (String args ) try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); Connection con = DriverManager.getConnection(jdbc:odbc:mydatabase); Statement stmt = con.createStatement ( ); stmt.executeU

温馨提示

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

评论

0/150

提交评论