教学导入:
思考页面数据新增的应用功能如何实现?
是否需要设计录入表单?处理提交数据的程序考虑servlet或者jsp?如何处理提交数据?是否需要发送insert语句到数据库要求执行?
知识点:
通过Connect、Statement(executeUpdate方法)的协同开发完成数据更新;
案例1:JDBC完成数据新增
SQL语句:
insert into teacherinfo values('00071','Jake',23,'女','助教')
直接在jsp页面上执行JDBC代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="java.sql.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
String psql = "insert into teacherinfo values('00077','Jake',23,'女','助教')";
System.out.println(psql);
try {
Connection con;
con = DriverManager.getConnection(
"jdbc:sqlserver://localhost;databaseName=salary", "sa",
"123456");
Statement stat = con.createStatement();
stat.executeUpdate(psql);
} catch (Exception e) {
e.printStackTrace();
}
%>
</body>
</html>
案例2:JDBC完成表单数据新增的应用
jsp页面设计form表单,提供输入项的录入提交功能。设计servlet或者jsp,通过Connect、Statement(executeUpdate方法)的协同开发完成数据更新;
<body>
<form action = "TeacherInfo.jsp" method = "post">
请输入待新增的教师信息<br>
工号:<input type="text" name="tno"/><br>
姓名:<input type="text" name= "tname"/><br>
性别:<input type="text" name= "sex"/><br>
<input type = "submit" value= "新增"/>
</form>
</body>
TeacherInfo.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="java.sql.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
String tno = request.getParameter("tno");
String tname = request.getParameter("tname");
String sex = request.getParameter("sex");
String psql = "insert into teacherinfo values('"+tno+"','"+tname+"',23,'"+sex+"','助教')";
System.out.println(psql);
//
try {
Connection con;
con = DriverManager.getConnection(
"jdbc:sqlserver://localhost;databaseName=salary", "sa",
"123456");
Statement stat = con.createStatement();
int result = stat.executeUpdate(psql);
System.out.println("新增成功");
} catch (Exception e) {
e.printStackTrace();
}
%>
</body>
</html>
使用预处理语句实现同样的功能。
预处理语句接口:PreparedStatement
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="java.sql.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
String tno = request.getParameter("tno");
String tname = request.getParameter("tname");
String sex = request.getParameter("sex");
//String psql = "insert into teacherinfo values('"+tno+"','"+tname+"',23,'"+sex+"','助教')";
String psql = "insert into teacherinfo values(?,?,?,?,?)";
System.out.println(psql);
try {
Connection con;
con = DriverManager.getConnection(
"jdbc:sqlserver://localhost;databaseName=salary", "sa",
"123456");
PreparedStatement pstat= con.prepareStatement(psql);
pstat.setString(1,tno);
pstat.setString(2, tname);
pstat.setInt(3,25);
pstat.setString(4,sex);
pstat.setString(5,"助教");
pstat.executeUpdate();
%>
<%=tname %>新增成功!
<% } catch (Exception e) {
e.printStackTrace();
}
%>
</body>
</html>

