JSP | 使用Statement、ResultSet对象操作数据库
·核心知识
1.创建statement对象
statement对象代表一条发送到数据库执行的SQL语句,由已创建的Connection对象调用createStatement()方法来创建Statement对象,代码如下:
Statement st = con.createStatement();
2.执行 SQL语句
创建statement对象后,可以用statement对象调用executeUpdate(String sql)、executeQuery(String sql)等方法来执行SQL语句。
executeUpdate(String sql)方法主要用于执行INSERT、UPDATE、DELETE语句以及SQL DDL语句。
executeQuery(String sql)方法是用于执行SELECT等查询数据库的SQL语句,该方法返回ResultSet对象,代表查询结果。
3.处理返回的ResultSet对象
ResultSet对象是executeQuery(String sql)方法的返回值,被称为结果集,它代表符合SQL语句条件的所有行。ResultSet对象调用next()方法移动到下一个数据行。获得一行数据后,ResultSet对象可以使用getXXX的方法获得该字段值。
·实例代码
实例一代码如下(实现向数据库中的表添加数据的功能):
本程序共分为三个文件,add.jsp、show.jsp、Bean.java(封装在bean包中),add.jsp、show.jsp分别实现的功能是添加信息页面、输出全部信息页面,
add.jsp文件代码如下:
<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%>
<html>
<head>
<title>addGoods.jsp</title>
</head>
<body>
<h4>课程号是主键,不能重复,每个信息都必须输入!</h4>
<form action="show.jsp" method="post">
<table border="1">
<tr>
<td>课程号:</td>
<td><input type="text" name="CNo"/></td>
</tr>
<tr>
<td>课程名称:</td>
<td><input type="text" name="CN"/></td>
</tr>
<tr>
<td>教师姓名:</td>
<td><input type="text" name="TN"/></td>
</tr>
<tr>
<td>开课学期:</td>
<td><input type="text" name="KKXQ"/></td>
</tr>
<tr>
<td>课程学时:</td>
<td><input type="text" name="CT"/></td>
</tr>
<tr>
<td>课程学分:</td>
<td><input type="text" name="SC"/></td>
</tr>
<tr>
<td><input type="submit" value="添加"></td>
<td><input type="reset" value="重置"></td>
</tr>
</table>
</form>
</body>
</html>
show.jsp文件代码如下:
<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%>
<%@ page import="bean.Bean" %>
<html>
<head>
<title>show.jsp</title>
</head>
<body>
<%
request.setCharacterEncoding("GBK");
%>
<jsp:useBean id="goods" class="bean.Bean" scope="page"></jsp:useBean>
<jsp:setProperty property="*" name="goods"/>
<%
goods.addGoods();
%>
<jsp:getProperty property="queryResult" name="goods"/><!-- 获得查询结果 -->
</body>
</html>
Bean.java(封装在bean包中)文件代码如下:
package bean;
import java.sql.*;
public class Bean {
int CNo;
String CN;
String TN;
int KKXQ;
int CT;
int SC;
StringBuffer queryResult;//查询所有数据
StringBuffer queryResultBy;//根据条件查询所有数据
public Bean(){
}
public int getCNo() {
return CNo;
}
public void setCNo(int CNo) {
this.CNo = CNo;
}
public String getCN() {
return CN;
}
public void setCN(String CN) {
this.CN = CN;
}
public String getTN() {
return TN;
}
public void setTN(String TN) {
this.TN = TN;
}
public int getKKXQ() {
return KKXQ;
}
public void setKKXQ(int KKXQ) {
this.KKXQ = KKXQ;
}
public int getCT() {
return CT;
}
public void setCT(int CT) {
this.CT = CT;
}
public int getSC() {
return SC;
}
public void setSC(int SC) {
this.SC = SC;
}
//添加数据
public void addGoods(){
Connection con = null;
Statement st = null;
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=Teach","sa","数据库密码");
st=con.createStatement();
String addSql="insert into KC values("+CNo+",'"+CN+"','"+TN+"',"+KKXQ+","+CT+","+SC+")";
st.executeUpdate(addSql);
}catch (SQLException e) {
e.printStackTrace();
}finally{
try{
if(st!=null){
st.close();
}
if(con!=null){
con.close();
}
}catch (SQLException e) {
e.printStackTrace();
}
}
}
//获得所有数据信息
public StringBuffer getQueryResult(){
queryResult=new StringBuffer();
Connection con = null;
Statement st = null;
ResultSet rs=null;
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=Teach","sa","数据库密码");
st=con.createStatement();
//String selectSql="select * from KC where CN='计算机原理'";
String selectSql="select * from KC";
rs=st.executeQuery(selectSql);
queryResult.append("<table border=1>");
queryResult.append("<tr>");
queryResult.append("<th>CNo</th>");
queryResult.append("<th>CN</th>");
queryResult.append("<th>TN</th>");
queryResult.append("<th>KKXQ</th>");
queryResult.append("<th>CT</th>");
queryResult.append("<th>SC</th>");
queryResult.append("</tr>");
while(rs.next()){
queryResult.append("<tr>");
queryResult.append("<td>"+rs.getString(1)+"</td>");
queryResult.append("<td>"+rs.getString(2)+"</td>");
queryResult.append("<td>"+rs.getString(3)+"</td>");
queryResult.append("<td>"+rs.getString(4)+"</td>");
queryResult.append("<td>"+rs.getString(5)+"</td>");
queryResult.append("<td>"+rs.getString(6)+"</td>");
queryResult.append("</tr>");
}
queryResult.append("</table>");
}catch (SQLException e) {
e.printStackTrace();
}finally{
try{
if(rs!=null){
rs.close();
}
if(st!=null){
st.close();
}
if(con!=null){
con.close();
}
}catch (SQLException e) {
e.printStackTrace();
}
}
return queryResult;
}
//实现条件查询功能
public StringBuffer getQueryResultBy(){
queryResultBy=new StringBuffer();
Connection con = null;
Statement st = null;
ResultSet rs=null;
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=Teach","sa","数据库密码");
st=con.createStatement();
String selectSql="select * from KC where 1=1 ";
if(CN!=null&&CN.length()>0){
selectSql=selectSql+" and CN='"+CN+"' ";
}
if(CT>0){
selectSql=selectSql+" and CT>"+CT+" ";
}
if(TN!=null&&TN.length()>0){
selectSql=selectSql+" and TN='"+TN+"' ";
}
rs=st.executeQuery(selectSql);
queryResultBy.append("<table border=1 >");
queryResultBy.append("<table bgcolor=\"#ffffdd\" border=\"auto\"width=\"auto\" >");
queryResultBy.append("<tr>");
queryResultBy.append("<th>CNo</th>");
queryResultBy.append("<th>CN</th>");
queryResultBy.append("<th>TN</th>");
queryResultBy.append("<th>KKXQ</th>");
queryResultBy.append("<th>CT</th>");
queryResultBy.append("<th>SC</th>");
queryResultBy.append("</tr>");
while(rs.next()){
queryResultBy.append("<tr>");
queryResultBy.append("<td>"+rs.getString(1)+"</td>");
queryResultBy.append("<td>"+rs.getString(2)+"</td>");
queryResultBy.append("<td>"+rs.getString(3)+"</td>");
queryResultBy.append("<td>"+rs.getString(4)+"</td>");
queryResultBy.append("<td>"+rs.getString(5)+"</td>");
queryResultBy.append("<td>"+rs.getString(6)+"</td>");
queryResultBy.append("</tr>");
}
queryResultBy.append("</table >");
}catch (SQLException e) {
e.printStackTrace();
}finally{
try{
if(rs!=null){
rs.close();
}
if(st!=null){
st.close();
}
if(con!=null){
con.close();
}
}catch (SQLException e) {
e.printStackTrace();
}
}
return queryResultBy;
}
}
页面运行效果:
在addGoods页面输入添加的信息:
点击“添加”按钮后,页面跳转到show.jsp页面输出全部数据信息:
实例二代码如下(实现条件查询数据库中的表数据的功能):
本程序共分为三个文件,inputQuery.jsp、showin.jsp、Bean.java(封装在bean包中),inputQuery.jsp、showin.jsp分别实现的功能是输入查询信息页面、输出查询结果页面,
inputQuery.jsp文件代码如下:
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<html>
<head>
<title>inputQuery.jsp</title>
</head>
<body bgcolor="LightCyan">
<h4>输入查询条件!</h4>
<form action="showin.jsp" method="post">
<table border="1">
<tr>
<td>教师姓名:</td>
<td><input type="text" name="TN"/></td>
</tr>
<tr>
<td>课程学时大于:</td>
<td><input type="text" name="CT"/></td>
</tr>
<tr>
<td>课程名称:</td>
<td><input type="text" name="CN"/></td>
</tr>
<tr>
<td><input type="submit" value="查询"></td>
<td><input type="reset" value="重置"></td>
</tr>
</table>
</form>
</body>
</html>
showin.jsp文件代码如下:<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<%@ page import="bean.Bean" %>
<html>
<head>
<title>showGoods.jsp</title>
</head>
<body>
<%
request.setCharacterEncoding("GBK");
%>
<jsp:useBean id="goods" class="bean.Bean" scope="page"></jsp:useBean>
<jsp:setProperty property="*" name="goods"/>
<jsp:getProperty property="queryResultBy" name="goods"/><!-- 获得查询结果 -->
</body>
</html>
Bean.java(封装在bean包中)文件与实例一中相同,其中实现功能的函数是getQueryResultBy();
页面运行效果:
输入查询条件:教师姓名-‘涛哥’:
点击“查询”按钮后,页面跳转到showin.jsp页面输出查询结果: