09Java数据库编程电子课件 Java程序设计案例教程



《09Java数据库编程电子课件 Java程序设计案例教程》由会员分享,可在线阅读,更多相关《09Java数据库编程电子课件 Java程序设计案例教程(26页珍藏版)》请在装配图网上搜索。
1、,模块,9,Java数据库编程,学习目标,01,掌握在Java应用程序中用JDBC连接驱动访问MySQL数据库的方法和步骤。,02,掌握通过Java应用程序操作MySQL数据库的方法和步骤,包括查询(顺序查询、游动查询)、添加、修改和删除数据记录等基本数据操作过程。,03,了解通过预编译SQL语句对MySQL数据库进行数据操作的过程。,04,理解预编译SQL语句防止SQL注入的方法和意义。,技能目标,1.能够在MyEclipse IDE中为Java项目配置JDBC数据库连接驱动。,2.能够在MyEclipse IDE中编写Java应用程序对MySQL数据库中的数据记录进行查询、添加、修改和删除
2、等操作。,3.能够在MyEclipse IDE中编写预编译SQL语句对MySQL数据库中的数据记录进行操作及防止SQL注入。,9.1 回顾与思考,在软件开发过程中,通常情况下都需要利用数据库来存放数据。用Java语言编写的程序也要能实现与数据库进行交互的功能。使用Java语言访问数据库主要包括从数据库中查找符合给定条件的记录、向数据库中插入符合给定条件的记录、修改或删除数据库中符合给定条件的记录。,因此,本模块我们开始学习编写Java应用程序访问数据库的方法技术,内容包含对数据库中数据记录的查询、添加、修改与删除等操作,以及使用预编译SQL语句防止从应用程序外部进行SQL注入。,9.2 数据库
3、操作准备,9.2.1 创建MySQL数据库,通过Java应用程序访问数据库,首先要准备好数据库及其中的数据。单击桌面“开始”按钮,选择“所有程序”“MySQL”,在展开项中选择“MySQL Server 5.5”,从中选择“MySQL 5.5 Command Line Client”,打开MySQL命令行客户端。,然后,输入SQL语句“select*from student;”进行验证。客户端输出结果如图9,-,1所示,其表明数据库已准备就绪。,图9,-,1 student表的记录,9.2 数据库操作准备,9.2.2 加载JDBC数据库连接驱动,在MyEclipse IDE中,右击项目myPr
4、o,在弹出的快捷菜单中选择Properties选项,弹出“Properties for myPro”窗口,在左侧的列项中选择Java Build Path选项,再在右侧切换到Libraries选项卡,如图9,-,2所示。,图9,-,2“Properties for myPro”窗口,9.2 数据库操作准备,9.2.2 加载JDBC数据库连接驱动,单击Add External JARs按钮,在弹出的“JAR Selection”对话框中找到所需连接驱动所在的目录位置,如图9,-,3所示。,图9,-,3“JAR Selection”对话框,9.2 数据库操作准备,9.2.2 加载JDBC数据库连接
5、驱动,单击“打开”按钮,返回“Properties for myPro”窗口,在“Java Build Path”的“Libraries”选项卡中出现了加载的MySQL连接驱动,如图9,-,4所示。,图9,-,4 MySQL连接驱动加载完成,9.3 数据库操作技术,9.3.1 查询记录操作,【例9,-,1】,在控制台显示从myDatabase数据库的student表中查询到的所有数据记录。,文件名为Example9_1.java,其代码如下。,1.顺序查询,其代码,见,P186-187,。,运行结果如下。,9.3 数据库操作技术,9.3.1 查询记录操作,在游动查询操作中,采用createSt
6、atement(int resultSetType,int resultSetConcurrency)方法将 SQL语句发送到数据库。其参数的功能如下。,2.游动查询,(1)resultSetType的取值决定结果集的游标能否上下移动。取值如下。,ResultSet.TYPE_FORWARD_ONLY:结果集的游标只能向下移动。,ResultSet.TYPE_SCROLL_INSENSITIVE:结果集的游标能够上下移动。当数据库有变化时,当前结果集不变。,ResultSet.Type_SCROLL_SENSITIVE:结果集的游标能够上下移动。当数据库有变化时,当前结果集同步改变。,9.3
7、数据库操作技术,9.3.1 查询记录操作,2.游动查询,(2)resultSetConcurrency的取值决定能否用结果集更新数据库。取值如下。,ResultSet.CONCUR_READ_ONLY:不能用结果集更新数据库中的表。,ResultSet.CONCUR_UPDATABLE:能用结果集更新数据库中的表。,(2)resultSetConcurrency的取值决定能否用结果集更新数据库。取值如下。,ResultSet.CONCUR_READ_ONLY:不能用结果集更新数据库中的表。,ResultSet.CONCUR_UPDATABLE:能用结果集更新数据库中的表。,9.3 数据库操作技
8、术,9.3.1 查询记录操作,2.游动查询,【例9,-,2】,游动查询myDatabase数据库的student表中的数据记录。,文件名为Example9_2.java,其代码如下。,其代码,见,P188-190,。,运行结果如下。,一共有6条记录。,第三条记录为:,王五 男 1999,-,02,-,02 85 通信工程,9.3 数据库操作技术,9.3.2 添加记录操作,【例9,-,3】,从控制台接收数据向myDatabase数据库的student表中插入一条记录(,周九,男,1999,-,6,-,6,88,网络工程,)。,文件名为Example9_3.java,其代码如下。,其代码,见,P1
9、90-192,。,运行结果如下。,9.3 数据库操作技术,9.3.3 修改记录操作,【例9,-,4】,从控制台接收数据,将myDatabase数据库的student表中name字段值为“李四”记录的specialty字段值改为“人工智能工程”。,文件名为Example9_4.java,其代码如下。,其代码,见,P192-193,。,运行结果如下。,9.3 数据库操作技术,9.3.4 删除记录操作,【例9,-,5】,从控制台接收数据,将myDatabase数据库的student表中name字段值为“周九”的记录删除。,文件名为Example9_5.java,其代码如下。,其代码,见,P194-1
10、95,。,运行结果如下。,9.4 防止SQL注入,9.4.1 SQL注入,SQL,是操作数据库数据的结构化查询语言,采用SQL将应用程序和数据库中的数据进行交互。如果应用程序对用户输入数据的合法性没有判断或过滤不严,则攻击者可以修改在应用程序中事先定义好的查询语句,以此来实现欺骗数据库执行非授权的任意查询,从而进一步得到相应的数据信息,发生SQL注入攻击。,9.4 防止SQL注入,9.4.1 SQL注入,【例9,-,6】,SQL注入示例。,首先在myDatabase数据库中建一个表,命名为user,表结构为name(varchar)、password(varchar),SQL语句为“creat
11、e table user(name varchar(20),password varchar(20);”。向user表中插入一条数据记录,SQL语句为“insert into user(name,password)values(,南京交通,njjt,);”。,其代码,见,P197-198,。,然后编写应用程序。文件名为Example9_6.java,其代码如下。,9.4 防止SQL注入,9.4.1 SQL注入,【例9,-,6】,SQL注入示例。,运行后,输入密码时注入非法SQL,结果如下。,在没有输入正确的用户名和密码的情况下,仍然通过应用程序非法闯入了数据库。,如果把程序中与数据库用户名和密
12、码进行比对部分的代码,9.4 防止SQL注入,9.4.1 SQL注入,【例9,-,6】,SQL注入示例。,修改为,9.4 防止SQL注入,9.4.1 SQL注入,【例9,-,6】,SQL注入示例。,运行后,输入用户名和密码时注入非法SQL,结果如下。,请输入用户名:java,or,1=1,请输入密码:mima,or,1=1,密码不正确!,虽然保证了数据库未被非法闯入,但是被成功地骗取了“合法”用户身份,数据库仍然存在潜在的危险。,9.4 防止SQL注入,9.4.2 预编译SQL语句,对于要多次执行的SQL语句,MySQL支持将其写成预编译SQL语句的形式,而后可直接多次调用。预编译SQL语句的
13、运用分准备和执行两个过程:,语句准备过程是通知MySQL服务器将预编译SQL语句编译成执行计划,SQL语句只需编译一次;语句执行过程则直接调用编译所形成的机器代码段,多次执行同一条SQL语句时,效率非常高。,在预编译SQL语句中,允许有一个或多个未指定数值的输入参数,输入参数用占位符“?”代替。在执行预编译SQL语句前,必须对“?”进行赋值。,9.4 防止SQL注入,9.4.2 预编译SQL语句,【例9,-,7】,用预编译SQL语句替代文件Example9_6.java中的部分代码,达到防止SQL注入的目的。,文件名为Example9_7.java,其代码如下。,其代码,见,P200-201,
14、。,运行结果如下。,9.5 小结,在本模块,我们系统学习了在MyEclipse IDE中通过JDBC数据库连接驱动访问MySQL数据库,并进行查询(顺序查询、游动查询)、添加、修改和删除数据记录等基本数据操作的过程和方法。我们还学习了预编译SQL语句在数据操作及防止SQL注入等方面的运用。,9.6 习题,1.在MyEclipse IDE中为Java项目配置通过JDBC 访问MySQL数据库的连接驱动。,2.借助Java API详细分析Java应用程序中连接访问MySQL数据库的关键代码。,3.Connection、Statement和ResultSet都是java.sql包中的接口。通过模块5
15、的学习,我们知道接口中的方法都是抽象方法。但是,在数据库操作过程中,为什么能调用上述接口中的方法呢?,提示,:调用getClass()方法查找对象的来源。,4.如果没有使用预编译SQL语句进行用户登录验证,会产生怎样的后果?,9.7 上机实践,仿照本模块中的例子,对myDatabase数据库的student表继续进行以下数据操作。,1.查询专业为“网络工程”的数据记录,并在控制台显示查询结果。,2.向student表中插入一条记录,并查询显示插入结果。,3.将student表中name字段值为“王五”记录的score字段值改为“95”,并查询显示更改结果。,4.删除student表中name字段值为“孙八”的记录,并查询显示删除结果。,谢谢观看!,
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。