目录

  • 1 课程概述及开发工具
    • 1.1 第1次课 课程概述
    • 1.2 第1次课  开发工具
  • 2 HTML基础(4+2)
    • 2.1 第2次课  认识HTML
    • 2.2 第3次课  表格制作
    • 2.3 第4次课  表单:文本框和按钮制作
    • 2.4 第4次课  表单:单选框制作
    • 2.5 第4次课  表单:复选框制作
    • 2.6 第4次课  表单:下拉框制作
    • 2.7 第4次课  表单综合练习
    • 2.8 综合项目:大学生消费水平调查问卷网页设计
    • 2.9 第4次课 CSS基础
      • 2.9.1 第4次课  认识CSS-嵌入式CSS语句
      • 2.9.2 第4次课  认识CSS-文档头内CSS语句
      • 2.9.3 第4次课  认识CSS-CSS外部文件应用
      • 2.9.4 附:CSS参考手册
  • 3 JSP开发基础
    • 3.1 第1次课 认识JSP
    • 3.2 第1次课  EL语言
    • 3.3 第1次课 JSP页面元素
    • 3.4 第2次课  JSP页面元素-代码片段
    • 3.5 第3次课  JSP页面元素-标签行为
      • 3.5.1 第3次课  标签行为jsp:useBean
    • 3.6 第4次课 标签行为 jsp:forward
      • 3.6.1 第4次课 标签行为jsp:param
    • 3.7 第5次课 再一次认识JSP
    • 3.8 附:JavaEE API(开发者参考手册)
    • 3.9 jsp基础测试题
  • 4 JSP内置对象
    • 4.1 第1次 JSP内置对象概述
    • 4.2 第1次 request对象概述
    • 4.3 第2次 request对象获取表单中的请求参数
    • 4.4 第3次 request对象获取URL中的请求参数
    • 4.5 第4次 小项目:列表导航与详情页面设计
    • 4.6 第5次 request对象获取特殊的请求参数-“一对多键-值”对(选)
    • 4.7 第5次 小项目:调查问卷(选)
    • 4.8 第6次 session对象
    • 4.9 第7次 存储“键-值”对到session对象
    • 4.10 第8次 存储“键-值(对象)”对到session对象
    • 4.11 第9次 小项目:果卉团-选购功能设计与实现
    • 4.12 第10次 application对象
    • 4.13 第10次 小项目:运用application实现留言板
  • 5 Servlet开发基础
    • 5.1 第1次 Servlet概述
    • 5.2 第1次 Servlet的生命周期
    • 5.3 第2次 Servlet生成HTML页面
    • 5.4 第3次 Servlet处理表单数据
    • 5.5 第4次 Servlet页面重定向
    • 5.6 第4次 小项目:Web计算器
    • 5.7 第5次 Servlet请求转发
    • 5.8 第6次 Servlet中访问HttpSession对象
    • 5.9 第7次 小项目:简单Web教师工资计算
  • 6 JDBC数据库访问技术
    • 6.1 第1次 JDBC概述
    • 6.2 第2次 JDBC-Statement、ResultSet
    • 6.3 第3次 JDBC实现Web页面简单查询
    • 6.4 第4次 JDBC完成表单查询应用
    • 6.5 第4次 小项目:“寝室大事记”Web查询系统
    • 6.6 第5次 JDBC-预准备语句PreparedStatement
    • 6.7 第6次 JDBC完成增删改功能应用
    • 6.8 第7次 小项目:基于层次架构模式的Web教师工资管理系统
    • 6.9 JDBC API
第5次 JDBC-预准备语句PreparedStatement

教学导入:

回顾Statement作用,对比与PreparedStatement区别

回顾拼接SQL语句的用法,引入“'”、空格等易错的示例。

导入导入本节知识点PreparedStatement用法和适用场合。


知识点:

预准备语句

—  预准备语句就是指预先编译好的SQL语句。向数据库系统发送的是预先编译好的SQL语句

—  另外一个重要特点,就是可以给预编译SQL语句设置参数,这样能够在应用级别传递 SQL语句里的重要参数,无疑大大提高了应用程序的灵活性。

案例1:使用预准备语句完成“根据指定教师姓名查询职称"

视频:

包括预准备语句概述、语句Statement与预准备语句PreparedStatement的区别与案例、运行效果及小结。


案例2:JDBC完成表单查询应用(预准备语句)

实现功能:通过jsp页面表单完成查询条件的输入,点击表单按钮,能够根据查询条件获得查询结果并能在页面显示查询结果。

回顾上节课内容,将Statement换成预准备语句来处理。

Queryteacher.jsp:

<body>

<form action = "TeacherInfo.jsp" method = "post">

    请输入待查询的教师姓名:<input type="text" name= "tname"></input>

<input type = "submit" value= "查询"></input>

</form>

</body>


Teacherinfo.jsp:

 

<body>

<%

 request.setCharacterEncoding("utf-8");

 String tname =request.getParameter("tname");

String psql ="select * from teacherinfo where teachername like ? ";

//System.out.println(sql);

 //

 try {

Connection con;

con = DriverManager.getConnection(

"jdbc:sqlserver://localhost;databaseName=salary", "sa",

"123456");

PreparedStatement pstat=con.prepareStatement(psql);

pstat.setString(1,tname+"%");

ResultSet rs2 = pstat.executeQuery();

while (rs2.next()) {

%>

<%=rs2.getString("teachername")%>

<%=rs2.getString("tno")%>

<%

}

} catch (Exception e) {

e.printStackTrace();

}

  System.out.println(psql);

%>

</body>

Statement/PreparedStatement区别:

SQL语句在执行前有一个编译过程,如果是发送后由SQLServer去编译,那么选择以前的编程方式(Statement)。如果希望在发送前在本地进行SQL语句的预编译,发送编译后的SQL语句到SQLServer,则使用预编译语句。

           PreparedStatement stmt = con

                  .prepareStatement("select * from teacherinfo where teachernmae=?");

           ResultSet rs = stmt.executeQuery();

如果未给预编译SQL语句设置参数如:

           stmt.setString(1, "");

则报错。

练习:

  1. 根据教师姓名进行模糊查询

    String query= "SELECT * FROM teacherinfowhere  teachername like ?";

    String s=request.getParameter("teacherName");

    PreparedStatementstmt = con.prepareStatement(query);

    stmt.setString(1,"%"+s+"%");

    ResultSet rs= stmt.executeQuery();

2. 按输入的年龄段条件输出年龄区间所有教师信息

参数化查询语句 "Select *from teacherinfo where age>=? and age<=?"

3.姓名或者职称进行组合查询

4.按姓名的部分信息或者性别进行组合查询

String query ="SELECT * FROM teacherinfo where teachername like ? or sex=?";

String s=request.getParameter("teacherName");

PreparedStatementstmt = con.prepareStatement(query);

stmt.setString(1,"%"+s+"%");

stmt.setString(2,"男");