版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第13章 Java与数据库JDBC 姓名 性别 出生日期 职务王红 女 75/03/05 工程师张强 男 70/06/15 讲师李刚 男 70/07/09 工人王芳 女 65/10/09 工程师字段(列)记录(行)表文件示例: 表文件与二维表对应1、创建新表 student姓名性别年龄贾宝玉男21林黛玉女19猪八戒男22白骨精女202、追加新记录命令格式: INSERT INTO 表名(字段名1,字段名2.) VALUES(表达式1,表达式2)功能: 在表尾追加一个新记录,并直接馈入数据。说明:1.表不必是打开的,字段与表达式的类型必须相同。 2.如果字段名全部缺省,就必须按字段顺序填写 va
2、lues子句的所有表达式。 例:为刚建立学生信息表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 例:在学生表stude
3、nt(姓名,性别,年龄)中,查找所有学生的记录 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岁之间的学生姓名和年龄正
4、确的SQL语句是Select 姓名,年龄 from student where 年龄=20 and 年龄=23Select 姓名,年龄 from student where 年龄 between 20 and 23SELECT * / , . FROM 表名WHERE AND 4、更新记录命令格式: Update 表名 set 字段名1=表达式1 ,字段名2=表达式2 .) where 联结条件例: update student set 年龄=20 where 姓名=贾宝玉5、删除记录命令格式: delete * from 表名 where 联结条件例: delete from student
5、 where 姓名=贾宝玉JDBC2019年夏,Sun公司推出了Java数据库连接(Java Database Connectivity,JDBC)工具包的第一个版本。 该工具包使得程序员可以使用结构化查询语言(SQL)连接到一个数据库,对数据库进行查询,或者对数据库进行更新。 JDBC使得Java不仅能够和远程数据通信,也能够在各种不同得数据源之间通信,从而扩大了Java这种跨平台编程语言的应用范围,提高了它的应用价值。 JDBC是Java程序连接和存取数据库的应用程序接口(API),它是Java核心API的一部分。 13.1.1 JDBC数据库应用模型JDBC由两层组成,上面一层是JDBC
6、 API,下面一层是JDBC驱动程序API 。JDBC驱动程序 JDBC驱动程序按照连接方式的不同可以分为四种类型: Type 1:JDBC-ODBC BridgeType 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)处理结果集(4
7、)关闭数据库的连接使用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会从已注册的JDBC驱动程序中搜索合适
8、的驱动程序并连接到数据库,若是使用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方法用于建立与某个数据源的连接。若与由URL指定的数据源建立连接成功
9、,则返回一个Connection类的对象。以后对于这个数据源的操作都是基于这个对象。getConnection方法是DriverManager类中的静态方法。 其中,getConnection()的第1个参数是数据库URL,第2个为用户名字,第3个为密码。例如:Connection con = DriverManager.getConnection(url, “sa”, “”)使用JDBC连接到数据库步骤(2)将SQL语句送至数据库,执行SQL语句A、创建Statement对象 建立了到特定数据库的连接之后,就可用该连接发送SQL语句。Statement对象用Connection的方法crea
10、teStatement创建,如下列代码段中所示:Connectioncon=DriverManager.getConnection(url,sunny,);Statementstmt=con.createStatement();使用JDBC连接到数据库步骤(2)将SQL语句送至数据库,执行SQL语句B、发送Statement对象SQL语句 为了执行Statement对象,被发送到数据库的SQL语句将被作为参数提供给Statement的方法:ResultSetrs=stmt.executeQuery(“SELECT姓名,性别,年龄FROMstudent);使用JDBC连接到数据库步骤(2)将SQ
11、L语句送至数据库,执行SQL语句C、使用Statement对象执行语句 Statement接口提供了三种执行SQL语句的方法:executeQuery、executeUpdate和execute。使用哪一个方法由SQL语句所产生的内容决定。方法executeQuery用于产生单个结果集的语句,例如SELECT语句。使用JDBC连接到数据库步骤(2)将SQL语句送至数据库,执行SQL语句C、使用Statement对象执行语句方法executeUpdate用于执行INSERT、UPDATE或DELETE语句以及SQLDDL(数据定义语言)语句方法execute用于执行返回多个结果集、多个更新计数或
12、二者组合的语句。 JDBC应用 (2)将SQL语句送至数据库,执行SQL语句C、使用Statement对象执行语句执行语句的所有方法都将关闭所调用的Statement对象的当前打开结果集(如果存在)。这意味着在重新执行Statement对象之前,需要完成对当前ResultSet对象的处理。使用JDBC连接到数据库步骤(2)将SQL语句送至数据库,执行SQL语句D、使用Statement对象执行语句语句完成对于返回一个结果集的executeQuery方法,在检索完ResultSet对象的所有行时该语句完成。对于方法executeUpdate,当它执行时语句即完成。但在少数调用方法execute的
13、情况中,在检索所有结果集或它生成的更新计数之后语句才完成。使用JDBC连接到数据库步骤(3)处理结果集读入数据库返回的结果结果集一般是一个表,其中有查询所返回的列标题及相应的值。例如,如果查询为SELECT姓名,性别,年龄FROMstudent,则结果集将具有如下形式: 使用JDBC连接到数据库步骤姓名性别年龄贾宝玉男21林黛玉女19猪八戒男22白骨精女20(3)处理结果集读入数据库返回的结果ResultSet:ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法(这些get方法可以访问当前行中的不同列)提供了对这些行中数据的访问。ResultSet.next方法用于移
14、动到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方法的参数。使用JDBC连接到数据库步骤(3)处理结果集读入数据库返回的结
16、果 由于是进行查询的工作,因此会返回一个ResultSet对象,可使用while来读出所返回的数据.例如:ResultSetrs=stmt.executeQuery(“SELECT姓名,性别,年龄FROMxs);While (rs.next() 使用JDBC连接到数据库步骤(4)关闭数据库的连接关闭Statement对象:Statement对象将由Java垃圾收集程序自动关闭。而作为一种好的编程风格,应在不需要Statement对象时显式地关闭它们。这将立即释放DBMS资源,有助于避免潜在的内存问题 使用JDBC连接到数据库步骤(4)关闭数据库的连接关闭 结果集;关闭 Statement对象;
17、关闭 连接;使用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.getInt(年龄);System.out.println(ROW=+i+ name + sex + age
18、);使用JDBC连接到数据库步骤实例:JDBCTest.javaimport java.sql.*;public class JDBCTestpublic static void main(String args)String url = jdbc:odbc:mydatabase; String query = SELECT * FROM student; try Class.forName (sun.jdbc.odbc.JdbcOdbcDriver); catch(java.lang.ClassNotFoundException e) System.err.print(ClassNotFou
19、ndException: ); System.err.println(e.getMessage(); 加载JDBC-ODBC bridge 驱动程序;使用Class.forName 方法显式加载驱动程序完成:建立操作数据库的SQL语句;tryConnection con = DriverManager.getConnection (url); Statement stmt = con.createStatement ();ResultSet r = stmt.executeQuery (query);while(r.next() String r1=r.getString(姓名); Strin
20、g 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.javaString url = jdbc:odbc:mydatabase;创建statement对象发送SQL语句关闭通过JDBC访问数据库的基本流程 基本流程1建立ODBC数据源(可选) 2装入JDBC
21、驱动程序 3建立连接4执行SQL语句5检索结果6关闭连接建立ODBC数据源(可选) 当使用JDBC-ODBC Bridge来建立连接时,必须先建立ODBC数据源。ODBC数据源的配置步骤: 打开Windows的“控制面板”,在“管理工具”中找到“数据源(ODBC)”建立ODBC数据源(可选)在“用户DNS”选项卡的“用户数据源”列表中,单击“添加”按钮,弹出“创建新数据源”对话框 建立ODBC数据源(可选)选择创建“Microsoft Access Driver”类型的数据源,然后单击“完成”按钮,弹出“ODBC Microsoft Access安装”对话框 建立ODBC数据源(可选)在此对话
22、框中,输入数据源名称,并单击“创建”按钮,弹出“新数据库”对话框。如果事先已经建立了数据库,可以单击“选择”按钮,并指明数据库的存放路径。 建立ODBC数据源(可选)在“新建数据库”对话框中,输入需要新建的数据库名称,选择数据库的保存路径,然后单击“确定”按钮,返回“ODBC Microsoft Access安装”对话框。在“ODBC Microsoft Access安装”对话框中单击“确定”按钮,返回“ODBC数据源管理器”对话框,新添加的用户数据源将出现在此对话框中。此时,单击“确定”按钮,新用户数据源创建完成。数据源创建完成之后,便可以对这个数据源进行数据表的创建和修改,记录的添加、修改
23、和删除等数据库操作。添加ODBC数据源import java.sql.*;public class JDBCInsertpublic static void main(String args) String url = jdbc:odbc:mydatabase; try Class.forName (sun.jdbc.odbc.JdbcOdbcDriver); catch(java.lang.ClassNotFoundException e) System.err.print(ClassNotFoundException: );System.err.println(e.getMessage()
24、; try stmt.executeQuery (insert into student values(美眉, 女, 18) ); stmt.close();con.close();catch (SQLException ex) System.out.println (n* SQLException caught *n); 实例:JDBCInsert.java插入记录,无返回结果并注意单引号和双引号思考此程序哪里有问题!更新数据import java.sql.*;public class JDBCUpdate public static void main(String args) Strin
25、g url = jdbc:odbc:student;try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);Connection con = DriverManager.getConnection(url);Statement stmt = con.createStatement();stmt.executeUpdate(update student set 年龄=80 where 姓名=美眉);stmt.close();con.close(); catch (Exception e) e.printStackTrace();删除数据import jav
26、a.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.executeUpdate( delete * from student where name=美眉 ); con.close(
27、); catch (Exception e) e.printStackTrace( ); 这个程序的问题又出现在哪里?!JDBC API用到的类、接口和方法(1)驱动程序管理java.sql.Driver 驱动程序接口,是每个数据库驱动器都要实现的接口。负责确认URL与驱动程序的匹配、建立到数据库的连接等,其中的方法需要有相应的驱动程序实现。java.sql.DriverManager 提供管理一组JDBC驱动程序所需的基本服务,包括加载所有数据库驱动器,以及根据用户的连接请求驱动相应的数据库驱动器建立连接。(2)数据库连接 java.sql.Connection 表示到特定数据库的连接,通过连接执行SQL语句并获取SQL语句执行结果,其中的方法需要有相应的驱动程序实现。 (3)SQL语句 java.sql.Statement 为SQL语句提供一个容器,包括执行SQL语句、取得查询结果等方法。(4)数据 java.sql.ResultSet 表示数据集的一个数据表,一般是在执行SQL查询语句时产生的,提供对结果集进行处理的手段。 13.2.2 常用的JDBC AP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023双方汽车租赁协议书七篇
- 色素性痒疹病因介绍
- 臂丛神经损伤病因介绍
- 个体防护用品基础知识
- 《模具设计与制造李集仁》课件-第6章
- (2024)清洁汽油项目可行性研究报告写作范本(一)
- 2024-2025年辽宁省锦州市第十二中学第三次月考英语问卷-A4
- 天津市五区县重点校联考2022-2023学年高二下学期期中考试语文试卷
- 电气施工对土建工程的 要求与配合- 电气施工技术98课件讲解
- 2023年监护病房项目筹资方案
- 中医内科肿瘤中医诊疗规范诊疗指南2023版
- 自行车制造业行业深度洞察报告
- 液化气站双控风险告知卡
- 电力电子仿真实验
- 电商新品运营规划方案模板
- 圣诞老人的故事ppt课件(图文)
- 绝缘尖嘴钳安全技术操作规程
- 《星巴克案例分析》课件
- 感动中国十大人物顾方舟事迹ppt(思修课堂展示or爱国主题演讲)
- 二年级数学期末教学质量分析
- 2023动力锂离子电池运输安全技术规范
评论
0/150
提交评论