数据库连接——网页查询数据(内嵌)
在前面已经完成了数据库的连接测试,证明我们的系统环境以及eclipse的环境配置没有问题可以实现与数据库的链接,接下来我们就开始进行在网页实现一个界面来完成对数据库的增删改查。
首先我们在写之前要明白大概的一个思路,以及这个程序的流程:
我们要实现在网页上对数据库进行操作,第一肯定要有一个页面,第二页面能获取我们键盘输入的数据,第三页面获取的数据传回来,第四实现数据库的链接,第五数据库返回数据。
这五个方面就是我们要解决的五个问题。
首先新建一个javaweb文件,然后我们需要在webapp目录下面的lib目录下导入我们昨天的下载的MySQLjar包,这点很重要,上一次我们完成测试的时候是仅仅建立了一个Java文件,所以
MySQLjar包建立的位置不太一样,在这次的链接中我们要建立一个jsp文件。我们连接数据库在网页进行查询操作有两种方式,一种是jsp文件内嵌,另一种是jsp文件和Java文件链接
jsp内嵌:
导入之后我们在webapp目录下右键new一个jsp文件
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>
<form action="" method="get">
<table align="center" border="1" width="500">
<tr>
<td>课程查询: </td>
<td>
<input type="text" name="classname"/> //从网页获取课程查询是查询的课程名称
</td>
</tr>
<tr>
<td>教师:</td>
<td>
<input type="text" name="teacher"/> //获取教师姓名进行查询
</td>
</tr>
<tr align="center">
<td colspan="2">
<input type="submit" value="查询"/>
<input type="button" onclick="window.location.href='one_1.jsp';" value="返回主页"/> //这句话是跳转网页的语句
</td>
</tr>
</table>
</form>
<%
request.setCharacterEncoding("UTF-8");
//可以将网页输入的中文字符转化成utf8形式的编码传入数据库,如果在查询过程中发现数据库连接成功却没有输出原因就在这里,穿进去的中文字符不能被识别所以数据库不会返回任何东
西,就像陕西人听不懂温州话那样但如果把温州话翻译成普通话那就全中国的人都能懂,普通话就相当于这个utf8标准的编码。
String name = request.getParameter("teacher");
//这里是定义两个变量获取网页的输入框的内容
String name1 = request.getParameter("classname");
if(true){
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1?seUnicode=true&characterEncoding=UTF-8","root","13666871023");
Statement st = conn.createStatement();
//这块是连接数据库,上面括号里的三部分分别代表着(’地址‘,‘用户名’,’密码‘)
//其中在地址这块不完全是地址 ”jdbc:mysql://localhost:3306/“这部分就是固定的本机地址 ”db1“代表我要链接的数据库的名称
ResultSet rs = st.executeQuery("select * from classlist where teacher ='" + name + "' or classname='"+name1+"'");//sql语句部分进行查询
out.print("<table border='1' align='center'>");
while (rs.next()) {
//rs.next()是返回的一个布尔型的数组,为什说是一个数组呢,因为我们的数据库中数据有很多地方是一样的,比如我们查询的课程名称肯定有相同的但其他地方不同的所以返回数据不只一
//条,用这个rs.next()来村他查询每一条数据时到底符不符合条件符合条件的就执行下面的语句将他打印出来
//还有一点这个rs.next()是一个一次性的东西,他只能被用一次,只要调用一次后他的值就会被改变所以我们在前面没有进行输出,在后面在while使用了一次
out.print("<tr>");
//这里的打印括号里面的名称要与数据库中的名称一模一样,
out.print("<td>" + rs.getString("classname") + "</td>");
out.print("<td>" + rs.getString("teacher") + "</td>");
out.print("<td>" + rs.getString("day") + "</td>");
out.print("<td>" + rs.getString("classtime") + "</td>");
out.print("<td>" + rs.getString("palce") + "</td>");
out.print("</tr>");
}
out.print("</table>");
rs.close();
st.close();
conn.close();//我们连接了数据库一定要进行关闭。
}
else{
out.print("<center><h4>请输入查询的姓名!</h4></center>");
}
%>
</body>
</html>
所有要点以及要注意要修改的地方在代码后进行了标注,在复制时删除才可运行jsp文件的注释跟java文件不同我在这里简写为//,在复制代码时请自行删除。