java web与数据库建立联系并实现简单的增删查改

  我们想要对数据库进行操作,首先应该加载并注册驱动程序,然后创建操作对象。

  创建操作对象有两种方法:

(1)

Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQurey(sql);

由于第一种方法是先创建后获取地址,因此传输效率过低。

(2)

PreparedStatement pstmt=conn.prepareStatement(sql);

第二种方法是创建的同时获取地址,因此效率较高,所以我们多用第二种方法。

  我通过网址将这四种操作见得的链接为一个整体。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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>查询信息页面</title>
</head>
<body>
<form action="02a.jsp" method="post"><%//创建表单传输数据 %>
<p>请选择想要查询的分数范围</p>
<hr>
最低成绩: <input type="text" name="grade1"><br><br>
最高成绩: <input type="text" name="grade2"><br><br>
<input type="submit" value="提交信息">
</form><br>
<a href="http://localhost:8080/java第六周/01a.jsp">分数范围查询</a> <%//通过网页完成与其他三个页面的联通 %>
<a href="http://localhost:8080/java第六周/01b.jsp">插入信息</a> 
<a href="http://localhost:8080/java第六周/01c.jsp">序号删除</a> 
<a href="http://localhost:8080/java第六周/01d.jsp">修改成绩</a>
</body>
</html>

<%@ 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>输出信息页面</title>
</head>
<body>
<%
String driver="com.mysql.jdbc.Driver";
String url1="jdbc:mysql://localhost:3306/aaa";
String url2="?user=root&password=2411030483";
String url3="&useUnicode=true&characterEncoding=UTF-8";
String url=url1+url2+url3;
Class.forName(driver);
Connection conn=DriverManager.getConnection(url);//实现注册驱动并建立数据库的连接
String sql="select id,name,grade from biao1 where grade>=? and grade<=?;";//写出对数据库的操作语句,?表示占位符
%>
<%
if(!request.getParameter("grade1").equals(null)&&!request.getParameter("grade2").equals(null)){
String grade1=request.getParameter("grade1");//通过表单获取数据
String grade2=request.getParameter("grade2");
int gd1=Integer.parseInt(grade1);
int gd2=Integer.parseInt(grade2);//将数据转换为相应类型
PreparedStatement pstmt=conn.prepareStatement(sql);//对象
pstmt.setInt(1, gd1);//将第一个占位符赋值
pstmt.setInt(2, gd2);
ResultSet rs=pstmt.executeQuery();//执行select,返回一个结果集
rs.last();
%>
你要查询的共有<%=rs.getRow()%>人
<table border="2" width="650"><%//建立表格,显示数据 %>
<tr>
<td>记录条数</td>
<td>学号</td>
<td>姓名</td>
<td>分数</td>
</tr>
<%
rs.beforeFirst();//将信息放入表格
while(rs.next()){
%><tr>
<td><%=rs.getRow()%></td>
<td><%=rs.getString("id")%></td>
<td><%=rs.getString("name")%></td>
<td><%=rs.getInt("grade")%></td>
</tr>
<%} %>
</table>
<%
rs.close();//释放资源,后创建的先释放
pstmt.close();
conn.close();
}%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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>插入信息页面</title>
</head>
<body>
<p>请写入插入信息</p>
<hr>
<form action="02b.jsp" method="post"><%//创建表单传输数据 %>
序号: <input type="text" name="id_in"><br><br>
姓名: <input type="text" name="name_in"><br><br>
成绩: <input type="text" name="grade_in"><br><br>
<input type="submit" value="确认提交">
</form><br>
<a href="http://localhost:8080/java第六周/01a.jsp">分数范围查询</a> <%//通过网页完成与其他三个页面的联通 %>
<a href="http://localhost:8080/java第六周/01b.jsp">插入信息</a> 
<a href="http://localhost:8080/java第六周/01c.jsp">序号删除</a> 
<a href="http://localhost:8080/java第六周/01d.jsp">修改成绩</a>
</body>
</html>

<%@ 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>输出信息界面</title>
</head>
<body>
<%
String driver="com.mysql.jdbc.Driver";
String url1="jdbc:mysql://localhost:3306/aaa";
String url2="?user=root&password=2411030483";
String url3="&useUnicode=true&characterEncoding=UTF-8";
String url=url1+url2+url3;
Class.forName(driver);
Connection conn=DriverManager.getConnection(url);//实现注册驱动并建立数据库的连接
String sql2="insert into biao1(id,name,grade) values(?,?,?);";
%>
<%
PreparedStatement pstmt=conn.prepareStatement(sql2);//对象
request.setCharacterEncoding("UTF-8");//设置字符编码,避免乱码
String id_in=request.getParameter("id_in");
String name_in=request.getParameter("name_in");
String grade_in=request.getParameter("grade_in");//通过表单获取数据
int id_ins=Integer.parseInt(id_in);//将数据转换为相应类型
int grade_ins=Integer.parseInt(grade_in);
pstmt.setInt(1,id_ins);//将第一个占位符赋值
pstmt.setString(2,name_in);
pstmt.setInt(3,grade_ins);
int n=pstmt.executeUpdate();//执行insert,返回一个整数(即完成该操作的信息条数),该语句也可以完成delete语句与update语句
%>
<%
if(n>0) out.println("插入成功");
else out.println("插入失败");
%>
<%
pstmt.close();//释放资源,后创建的先释放
conn.close();
%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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>删除信息页面</title>
</head>
<body>
<p>请写入删除信息</p>
<hr>
<form action="02c.jsp" method="post"><%//创建表单传输数据 %>
序号: <input type="text" name="id2_in"><br><br>
<input type="submit" value="确认提交">
</form><br>
<a href="http://localhost:8080/java第六周/01a.jsp">分数范围查询</a> <%//通过网页完成与其他三个页面的联通 %>
<a href="http://localhost:8080/java第六周/01b.jsp">插入信息</a> 
<a href="http://localhost:8080/java第六周/01c.jsp">序号删除</a> 
<a href="http://localhost:8080/java第六周/01d.jsp">修改成绩</a>
</body>
</html>

<%@ 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>输出信息界面</title>
</head>
<body>
<%
String driver="com.mysql.jdbc.Driver";
String url1="jdbc:mysql://localhost:3306/aaa";
String url2="?user=root&password=2411030483";
String url3="&useUnicode=true&characterEncoding=UTF-8";
String url=url1+url2+url3;
Class.forName(driver);
Connection conn=DriverManager.getConnection(url);//实现注册驱动并建立数据库的连接
String sql3="delete from biao1 where id=?";
%>
<%
PreparedStatement pstmt=conn.prepareStatement(sql3);//对象
request.setCharacterEncoding("UTF-8");//设置字符编码,避免乱码
String id=request.getParameter("id2_in");//通过表单获取数据
int id2=Integer.parseInt(id);//将数据转换为相应类型
pstmt.setInt(1,id2);//将第一个占位符赋值
int n=pstmt.executeUpdate();//执行delete,返回一个整数(即完成该操作的信息条数)
%>
<%
if(n>0) out.println("删除成功");
else out.println("删除失败");
%>
<%
pstmt.close();//释放资源,后创建的先释放
conn.close();
%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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>修改信息页面</title>
</head>
<body>
<p>请写入修改信息</p>
<hr>
<form action="02d.jsp" method="post"><%//创建表单传输数据 %>
序号: <input type="text" name="id3_in"><br><br>
成绩: <input type="text" name="grade3_in"><br><br>
<input type="submit" value="确认提交">
</form><br>
<a href="http://localhost:8080/java第六周/01a.jsp">分数范围查询</a> <%//通过网页完成与其他三个页面的联通 %>
<a href="http://localhost:8080/java第六周/01b.jsp">插入信息</a> 
<a href="http://localhost:8080/java第六周/01c.jsp">序号删除</a> 
<a href="http://localhost:8080/java第六周/01d.jsp">修改成绩</a>
</body>
</html>

<%@ 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>输出信息界面</title>
</head>
<body>
<%
String driver="com.mysql.jdbc.Driver";
String url1="jdbc:mysql://localhost:3306/aaa";
String url2="?user=root&password=2411030483";
String url3="&useUnicode=true&characterEncoding=UTF-8";
String url=url1+url2+url3;
Class.forName(driver);
Connection conn=DriverManager.getConnection(url);//实现注册驱动并建立数据库的连接
String sql4="update biao1 set grade=? where id=?";
%>
<%
PreparedStatement pstmt=conn.prepareStatement(sql4);//对象
request.setCharacterEncoding("UTF-8");//设置字符编码,避免乱码
String id=request.getParameter("id3_in");
String grade=request.getParameter("grade3_in");//通过表单获取数据
int id3=Integer.parseInt(id);//将数据转换为相应类型
int grade3=Integer.parseInt(grade);
pstmt.setInt(1,grade3);//将第一个占位符赋值
pstmt.setInt(2,id3);
int n=pstmt.executeUpdate();//执行update,返回一个整数(即完成该操作的信息条数)
%>
<%
if(n>0) out.println("修改成功");
else out.println("修改失败");
%>
<%
pstmt.close();//释放资源,后创建的先释放
conn.close();
%>
</body>
</html>

  在我编写代码的过程中,总会跳出int n=pstmt.executeUpdate()出现错误,经过我的修改,最后发现是对数据库的操作和占位符的使用出现错误(即:String sql="......"),因此在此处应该自习自习再仔细。