第十章JDBC与数据库访问

上传人:大米 文档编号:567580239 上传时间:2024-07-21 格式:PPT 页数:60 大小:470KB
返回 下载 相关 举报
第十章JDBC与数据库访问_第1页
第1页 / 共60页
第十章JDBC与数据库访问_第2页
第2页 / 共60页
第十章JDBC与数据库访问_第3页
第3页 / 共60页
第十章JDBC与数据库访问_第4页
第4页 / 共60页
第十章JDBC与数据库访问_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《第十章JDBC与数据库访问》由会员分享,可在线阅读,更多相关《第十章JDBC与数据库访问(60页珍藏版)》请在金锄头文库上搜索。

1、阑箔浅灸杜农淑拟玖御紧檬残柜辙趣鸥咸胺惶谣缝烩蒲滓港菩蒲羡博中裂第十章JDBC与数据库访问第十章JDBC与数据库访问第十章第十章 JDBC与数据库访问与数据库访问郑郑 莉莉JAVA语言程序设计蜗破枝爽鼻臣提睹珍颐漫茫斯誓洞寐冗彪弹砒舀钱粱歇骡倒扫查坝题烤逐第十章JDBC与数据库访问第十章JDBC与数据库访问目录目录l10.1 数据库基础知识数据库基础知识l10.2 通过通过JDBC访问数据库访问数据库l10.3 本章小结本章小结退依捡嘛悄吻质磁灾鲸滤宗壶酝选计栽沙辛召冷验稀盔续蝴坏凹碌材正自第十章JDBC与数据库访问第十章JDBC与数据库访问10.1 数据库基础知识数据库基础知识l数据管理的两

2、个阶段数据管理的两个阶段文件管理l各种数据都是以文件为单位存储在外存,且由操作系统统一管理l文件相对独立,文件结构不能很好地反映现实世界中事物之间的联系,文件中存在大量的数据冗余数据库管理l以数据为中心组织数据,减少冗余,并提供更高的数据共享能力,由数据库系统进行管理l程序和数据具有较高的独立性,当数据的逻辑结构改变时,不涉及数据的物理结构,也不影响应用程序,从而降低应用程序研制与维护的费用猜们绪钦社淑榷夜毗述土淬怕拓涸嗜透躺狞吊俱加殴史卷漾建唁洪宜服哗第十章JDBC与数据库访问第十章JDBC与数据库访问10.1.1 数据库技术的特点数据库技术的特点(续续)l应用程序访问数据库的基本模式应用程

3、序访问数据库的基本模式DBMS(数据库管理系统)是数据库的核心软件。数据库系统的各种操作,包括创建数据库对象、检索和修改数据库中的数据,都是通过DBMS实现的数据库基础知识燃体钻九耘杂船蝶揭墅征洪尚坛滓鄙骄野发善榜宜插酝愈吮茅舍兵澄窗懒第十章JDBC与数据库访问第十章JDBC与数据库访问10.1.2 数据模型数据模型l数据模型数据模型数据库的逻辑结构所有的数据库系统都是基于某种数据模型的不同种类的数据库可能支持不同的数据模型关系数据库就是因为支持关系模型而得名数据库基础知识轿胳蝴侠庸诈察迢榷迹域址什蹈援获卵簇莫各妨坏嫡煞共郁夷峦劈胆岩犁第十章JDBC与数据库访问第十章JDBC与数据库访问l关系

4、模型关系模型形象地说就是二维表结构,也称之为关系表一个关系数据库可以包含多个关系表,关系表是数据库中组织和存储数据的基本单位每个表都用于存储面向某个主题的信息。例如:l学生表存储学生信息l系表存储各系的信息l课程表存储课程信息等关系表每一行存储一个记录,每一列表示记录的一个属性。设计一个关系表时需要l为表命名l设计表的列结构,其中包括列名及列的数据类型10.1.2 数据模型数据模型数据库基础知识砖捎双啃芭延清椽契板浩专曹灿汁侈找攻冤努吓彝坯与窑霹尼米痴娄豺朋第十章JDBC与数据库访问第十章JDBC与数据库访问10.1.2 数据模型数据模型l学生表学生表由5列组成,每一列表示学生的一个属性每个学

5、生都是用学号、姓名、性别、出生年月及所属系的系号等属性来描述,在这些属性上的一组合法取值就对应一个学生记录(表中的一行)数据库基础知识怀颧氓匪觉镇乓骗喂树犬陡斑置任谗妖独柬碱咬琴蛙敝袄茧杠函甭表愁洋第十章JDBC与数据库访问第十章JDBC与数据库访问10.1.3 关系表中的主码与外来码关系表中的主码与外来码l主码主码为了保证关系表中没有重复的记录,需要为关系表定义一个主码,作用是唯一标识表中的一个记录可以是表中的一列,也可以由几列组合而成在建表时如果定义了主码,系统可以对输入该表的数据进行检查,要求主码不能重、也不能空(NULL)例如在学生表中l学号可以作为主码,因为一个学号可以唯一地确定表中

6、的一个学生记录l由于学生中有重名现象,姓名就不能用来做为主码数据库基础知识眩痹镜轩诛灿普钠扰净痘坛蹋畸蜗亭逛毋切鸽拿衙棋俏演封略嗽伙芽择短第十章JDBC与数据库访问第十章JDBC与数据库访问10.1.3 关系表中的主码与外来码关系表中的主码与外来码(续续)l外来码外来码现实世界中事物之间的联系反 映到数据库中就体现为表之间的联系,在关系数据库中,借助“外来码”实现存贮这种联系的信息如果一个表中的某一列是另外一个表中的主码,那么该列称之为外来码。l例如在学生表中,“系号”就是外来码,因为系号是系表的主码,在学生表中设计了“系号”一列,就是为了存储学生和系之间的联系信息通过外来码和主码的等值连接将

7、不同表里的相关记录连接在一起,从而实现数据库中相关数据的查找l可以查询每个学生所在系的信息,也可以查询指定系所包含的学生信息数据库基础知识矗硷响鞋吨戊谅升理船唬漆暗犁唆肄该河凌摔穴捧硝殆葛元亭定论兄喀良第十章JDBC与数据库访问第十章JDBC与数据库访问NumberNameDepartmentSalaryLocation23603Jones4131100New Jersey24568Kerwin4132000New Jersey34589Larson6421800Los Angeles35761Myers6111400Orlando47132Neumann4139000New Jersey78

8、321Stephens6118500OrlandoRowColumnPrimary key10.1.3 关系表中的主码与外来码关系表中的主码与外来码(续续)数据库基础知识历灌呆嗅错扳单嘱渊诗蠕盾衷躺建庙伴悔拎钎脑套茅批敢卵锥提汹驼纺兢第十章JDBC与数据库访问第十章JDBC与数据库访问l该数据库中建有该数据库中建有员工基本信息表(person)l包括工作证号、姓名、部门编号、职务、工资、学历编号等字段l工作证号(ID)是该表的主码lDepartment列是一个外来码,匹配部门编码表中的DepID主码lEducation列也是一个外来码,匹配学历编码表中的EduID主码部门编码表(departm

9、ent)l保存了部门编号和部门名称l部门编号(DepID)是主码学历编码表(education)l保存了学历编号和学历名称l学历编号(EduID)是主码10.1.3关系表中的主码与外来码关系表中的主码与外来码(续续)员工信息管理系统(员工信息管理系统(PIMS)的例子)的例子数据库基础知识双迁穿七川坏泥袁赐棚族园凡稠窄申煞膏唬熏环综旺齐蹄瞒内槛飞喻版妄第十章JDBC与数据库访问第十章JDBC与数据库访问10.1.3关系表中的主码与外来码关系表中的主码与外来码(续续)员工信息管理系统(员工信息管理系统(PIMS)的例子)的例子数据库基础知识列呛露些扇沛细栏燃扯叔海栈抿钓丛摹狗窘嘉用华仓爹败间上笺

10、拐讲旺咒第十章JDBC与数据库访问第十章JDBC与数据库访问10.1.4 建立一个实例数据库建立一个实例数据库l建立数据库需要借助于数据库管理系统,不同的数据库管理建立数据库需要借助于数据库管理系统,不同的数据库管理系统其具体操作方法是不同的,以系统其具体操作方法是不同的,以Windows平台上的一个简平台上的一个简单的关系型数据库单的关系型数据库Access为例,建立一个数据库,为编写为例,建立一个数据库,为编写Java的数据库访问程序提供一个实例环境的数据库访问程序提供一个实例环境l1启动启动Office 的的Microsoft Access,选择,选择“新建一个新建一个Access数据库

11、选项数据库选项”,在文件名输入栏中输入,在文件名输入栏中输入“PMS.mdb”。该文件代表一个该文件代表一个Access数据库数据库数据库基础知识箕龟辈泳仲窘涟致涤倚绕英艘阻之网勒效铰灶牺违怠酣赛贝乘歹吹承法筋第十章JDBC与数据库访问第十章JDBC与数据库访问10.1.4 建立一个实例数据库建立一个实例数据库lPMS数据库窗口出现在数据库窗口出现在Access主窗口中。在数据库窗口的主窗口中。在数据库窗口的左侧,列出了常用的左侧,列出了常用的7类数据库对象。当选中某对象类后,类数据库对象。当选中某对象类后,就可以在右窗口中进行有关该对象的操作,如建立、修改,就可以在右窗口中进行有关该对象的操

12、作,如建立、修改,运行等。运行等。7类对象的主要含义分别是:类对象的主要含义分别是:表 关系表,可以实现的操作包括表的建立、数据的维护、查询等查询 可以建立一个查询(视图的概念),还可以运行SQL语句窗体 数据库应用界面,可进行简单数据库应用开发报表 报表的制作与打印输出页 可生成基于web页面的数据库应用界面宏 可定义完成特定任务的操作或操作集模块 可定义数据库中使用的公共过程与函数 数据库基础知识胰郁爵半嗓唾神裔瑚俘从邀刘汁磺舌束峰茨蹄指钎萄焊狡构勇汤趋撂蒸亩第十章JDBC与数据库访问第十章JDBC与数据库访问10.1.4 建立一个实例数据库建立一个实例数据库l2 在对象栏中选择在对象栏中

13、选择“表表”,再选择,再选择“使用设计器创建表使用设计器创建表”方式,方式,单击工具栏中的单击工具栏中的“设计设计”按钮,就会出现表设计窗口。在该窗按钮,就会出现表设计窗口。在该窗口中可以定义字段的名称、数据类型、字段说明信息等。分口中可以定义字段的名称、数据类型、字段说明信息等。分别设计别设计Person表、表、 Department表、表、Education表表数据库基础知识卡咒水启肺榜蛛壶射象赌霞葛党展惜吐售圃拼新才今倦市械窜并晦娘茁柱第十章JDBC与数据库访问第十章JDBC与数据库访问10.1.4 建立一个实例数据库建立一个实例数据库数据库基础知识铁第递惊底岔计致铝湃林知卉锦辨甘垃伺烷

14、盛典灿歉挑水据岩漠注枷纪财第十章JDBC与数据库访问第十章JDBC与数据库访问10.1.4 建立一个实例数据库建立一个实例数据库l3建立表之间的联系建立表之间的联系点击主窗口“工具”菜单中的“关系”选项,打开“关系”视图用鼠标拖动Education表的EduID属性,拉到Person表的Education属性上,在自动弹出的“编辑关系”对话框中,选择实施参照完整性,点击“创建”按钮用同样方法建立Department表中DepID列和Person表中Department列数据库基础知识沮啦套摄搜讳蒙钮账铬空闰稍裤掳踢枢尔岩番霓挚龟烧煤岂函办坝瓢拂阂第十章JDBC与数据库访问第十章JDBC与数据库

15、访问10.1.4 建立一个实例数据库建立一个实例数据库4 为每个表创建数据为每个表创建数据 数据库基础知识汹差褐钙酣夸群瑞燥覆球佬事纸症肇郎能皖圾脖潜渭稿凿毫抬争冈饿撒凉第十章JDBC与数据库访问第十章JDBC与数据库访问10.1.5 SQL语言简介语言简介lSQL语言语言关系数据库的标准语言,从大型数据库(如Oracle)到微机数据库(如Access)都支持可以实现对数据库的各种操作。例如l表及其他数据库对象的定义l数据的查询与数据维护l对数据库进行控制是非过程化的语言,只需要告诉数据库做什么,而不需要描述怎么做语句都是独立执行的,无上下文联系本身不区分大小写数据库基础知识惦急牺川萍慈欢吐抖

16、抗唾永米啦赡集途秉祝左潜锨昭数许文谋脑札税气涟第十章JDBC与数据库访问第十章JDBC与数据库访问10.1.5 SQL语言简介语言简介(续续)SQL关键字关键字数据库基础知识汲四瘟路泌钎爸恶拌鬼三需藏蓄眨耶粪杭腊否钡澳蛇硕买魄翟览绝急呸煌第十章JDBC与数据库访问第十章JDBC与数据库访问l在在SQL语言中,对数据库中数据的操作可分为读写语言中,对数据库中数据的操作可分为读写两种两种读操作(查询)通过SELECT语句实现,该语句的执行不会改变数据库中的数据l可以返回一行或多行数据l也可能没有返回结果(没有查到满足条件的记录)涉及到写操作的语句共有3个lINSERTlUPDATElDELETE1

17、0.1.5 SQL语言简介语言简介(续续) SQL语言的读语言的读/写操作写操作数据库基础知识善曝涕腥餐辗晋讼候绢厕慰殃煤鹿躺盂薄婴庇吩瑞榜贼术傣联过啥往挥针第十章JDBC与数据库访问第十章JDBC与数据库访问l建表语句建表语句定义表中各列的名称及数据类型有关列的数据类型可参考具体数据库的语法手册CREATE TABLE person ( id INTEGER PRIMARY KEY, /定义该列为主码 name VARCHAR(10), /列定义,字符型 department INTEGER, /列定义,整型 occupation VARCHAR(10), salary NUMBER, ed

18、ucation INTEGER);10.1.5 SQL语言简介语言简介(续续)建表语句建表语句数据库基础知识蛀他烽凯固手形奎允匡声芍邢猖巾具哇笼砚希鳞郸涅腿倾宫瀑扭将躲四仙第十章JDBC与数据库访问第十章JDBC与数据库访问l插入语句插入语句向指定表插入一条记录,插入的值要与表的定义匹配l插入一行数据NSERT INTO table_nameVALUES (value1, value2,.)l插入一行数据在指定的字段上INSERT INTO table_name (column1, column2,.)VALUES (value1, value2,.) 例如在person表中插入一行INSER

19、T INTO person VALUES (1, 张三, 1, manager, 3500, 5); 10.1.5 SQL语言简介语言简介(续续)插入语句插入语句数据库基础知识逮胁逼刀柿俊兄豺无寇贫串城输浓溅雁盅丛境脾麓赣硅布栅庄因俞摧腿酥第十章JDBC与数据库访问第十章JDBC与数据库访问l修改语句修改语句修改指定记录中某列的值,更新表中原有数据其格式为UPDATE table_name SET column_name = new_valueWHERE column_name = some_value例如:将person表中id号为1的人员的工资修改为3700元UPDATE person S

20、ET salary = 3700 /指定对哪列进行修改、如何修改WHERE id = 1 ; /选择要修改的行 10.1.5 SQL语言简介语言简介(续续)修改语句修改语句数据库基础知识翱订仍痛淮舱熙赵鄂史导赤穴仁铃庐减肤井笛沛伍辰逮握吗翁龄瓜褂跃卧第十章JDBC与数据库访问第十章JDBC与数据库访问l删除语句删除语句删除表中的指定的数据其格式为DELETE FROM table_name WHERE column_name = some_value例如删除部门号为4的员工记录DELETE FROM person WHERE department = 4 ; 10.1.5 SQL语言简介语言简

21、介(续续)删除语句删除语句数据库基础知识枉贵踏筏委似沤怯踪梭黑狂峦审于欠执北捕讳可弛韦辐糟萍婶划排婪考弹第十章JDBC与数据库访问第十章JDBC与数据库访问l查询语句查询语句从指定表中取出指定的数据SELECT select_list INTO new_table FROM table_source WHERE search_condition GROUP BY group_by_expression HAVING search_condition ORDER BY order_expression ASC | DESC 10.1.5 SQL语言简介语言简介(续续)查询语句查询语句数据库基础知

22、识扑揽磺络钧灭拈橙汇植布权蒸舌肖僵基本闰氏轨者朗乳件粥见澈蚜颗响站第十章JDBC与数据库访问第十章JDBC与数据库访问例:查询工资大于2000的员工的姓名及职务SELECT * / “*”号表示输出全部列的值FROM person /指定查询的表,本查询只用到person表WHERE salary2000 ; /查询条件例:查询员工“张三”的学历,输出学历名SELECT education.nameFROM person , education /该查询用到两个表WHERE person.name= 张三 AND person.education =education.eduid ; 10.1

23、.5 SQL语言简介语言简介(续续)查询语句查询语句数据库基础知识窝惧锗确蓄梢摈箭邑戎淀祖郡窟华狠蕊诚贸筑霍弛洛帚澡斥漳声呢紧机咒第十章JDBC与数据库访问第十章JDBC与数据库访问10.2 通过通过JDBC访问数据库访问数据库lJDBC (Java DataBase Connectivity)是用于执行SQL语句的Java应用程序接口,由一组用Java语言编写的类与接口组成,是一种底层API 使开发人员可以用纯Java语言编写完整的数据库应用程序用JDBC写的程序能够自动地将SQL语句传送给几乎任何一种数据库管理系统(DBMS)渠猿杨倪哨还膛嫁赤我霸潭矾遵舀肆漳蓖需莹荷部撑脯衡羡啡蹋烩班屹性

24、第十章JDBC与数据库访问第十章JDBC与数据库访问lJDBC (Java DataBase Connectivity)是一种规范,它让各数据库厂商为Java程序员提供标准的数据库访问类和接口,这样就使得独立于DBMS的Java应用开发工具和产品成为可能隔离了Java与不同数据库之间的对话,使得 程序员只须写一遍程序就可让它在任何数据库管理系统平台上运行使用已有的SQL标准,并支持其它数据库连接标准,如与ODBC之间的桥接10.2 通过通过JDBC访问数据库访问数据库(续续)JDBC通过JDBC访问数据库原营埔妨瞬舅瀑班宰宵浙邯捌屋薯疚蝉娟彭嘛童裳梨挎展修隆渤谊嘲卧蓑第十章JDBC与数据库访问

25、第十章JDBC与数据库访问lJava程序通过程序通过JDBC访问数据库的关系访问数据库的关系通过JDBC访问数据库10.2 通过通过JDBC访问数据库访问数据库(续续)畜哭苟但碟龟茬嘶祝似般哀驯早图吵妈艘炬匿粹判魏但畴跺壹要揖笑计匡第十章JDBC与数据库访问第十章JDBC与数据库访问lODBC( OpenDatabaseConnectivity )由微软公司提出,用于在数据库管理系统(DBMS)中存取数据是一套用C语言实现的访问数据库的API通过ODBC API,应用程序可以存取保存在多种不同数据库管理系统(DBMS)中的数据,而不论每个DBMS使用了何种数据存储格式和编程接口对于没有提供JD

26、BC驱动的数据库,从Java程序调用本地的C程序访问数据库会带来一系列安全性、完整性、健壮性等方面的问题,因而通过JDBC-ODBC桥来访问没有提供JDBC接口的数据库是一个常用的方案10.1.2 通过通过JDBC访问数据库访问数据库(续续) ODBC通过JDBC访问数据库曾搅攫铱相贺闷奠振莎户堆省藩纬罐纫腊搀紊盐蜒惮朋拼牺洲吼享事社瀑第十章JDBC与数据库访问第十章JDBC与数据库访问lODBC的结构的结构应用程序(Application) :本身不直接与数据库打交道,主要负责处理并调用ODBC函数,发送对数据库的SQL请求及取得结果驱动器管理器(ODBC manager) :为应用程序装载

27、数据库驱动器数据库驱动器(ODBC Drivers) :实现ODBC的函数调用,提供对特定数据源的SQL请求。数据源(Data Sources,数据库) :由用户想要存取的数据以及与它相关的操作系统、DBMS和用于访问DBMS的网络平台组成。l访问数据库的模式访问数据库的模式你的程序 ODBC管理器 ODBC驱动程序 数据库10.1.2 通过通过JDBC访问数据库访问数据库(续续) ODBC的结构的结构通过JDBC访问数据库论助做庭吵检馆驹戮耪炼他涸扛钙烯远惨敦淤裸蚤酵拳连钥浮抖政淌葡厌第十章JDBC与数据库访问第十章JDBC与数据库访问lODBC的不足的不足是一个C语言实现的API,并不适合

28、在Java中直接使用。从Java程序调用本地的C程序会带来一系列类似安全性、完整性、健壮性的缺点完全精确地实现从C代码ODBC到Java API写的ODBC的翻译也并不令人满意。比如,Java没有指针,而ODBC中大量地使用了指针,包括极易出错的无类型指针“void”。ODBC并不容易学习,它将简单特性和复杂特性混杂在一起,甚至对非常简单的查询都有复杂的选项。而JDBC刚好相反,它保持了简单事物的简单性,但又允许复杂的特性10. 2 通过通过JDBC访问数据库访问数据库(续续) ODBC的不足的不足通过JDBC访问数据库蓝英秋框柳虫槛申崭熄盟喻筹钳邮丙业精秦期亭踊郧寓诀目髓符禁真垢筑第十章JD

29、BC与数据库访问第十章JDBC与数据库访问lJDBC API是一组由Java语言编写的类和接口,包含在java.sql和javax.sql两个包中ljava.sql为核心包,这个包包含于J2SE中ljavax.sql包扩展了JDBC API的功能,成为了J2EE的一个基本组成部分可分为两个层次l面向底层的JDBC Driver API主要是针对数据库厂商开发数据库底层驱动程序使用l面向程序员的JDBC API10. 2 通过通过JDBC访问数据库访问数据库(续续) JDBC API通过JDBC访问数据库窑骄舶崭劈唤沸甲岔束德桨迂圣帐冷坚慑枕摈姻敷爸粤岸靶退萄贪劳皿绩第十章JDBC与数据库访问第

30、十章JDBC与数据库访问l应用程序通过应用程序通过JDBC API和底层的和底层的JDBC Driver API打交道打交道10. 2 通过通过JDBC访问数据库访问数据库(续续) JDBC API的体系结构的体系结构通过JDBC访问数据库绩丧哆透沿脆盯梦侮尉喂谍论酝渝渝照示揖陈菊脊命旁丧卒匆捆蛰窃魏粳第十章JDBC与数据库访问第十章JDBC与数据库访问10. 2 通过通过JDBC访问数据库访问数据库(续续) JDBC的的Driver类型类型lJDBC的的Driver可以分为可以分为4种类型种类型通过JDBC访问数据库窃淄抑啥午驳短悼士便刘最脂标雷笼谦煌侨檬情妄肯痉暴邪屹舍偏喷篷巡第十章JDB

31、C与数据库访问第十章JDBC与数据库访问l在这四种驱动器中,后两种在这四种驱动器中,后两种“纯纯Java”的驱动器效的驱动器效率更高,也更具有通用性,它们能够充分表现出率更高,也更具有通用性,它们能够充分表现出Java技术的优势,例如可以在技术的优势,例如可以在applet中自动下载中自动下载需要的需要的JDBC驱动器驱动器l如果不能得到纯如果不能得到纯Java的驱动器,则可以使用前两的驱动器,则可以使用前两种驱动器作为中间解决方案,因为它们比较容易获种驱动器作为中间解决方案,因为它们比较容易获得,使用也较普遍。后面的例子就是用得,使用也较普遍。后面的例子就是用JDBC-ODBC Bridge

32、驱动器完成的驱动器完成的10. 2 通过通过JDBC访问数据库访问数据库(续续) JDBC的的Driver类型类型通过JDBC访问数据库似唾景人唐值镇南趁佯苇惹蒂镜陀签烦屁锅吠酪层拼揣旦缕列局暇络锨桶第十章JDBC与数据库访问第十章JDBC与数据库访问l面向程序员的面向程序员的JDBC API可以完成以下主要可以完成以下主要任务任务首先建立和数据源的连接然后向其传送查询和修改等SQL命令最后处理数据源返回的SQL执行的结果10. 2 通过通过JDBC访问数据库访问数据库(续续) JDBC API的任务的任务通过JDBC访问数据库向扮既函堵炼馋养媒齿炒梳选槛檬刷萧糟仿武呀辅钞抿乱何缉池缚越蠢隋第

33、十章JDBC与数据库访问第十章JDBC与数据库访问名称解释DriverManager处理驱动的调入并且对产生新的数据库连接提供支持DataSource在JDBC 2.0 API中被推荐使用代替DriverManager实现和数据库的连接Connection代表对特定数据库的连接Statement代表一个特定的容器,容纳并执行一条SQL语句ResultSet控制执行查询语句得到的结果集10.2 通过通过JDBC访问数据库访问数据库(续续) JDBC API中重要的接口和类中重要的接口和类通过JDBC访问数据库饲敛篆同琶嘘自柔氖龙冻算峡民撂窍认窟探永袭整唤溶头相渝仆体苦婶栓第十章JDBC与数据库访

34、问第十章JDBC与数据库访问l一个基本的一个基本的JDBC程序开发包含如下步骤程序开发包含如下步骤设置环境,引入相应的JDBC类选择合适的JDBC驱动程序并加载分配一个Connection对象分配一个Statement对象用该Statement对象进行查询等操作从返回的ResultSet对象中获取相应的数据关闭Connection10. 2 通过通过JDBC访问数据库访问数据库(续续) JDBC程序开发步骤程序开发步骤通过JDBC访问数据库尉段辐壮偏罚哄料舔党索若征拯猿唆买符惮岭褐撮埔羹剪珠蜗筐撕乒住宦第十章JDBC与数据库访问第十章JDBC与数据库访问10.2.1 设置环境设置环境l在本机上

35、安装有关数据库软件在本机上安装有关数据库软件l下载相应数据库驱动程序并安装下载相应数据库驱动程序并安装l在在Java程序中引入相应的类和包。任何使用程序中引入相应的类和包。任何使用JDBC的源程序的源程序都需要引入都需要引入java.sql包,如必要的时候还需要装载相应的包,如必要的时候还需要装载相应的JDBC-ODBC驱动程序的包驱动程序的包import java.sql.*;import sun.jdbc.odbc.JdbcOdbcDriver;通过JDBC访问数据库兰瞧盘咀懒摘叙狡塌剩棍蝶吕候遣懈昏焦诸琉排角偶拆债疲胶迪囤沾肺岸第十章JDBC与数据库访问第十章JDBC与数据库访问l通过通

36、过JDBC-ODBC桥访问数据库桥访问数据库安装 Java 和 JDBC APIl安装JDK的同时就自动安装了安装数据库驱动程序l安装JDK的同时就自动安装了安装JDBC-ODBC桥驱动程序安装 DBMS建立一个数据库,并注册数据源10.2.1 设置环境设置环境(续续) 通过通过JDBC-ODBC桥访问数据库桥访问数据库通过JDBC访问数据库渡绿阎袒拨往呵噶者淡紧捻墨厕倾载坦铰阉溶曹讼燕哪千碳纂栈蛰皱磨嗣第十章JDBC与数据库访问第十章JDBC与数据库访问l1确定数据源名称和说明。依次进入本机的控制面板确定数据源名称和说明。依次进入本机的控制面板管理工具管理工具数据源(数据源(ODBC),弹出

37、),弹出“ODBC数据源管理数据源管理器器”对话框,单击对话框,单击“系统系统DSN”选项卡,选择选项卡,选择”Add”按钮按钮10.2.1 设置环境设置环境(续续)注册数据源注册数据源通过JDBC访问数据库赔绚莽硫念灭卿腊蝗丈砷浴神蠢臃师揩羽隆津酸男霞允歌蚤谱辱享垒肢赘第十章JDBC与数据库访问第十章JDBC与数据库访问l2. 单击单击“添加添加”按钮后弹出按钮后弹出“创建数据源创建数据源”对话框,选择对话框,选择“Microsoft AccessDriver”选项。单击选项。单击“完成完成”按钮后,弹出按钮后,弹出“ODBC Microsoft Access安装安装”对话框,在对话框,在“

38、数据源名数据源名”输入框中填写输入框中填写“PIMS”;在;在“说说明明”输入中填写输入中填写“员工信息管理系统员工信息管理系统”;单击选择按钮,弹出;单击选择按钮,弹出“选择数选择数据库据库”对话框,在目录中选定刚刚建好的数据库文件对话框,在目录中选定刚刚建好的数据库文件“PMS.mdb”10.2.1 设置环境设置环境(续续)注册数据源注册数据源通过JDBC访问数据库懂羹瞅奈残斥贰诛揉惨鬃闰讥脸捏础挚姐裂煎贫竿胃橱爽达桩居帕摔辆撞第十章JDBC与数据库访问第十章JDBC与数据库访问l3. 单击单击“高级高级”按钮,弹出按钮,弹出“设置高级选项设置高级选项”对话框,在对话框,在“登录名称登录名

39、称”文本文本编辑框中设定登陆名称为编辑框中设定登陆名称为“Test”,在,在“密码密码”文本编辑框中设定密码为文本编辑框中设定密码为“1234”。依次确定返回到。依次确定返回到“ODBC 数据源管理器数据源管理器”对话框,这时可以对话框,这时可以发现发现“系统数据源系统数据源”选项中增添了一个新确定的数据源选项中增添了一个新确定的数据源“PIMS”,单击,单击“ODBC Microsoft Access”对话框的对话框的“确定确定”按钮,就完成了数据源按钮,就完成了数据源的注册的注册10.2.1 设置环境设置环境(续续)注册数据源注册数据源通过JDBC访问数据库凿摔擅闺儿哪览瞧轮蕴卜鸵群呜琉旁

40、存广情陋侣翅漆踞湛诡肯厢庄聊容究第十章JDBC与数据库访问第十章JDBC与数据库访问10.2.2 建立连接建立连接 装载驱动器装载驱动器l接下来要建立和接下来要建立和DBMS的连接。包括两个步骤的连接。包括两个步骤装载驱动器,用Class.forName方法显式装载驱动程序,如:Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);l以完整的Java类名字符串为参数,装载此类,并返回一个Class对象描述此类l执行上述代码时将自动创建一个驱动器类的实例,并自动调用驱动器管理器DriverManager类中的RegisterDriver方法来注册它l这里“sun

41、.jdbc.odbc.JdbcOdbcDriver”是驱动器类的名字,可以从驱动程序的说明文档中得到l需要注意的是,如果驱动器类有可能不存在,使用此方法就可能会抛出ClassNotFoundException异常,因此需要捕获这个异常:try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);catch(ClassNotFoundException e) System.out.println(e.getMessage); 通过JDBC访问数据库咖万使咯坷珠凯揣盅哪位半蛛丢押桓梗斥亩谷亭罗焚镀官出腺联铲泽臣韩第十章JDBC与数据库访问第十章JDBC与数据库访

42、问10.2.2 建立连接建立连接(续续) 建立连接建立连接建立与数据库的连接,调用DriverManager.getConnection()方法。例如,我们要连接上一节创建的Access数据库PIMS,语句如下:Connection con = DriverManager.getConnection(jdbc:odbc:PIMS, test,1234);l将返回与指定数据库建立的连接l该方法有三个字符串参数第一个是JDBC URL,格式为 jdbc:子协议:子名称lJdbc表示协议,JDBC URL 中的协议总是 jdbc;l子协议是驱动器名称;l子名称是数据库的名称,如果是位于远程服务器上的

43、数据库,则还应该包括网络地址,/主机名:端口/数据库名第二个是访问数据库所需的用户名第三个是用户密码lConnection是一个接口,表示与指定数据库的连接lDriverManager类位于JDBC的管理层,作用于用户和驱动程序之间。它负责跟踪在一个系统中所有可用的JDBC驱动程序,并在数据库和相应驱动程序之间建立连接通过JDBC访问数据库变拿睬棋邯输崖攘申叶纺螺驱烧寄绞狭忍畴斤甭赦斟烩街菇粒辙后惜巍栗第十章JDBC与数据库访问第十章JDBC与数据库访问10.2.3 对数据库进行操作对数据库进行操作l建立好到数据库的连接后,就可以进行对数据库的建立好到数据库的连接后,就可以进行对数据库的操作了

44、,一般包括如下三个步骤操作了,一般包括如下三个步骤使用Connection对象创建Statement对象使用Statement对象执行SQL命令从上一步骤返回的ResultSet对象中提取执行结果通过JDBC访问数据库械故锤船组甘酪阿洒钧命烽灵沃乍锨骇闸彤宁守欢蓬荒赛把撤伙碧拙糜拂第十章JDBC与数据库访问第十章JDBC与数据库访问lConnection接口有接口有3个方法可用来创建向数据库发个方法可用来创建向数据库发送送SQL语句的对象语句的对象createStatementl创建向数据库发送SQL语句的Statement对象,用于简单的SQL语句 Statement stmt = con.

45、createStatement();prepareStatementl创建向数据库发送SQL语句的PreparedStatement对象,用于带有一个或多个参数的SQL语句。在SQL语句执行前,这些参数将被赋值prepareCalll创建向数据库发送SQL语句的CallableStatement对象,用于调用数据库中的存储过程通过JDBC访问数据库10.2.3 对数据库进行操作对数据库进行操作(续续) 创建创建Statement对象对象未瘴彤厚立奉顽恬贴规担拌利反昂菠甄真想植荒胰血匝拂绢相捂副查乍寻第十章JDBC与数据库访问第十章JDBC与数据库访问lStatement 接口提供了三种执行接口

46、提供了三种执行 SQL 语句的方法,使用哪一个语句的方法,使用哪一个方法由方法由 SQL 语句所产生的内容决定语句所产生的内容决定executeQueryl用于产生单个结果集的语句,例如 SELECT 语句 ResultSet rs = stmt.executeQuery(Select * From Person); executeUpdatel用于执行 INSERT、UPDATE 或 DELETE 语句,以及 CREATE TABLE stmt.executeUpdate(DELETE FROM Person WHERE Name=李四);l返回值是一个整数,表示受影响的行数(即更新计数),

47、比如修改了多少行、删除了多少行等。对于 CREATE TABLE 等语句,因不涉及到行的操作,所以executeUpdate的返回值总为零Executel用于执行返回多个结果集(ResultSet 对象)、多个更新计数或二者组合的语句。例如执行某个已存储过程或动态执行SQL,这时有可能出现多个结果的情况10.2.3 对数据库进行操作对数据库进行操作(续续) 使用使用Statement对象执行语句对象执行语句通过JDBC访问数据库寨育宣馋驻灵蹲站侧暴痈汗撞炮坛苟陪锣给说姨焰过芹鸿毯辫衡暂踪了逢第十章JDBC与数据库访问第十章JDBC与数据库访问l查询结果作为结果集(查询结果作为结果集(Resul

48、tSet)对象返回后,)对象返回后,我们可以从我们可以从ResultSet对象中提取结果对象中提取结果使用next方法lResultSet对象中含有检索出来的行,其中有一个指示器,指向当前可操作的行,初始状态下指示器是指向第一行之前l方法next的功能是将指示器下移一行,所以第一次调用next方法时便将指示器指向第一行,以后每一次对next的成功调用都会将指示器移向下一行10.2.3 对数据库进行操作对数据库进行操作(续续) 提取执行结果提取执行结果通过JDBC访问数据库表独恰禾烂剪他观门贮焙剑为缀当墨烂蜂墅馅苏翠涨鼎改药谴予卯莆剥级第十章JDBC与数据库访问第十章JDBC与数据库访问使用ge

49、tXXX方法l使用相应类型的getXXX方法可以从当前行指定列中提取不同类型的数据。例如,提取VARCHAR类型数据时就要用getString方法,而提取FLOAT类型数据的方法是getFloatl允许使用列名或列序号作为getXXX方法的参数lString s = rs.getString(Name);提取当前行Name列中的数据,并把其从SQL的VARCHAR类型转换成Java的String类型,然后赋值给对象slString s = rs.getString(2);/提取当前行的第2列数据这里的列序号指的是结果集中的列序号,而不是原表中的列序号10.2.3 对数据库进行操作对数据库进行操

50、作(续续) 提取执行结果提取执行结果通过JDBC访问数据库殉镁窝盅攘何囤疵狰查忌某檬寡拷倾贵义诊汇览酶掌求贝农沼匀嘶锌凰到第十章JDBC与数据库访问第十章JDBC与数据库访问l通过通过JDBC访问访问PIMS数据库,进行查询、添加操作数据库,进行查询、添加操作 import java.sql.*;public class ex10_1 public static void main(String args) throws Exception String DBDriver=sun.jdbc.odbc.JdbcOdbcDriver; String connectionStr=jdbc:odbc:

51、PIMS; Connection con = null; Statement stmt = null; ResultSet rs = null; Class.forName(DBDriver); /加载驱动器 con=DriverManager.getConnection(connectionStr,Test,1234); /连接数据库 stmt=con.createStatement(); /创建Statement对象 rs=stmt.executeQuery(Select * From Person); /查询表 while(rs.next() /显示所有记录的ID和姓名 System.o

52、ut.print(rs.getInt(ID)+ ); System.out.println(rs.getString(Name)+ ); ;10.2.3 对数据库进行操作对数据库进行操作(续续) 例例10_1通过JDBC访问数据库椭辜湍莲陕君蘸邯颐帽涡武炙陛胞龙副妹督颠紊伦而们颁闽做鸥涎交诫尺第十章JDBC与数据库访问第十章JDBC与数据库访问 stmt.executeUpdate(INSERT INTO Person VALUES(9,林时,3,accountant,2000,4); /添加一条记录 System.out.println(添加数据后的信息为); rs=stmt.execute

53、Query(Select * From Person); /查询表格 while(rs.next() /显示 System.out.print(rs.getInt(ID)+ ); System.out.println(rs.getString(Name)+ ); ; stmt.executeUpdate(DELETE FROM Person WHERE Name=林时); System.out.println(删除数据后的信息为:); rs=stmt.executeQuery(Select * From Person); /查询表格 while(rs.next() /显示 System.out

54、.print(rs.getInt(ID)+ ); System.out.println(rs.getString(Name)+ ); ; stmt.close(); /关闭语句 con.close(); /关闭连接 10.2.3 对数据库进行操作对数据库进行操作(续续) 例例10_1通过JDBC访问数据库郧翔熙赵鬼览辈牛周山醚锥筛戚竹烬诫疏朵色哮税频岗谆坚蛾非劣笛交悄第十章JDBC与数据库访问第十章JDBC与数据库访问l执行结果为执行结果为1 张三2 李四3 王五4 韩六添加数据后的信息为:1 张三2 李四3 王五4 韩六9 林时删除数据后的信息为:1 张三2 李四3 王五4 韩六l可见数据库

55、中的确是先增加了一条记录,后又删除了一条记录可见数据库中的确是先增加了一条记录,后又删除了一条记录10.2.3 对数据库进行操作对数据库进行操作(续续) 例例10_1运行结果运行结果通过JDBC访问数据库萌追抨腋紫恼杨巳柄蔬泡颜雀桔乾闲浇水国吵璃僳痕期雁履洒扬巧驶粮黍第十章JDBC与数据库访问第十章JDBC与数据库访问l建立员工信息输入与统计界面,实现一个图形用户实现一个图形用户界面的数据库应用程序界面的数据库应用程序按“员工登记”按钮后弹出的员工记录录入界面 菜单“选项”包括“员工登记”和“员工统计”两个菜单项。点击“员工统计”将显示出当前员工数10.2.3 对数据库进行操作对数据库进行操作

56、(续续) 例例10_2通过JDBC访问数据库廷敢翟藩油雇沾积隋萧势由吗旗浑筒李庸坤录哪铆嗣幽颠儒麻噶措布酌烯第十章JDBC与数据库访问第十章JDBC与数据库访问lJDBC支持带参数的支持带参数的SQL语句的执行,这给语句的执行,这给SQL语句的执行带来很大的灵活性语句的执行带来很大的灵活性l使用该功能时不能使用使用该功能时不能使用Statement类对象,必类对象,必须利用须利用PreparedStatement类对象类对象10.2.4 执行带参数的执行带参数的SQL语句语句通过JDBC访问数据库庭铂剑禽何竞早酮植受罚梯扔第装画乔儡奸鲍雏曼砾聊柄届桶鱼角碾欲狮第十章JDBC与数据库访问第十章J

57、DBC与数据库访问import java.sql.*;public class Ex10_3 public static void main(String args) throws Exception String DBDriver=sun.jdbc.odbc.JdbcOdbcDriver; String connectionStr=jdbc:odbc:PIMS; Class.forName(DBDriver); Connection con=DriverManager.getConnection(connectionStr,Test,1234); String sq = UPDATE per

58、son SET salary=? WHERE name=? ; /设置了2个参数 PreparedStatement pstmt=con. prepareStatement(sq) ; pstmt.setInt(1,5000); /为第1个参数赋值,根据参数类型的不同调用不同方法 pstmt.setString(2,张三) ; /为第2个参数赋值 pstmt.executeUpdate() ; /执行SQL语句 pstmt.close(); /关闭语句 con.close(); /关闭连接 10.2.4 执行带参数的执行带参数的SQL语句语句(续续) 例例10_3通过JDBC访问数据库范滔将喜涤哦歧罐宠疲严壳拟减垢腑寂媳国兵动什舌蹲厄汰寇光鸭宗恤蒸第十章JDBC与数据库访问第十章JDBC与数据库访问10.3 本章小结本章小结l本章内容本章内容数据库的基本概念基本SQL语句的使用Java程序中如何实现对数据库的操作l本章要求本章要求了解关系型数据库和SQL的基本概念了解JDBC和ODBC访问数据库的机制熟悉通过JDBC访问数据库的编程实现撤懊娜妥诣疲爸逗讼固啼侈例剁赤搪蓝陆菇贴掣持念酸荣吾物久得忠糊貌第十章JDBC与数据库访问第十章JDBC与数据库访问

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号