第四章 数据库应用开发案例2

本章重点讲述以下内容:
4.4 应用JDBC调用存储过程
4.5 数据源与连接池技术
4.6 数据库程序开发案例

第四章 数据库应用开发案例2,案例示例

1、使用预处理语句实现学生信息查询功能

数据库程序开发-学生信息查询

建立数据库连接(Connection)的目的是与数据库进行通信,执行SQL语句,需要创建Statement实例。

分为以下3种类型:

  • Statement:只能用来执行静态的SQL语句;
  • PreparedStatement:增加了执行动态SQL语句的功能;
  • CallableStatement:增加了执行数据库存储过程的功能。

其中,Statement是最基础的,PreparedStatement继承了Statement,并做了相应的扩展,而CallableStatement继承了PreparedStatement,又做了相应的扩展,从而保证在基本功能的基础上,各自又增加了一些独特的功能。

PreparedStatement

PreparedStatement类可以将SQL语句传给数据库做预编译处理,即在执行的SQL语句中包含一个或多个IN参数,可以通过设置IN参数值多次执行SQL语句,不必重新给出SQL 语句,这样可以大大提高执行SQL语句的速度。

所谓IN参数就是指那些在SQL语句创立时尚未指定值的参数,在SQL语句中IN参数用“?”号代替。例如:

PreparedStatement pstmt=conn.preparedStatement("SELECT * FROM student  WHERE年龄>=? AND 性别=? ");

学生信息查询案例代码:

<% try {  Class.forName("com.mysql.jdbc.Driver"); 
String url = "jdbc:mysql://localhost:3306/employeeDb"; 
String username = "root";// 数据库用户名
String password = "root";// 数据库密码
Connection conn = DriverManager.getConnection(url,username,password); 
String sql = "select * from employee where age>? and salary>?";
PreparedStatement pstmt=conn.prepareStatement(sql);
pstmt.setInt(1,18);
pstmt.setFloat(2,3000);
ResultSet  rs= pstmt.executeQuery();
out.print("<table border=2>");
          out.print("<tr>");
            out.print("<th width=100>员工号</th>");
            out.print("<th width=100>姓名</th>");
            out.print("<th width=50>年龄</th>");
            out.print("<th width=50>性别</th>");
            out.print("<th width=50>薪水</th>");
            out.print("<th width=50>部门</th>");
         out.print("</tr>");
while(rs.next())
       {     out.print("<tr>");
             out.print("<td >"+rs.getInt(1)+"</td>"); 
             out.print("<td >"+rs.getString(2)+"</td>");
             out.print("<td >"+rs.getString("age")+"</td>"); 
             out.print("<td >"+rs.getString("sex")+"</td>"); 
             out.print("<td >"+rs.getFloat("salary")+"</td>");
             out.print("<td >"+rs.getString("department")+"</td>"); 
          out.print("</tr>") ; 
        }
out.print("</table>");
rs.close();
pstmt.close();
conn.close();
} catch (Exception e) { 
    out.print(e.getMessage());
  }
%>

2、调用存储过程显示图书信息

MySQL存储过程的创建  格式 : CREATE PROCEDURE 过程名 ([过程参数[,…]])  [特性 …] 过程体

例子:

mysql>use db_book;    
mysql> DELIMITER //
mysql> create procedure  findAllBook()
  begin
   		select * from tb_book order by id; 
  end
  //
mysql> DELIMITER ;

(1)DELIMITER是分割符的意思,因为MySQL默认以“;”为分隔符,如果我们没有声明分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,所以要事先用DELIMITER关键字申明当前段分隔符mysql> DELIMITER //  ,这样MySQL才会将”;”当做存储过程中的代码,不会执行这些代码,用完了之后要把分隔符还原mysql> DELIMITER ; 。

(2 )过程体的开始与结束使用BEGIN与END进行标识。 

本章节内容已隐藏,发表评论后即可查看!

125jz网原创文章。发布者:江山如画,转载请注明出处:http://www.125jz.com/1146.html

(2)
江山如画的头像江山如画管理团队
第四章 数据库应用开发案例1
上一篇 2018年2月7日 上午10:04
消除img图片与div下边界之间空白的三种方法
下一篇 2018年2月7日 下午8:27

99%的人还看了以下文章

  • Windows10+IIS+PHP7+MySQL5.7环境搭建

    Windows10+IIS+PHP7+MySQL5.7环境搭建Windows10+IIS+PHP7+MySQL5.7环境搭建Windows10+IIS+PHP7+MySQL5.7环境搭建Windows10+IIS+PHP7+MySQL5.7环境搭建

    IIS配置 本次搭建使用的系统是Windows7,Windows8,10与此类似。 开启IIS 开始–>控制面板–>程序和功能,点击左边栏的开启或关闭Windows功能,如图: 选择Internet信息服务并选择里面的CGI。打开浏览器,输入localhost或127.0.0.1,可以正常打开网页则说明开启成功。 新建站点…

    2021年8月14日 编程开发
    8.9K0
  • 精!如何在IDEA中导入myeclipse项目、配置并运行(实例演示)

    精!如何在IDEA中导入myeclipse项目、配置并运行(实例演示)精!如何在IDEA中导入myeclipse项目、配置并运行(实例演示)精!如何在IDEA中导入myeclipse项目、配置并运行(实例演示)精!如何在IDEA中导入myeclipse项目、配置并运行(实例演示)

    125建站网站长原来开发的myeclipse项目直接在IDEA打开发现会有很多问题,根据解决过程,写出此文章供大家参考! 1.首先打开IDEA工具,选择导入项目,然后在弹出的窗口中选择要打开的myeclipse文件,然后点击确定。如图所示 2.选择Eclipse,然后一直下一步 3.正常我们SDK这里都配置好了,直接选择就好,然后完成项目的导入 4.导入的完…

    2023年2月3日 编程开发
    8.4K0
  • 第四章 数据库应用开发案例1

    理解JDBC以及Java程序与数据库的交互原理
    掌握JDBC API中提供的常用接口和类
    掌握JDBC连接数据库方法
    掌握数据库的CRUD操作
    掌握数据源与连接池技术

    2018年2月7日
    9.4K2
  • 10秒倒计时、考试结束倒计时功能实现代码-JS

    注册成功或登录后网页会有倒计时,如5秒后跳转到哪个页面的功能。 在做一些在线测试,网上考试系统时,会用到倒计时功能。 如网上考试系统里,会有时间提示离考试结束还有多长时间,临近考试结束剩10分钟,还可以弹窗提示考生。 JavaScript实现倒计时功能代码 <!DOCTYPE html> <html> <head> &lt…

    2020年11月1日
    4.8K0
  • 如何设计单元测试用例,单元测试快速入门教程四

    测试人员在实际工作中根据不同覆盖要求设计面向代码的单元测试用例,运行测试用例后至少应实现如下覆盖需求: 对程序模块的所有独立的执行路径至少覆盖一次; 对所有的逻辑判定,真假两种情况至少覆盖一次; 在循环的边界和运行界限内执行循环体; 测试内部数据结构的有效性等。 至少应设计覆盖如下需求的基于功能的单元测试用例: 测试程序单元的功能是否实现; 测试程序单元性能…

    2018年4月18日
    4.9K0
  • 超清晰!HTML5 实现手机拍照上传功能原理讲解

    这篇文章主要为大家详细介绍如何使用HTML5利用摄像头拍照实现上传功能,原理讲解非常清晰,具有较大的参考价值。 上传页面代码: 上传图片用的HTML5的file文件上传功能<input type=”file” accept=”image/*”> 因为原生file样式不满足要求,在input上面放置我们想要…

    2022年8月11日
    14.8K0

发表回复

登录后才能评论