收藏 分销(赏)

《Java程序设计案例教程》教学课件09Java数据库编程.pdf

上传人:曲**** 文档编号:225563 上传时间:2023-03-08 格式:PDF 页数:26 大小:1.18MB
下载 相关 举报
《Java程序设计案例教程》教学课件09Java数据库编程.pdf_第1页
第1页 / 共26页
《Java程序设计案例教程》教学课件09Java数据库编程.pdf_第2页
第2页 / 共26页
《Java程序设计案例教程》教学课件09Java数据库编程.pdf_第3页
第3页 / 共26页
《Java程序设计案例教程》教学课件09Java数据库编程.pdf_第4页
第4页 / 共26页
《Java程序设计案例教程》教学课件09Java数据库编程.pdf_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、学习目标掌握在Java应用程序中用JDBC连接驱动访问MySQL数据库的方法和 步骤。掌握通过Java应用程序操作MySQL数据库的方法和步骤,包括查询(顺序查询、游动查询)、添加、修改和删除数据记录等基本数据操作过程。了解通过预编译SQL语句对MySQL数据库进行数据操作的过程。理解预编译SQL语句防止SQL注入的方法和意义。04技能目标L 能够在 MyEclipse IDE中为Java项目配置 JDBC数据库连接驱动。2.能够在MyEclipse IDE中编写 Java应用程序对MySQL数据库中的 数据记录进行查询、添加、修改和删 除等操作。0 3.能够在MyEclipse IDE中编写

2、预编译SQL语句对MySQL 数据库中的数据记录进行操作 及防止SQL注入。09回顾与思考在软件开发过程中,通常情况下都需要利用数据库来存放数据。用 Java语言编写的程序也要能实现与数据库进行交互的功能。使用Java语言 访问数据库主要包括从数据库中查找符合给定条件的记录、向数据库中插 入符合给定条件的记录、修改或删除数据库中符合给定条件的记录。因此,本模块我们开始学习编写Java应用程序访问数据库的方法技术,内容包含对数据库中数据记录的查询、添加、修改与删除等操作,以及使 用预编译SQL语句防止从应用程序外部进行SQL注入。9.2数据库操作准备9.2.1创建MySQL数据库通过Java应用

3、程序访问数据库,首先 要准备好数据库及其中的数据。单击桌面 开始按钮,选择所有程序 一 MySQL,在展开项中选择 MySQL Server 5.5,从中选择“MySQL 5.5 Command Line Client,打开MySQL命令行客户端。然后,输入SQL语句select*from student/进行验证。客户端输出结果如 图9-1所示,其表明数据库已准备就绪。Qfl MySQL 5.5 Command Line Clientmusql select 兴 from student;gender1998-10-10 1997-01-01 1999-02-02 1999-03-03 19

4、99-04-04 1999-05-05三四五六七八 张李王赵钱孙dateOfBirth男女男男男女一score908585989280specialty信息安全技术 网络工程 通信工程 电子工程 软件工程计算机应用技术6 rows in set(0.00 sec)图9-1 student表的i己录09.2数据库操作准备9.2.2加载JDBC数据库连接驱动在MyEclipse IDE中,右击 项目myPro,在弹出的快捷菜 单中选择Properties选项,弹 出“Properties for myPro”窗口,在左侧的列项中选择 Java Build Path选项,再在右 侧切换到Librar

5、ies选项卡,如 图9-2所示。图9-2 Properties for myPro窗口09.2数据库操作准备9.2.2加载JDBC数据库连接驱动单击Add External JARs按钮,在弹出的JAR Selection”对话框中找到所需连接驱动所在的目录位置,如图9-3所示。图9-3 JAR Selection”对话框9.2数据库操作准备9.2.2加载JDBC数据库连接驱动单击打开按钮,返回Properties for myPro”窗,在 Java Build Path”的“Libraries”选项卡中出现了加载的MySQL连接驱动,如图 9-4所示。图9-4 MySQL连接驱动加载完成9

6、.3数据库操作技术9.3.1查询记录操作1.顺序查询【例9】在控制台显示从myDatabase数据库的student表中查询到的所有数据记录。文件名为Example9_ljava,其代码如下。运行结果如下张三 男1998-10-10 90 信息安全技术其代码见P186-187。李四女 1997-01-01 85 网络工程王五 男 1999-02-02 85 通信工程赵六 男 1999-03-03 98 电子工程钱七男 1999-04-04 92 软件工程孙八 女1999-05-05 80 计算机应用技术9.3数据库操作技术9.3.1查询记录操作2.游动杳询在游动查询操作中,采用 create

7、Statement。nt resultSetType,int resultSetConcurrency)方法将SQL语句发送到数据库。其参数的功能如下。(1)resultSetType的取值决定结果集的游标能否上下移动。取值如下。ResultSet.TYPE_FORWARD_ONLY:结果集的游标只能向下移动。ResultSet.TYPE_SCROLL_INSENSITIVE:结果集的游标能够上下移动。当数据库有变 化时,当前结果集不变。ResultSet.Type_SCROLL_SENSITIVE:结果集的游标能够上下移动。当数据库有变化 时,当前结果集同步改变。您9.3数据库操作技术9.3

8、.1查询记录操作2.游动查询(2)resultSetConcurrency的取值决定能否用结果集更新螃库。取值如下。ResultSet.CONCUR_READ_ONLY:不能用结果集更新副库中的表。ResultSet.CONCUR_UPDATABLE:能用结果集更新I蜩库中的表。9.3数据库操作技术9.3.1查询记录操作2.游动查询【例92】游动查询myDatabase数据库的student表中的数据记录。文件名为Example9_2java,其代码如下。其代码见P188-190。运行结果如下。一共有6条记录。第三条记录为:王五男1999-02-02 85通信工程09.3数据库操作技术9.3.

9、2添加记录操作【例93】从控制台接收数据向myDatabase数据库的student表中插入一条记录(周九男丁 1999-6-6,88,网络工程 工 文件名为Example9_3.java,其代码如下。运行结果如下。请输入姓名:周九请输入性别:男请输入出生日期:1999-6-6请输入成绩:88请输入专业:网络工程_其代码见P190-192。张三男1998-10-1090信息安全技术李四女1997-01-0185网络工程王五男1999-02-0285通信工程赵六男1999-03-0398电子工程钱七男1999-04-0492软件工程孙八女1999-05-0580计算机应用技术周九男1999-06

10、-0688网络工程9.3数据库操作技术9.3.3修改记录操作【例94】从控制台接收数据,将myDatabase数据库的student表中name字段值为李 四记录的specialty字段值改为人工智能工程。文件名为Example9_4.java,其代码如下。运行结果如下。请输入姓名:李四请输入新的专业:人工智能工程_其代码见P192-193。张三男1998-10-1090信息安全技术李四女1997-01-0185人工智能工程王五男1999-02-0285通信工程赵六男1999-03-0398电子工程钱七男1999-04-0492软件工程孙八女1999-05-0580计算机应用技术周九男1999

11、-06-0688网络工程9.3数据库操作技术9.3.4删除记录操作【例95】从控制台接收数据,将myDatabase数据库的student表中name字段值为周 九的记录删除。文件名为Example9_5.java,其代码如下。运行结果如下。孙八女1999-05-05 80计算机应用技术请输入姓名:周九张三 男 1998-10-10 90 信息安全技术其代码见P194-195。李四 女 1997-01-01 85 人工智能工程王五 男 1999-02-02 85 通信工程赵六 男 1999-03-03 98 电子工程钱七 男 1999-04-04 92 软件工程9.4防止SQL注入9.4.1

12、SQL 注入SQL是操作数据库数据的结构化查询语言,采用SQL 将应用程序和数据库中的数据进行交互。如果应用程序对 用户输入数据的合法性没有判断或过滤不严,则攻击者可 以修改在应用程序中事先定义好的查询语句,以此来实现 欺骗数据库执行非授权的任意查询,从而进一步得到相应 的数据信息,发生SQL注入攻击。9.4防止SQL注入9.4.1 SQL注入【例96】SQL注入示例。首先在myDatabase数据库中建一个表,命名为user,表结构为name(varchar)、password(varchar),SQL语句为 ncreate table user(name varchar(20)z pass

13、word varchar(20);/o向user表中插入一条数据记录,SQL语句为insert into user(namez password)values(南京交通,o9.4防止SQL注入9.4.1 SQL 注入【例96】SQL注入示例。运行后,输入密码时注入非法SQL,结果如下。请输入用户名:java 请输入密码:mima or 1=1 欢迎访问数据库!在没有输入正确的用户名和密码的情况下,仍然通过应用程序非 法闯入了数据库。如果把程序中与数据库用户名和密码进行比对部分的代码ResultSet rs=s.executeQuery(select*from user where name=+

14、name+and password=+password+);if(rs.next()System.out.println(欢迎访问数据库!”);elseSystem,out.printin(用户名或密码不正确!”);9.4防止SQL注入9.4.1 SQL 注入【例96】SQL注入示例。修改为ResultSet rs=s.executeQuery(select*from user if(rs.next()if(password,equals(rs.getString(password)Systen.out.printin(欢迎访问数据库!”);elseSystem.out.printin(密码不

15、正确!”);elsev i I n name=十 name 十);System.out.printin(用户不存在!”);9.4防止SQL注入9.4.1 SQL 注入【例96】SQL注入示例。运行后,输入用户名和密码时注入非法SQL,结果如下。请输入用户名:javaorl=l 请输入密码:mimaorl=l 密码不止确!虽然保证7数据库未被非法闯入,但 是被成功地骗取了 合法用户身份,数 据库仍然存在潜在的危险。9.4防止SQL注入9.4.2预编译SQL语句对于要多次执行的SQL语句,MySQL支持将其写成预编译SQL语 句的形式,而后可直接多次调用。预编译SQL语句的运用分准备和执 行两个过

16、程:语句准备过程是通知MySQL服务器将预编译SQL语句编 译成执行计划,SQL语句只需编译一次;语句执行过程则直接调用编 译所形成的机器代码段,多次执行同一条SQL语句时,效率非常高。在预编译SQL语句中,允许有一个或多个未指定数值的输入参数,输入参数用占位符?代替。在执行预编译SQL语句前,必须对?进行赋值。9.4防止SQL注入9.4.2预编译SQL语句【例97】用预编译SQL语句替代文件Example9_6.java中的部分代码,达到防止 SQL注入的目的。文件名为Example9_7.java,其代码如下。运行结果如下。其代码见P200-201。请输入用户名:南京交通请输入密码:njj

17、t 欢迎访问数据库!在本模块,我们系统学习了在MyEclipse IDE中通过JDBC数据库连接驱动访问MySQL数 据库,并进行查询(顺序查询、游动查询)、添 加、修改和删除数据记录等基本数据操作的过程 和方法。我们还学习了预编译SQL语句在数据操 作及防止SQL注入等方面的运用。1.在MyEclipse IDE中为Java项目配置通过JDBC访问MySQL数据 库的连接驱动。2.借助Java API详细分析Java应用程序中连接访问MySQL数据库 的关键代码。3.Connections Statement和ResultSet者R是java.sql包中的接口 o通过模块5的学习,我们知道接

18、口中的方法都是抽象方法。但是,在数据库操作过程中,为什么能调用上述接口中的方法呢?提示:调用getClass()方法查找对象的来源。4.如果没有使用预编译SQL语句进行用户登录验证,会产生怎样 的后果?9.7上机实践仿照本模块中的例子,对myDatabase数据库的 student表继续进行以下数据操作。1.查询专业为网络工程的数据记录,并在控制台 显不查I旬结果O2.向student表中插入一条记录,并查询显示插入结 果。3.将student表中name字段值为王五记录的 score字段值改为95,并查询显示更改结果。4删除student表中name字段值为孙八的记录,并查询显示删除结果。谢谢观看!

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 通信科技 > 软件工程

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服