目录
在JavaWeb页面中,JDBC是后台处理的重要部分。本文讲一些JDBC的干货及前端页面获取后台数据的基本操作。
java接数据库模板
首先下载好跟数据库相同版本的JDBC驱动程序,这里用的是mysql8.0,然后配置进工程项目里。
然后,套模板。
Class.forName("com.mysql.cj.jdbc.Driver");括号里为接的驱动类。
🍗mysql 8为com.mysql.cj.jdbc.Driver,mysql 5为com.mysql.jdbc.Driver
🍗sqlserver为com.microsoft.jdbc.sqlserver.SQLServerDriver
jdbc的url格式为jdbc:数据库://hostname:端口号/dbname。
其中,hostname可以是localhost或127.0.0.1,如果要连接数据库到其它计算机,hostname为连接计算机的IP,port是连接数据库的端口号。
🍖jdbc:mysql://localhost:3306/dbname?serverTimezone=UTC
🍖jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=dbname
dbname是你要操作的数据库的名称这里自行改。serverTimezone=UTC是时区设定,新一点的版本需要加serverTimezone可以写UTC也可以是GMT%2B8。
然后用户名登陆密码这些选个好记一点的。
Connection连接后,接着是Statement对象传递数据库的参数,这里注意一下为防止sql注入,最好用PreparedStatement预编译,格式上会与Statement稍有不同。
ResultSet对象用来处理结果集,通过while循环遍历,ResultSet对象的next()方法用于将光标移动到结果集的下一行,并返回一个布尔值,表示是否还有更多的行可用。每次迭代循环时,光标都会移动到结果集中的下一行,直到没有更多的行为止。
最后,关闭数据库连接,释放资源。
Class.forName("com.mysql.cj.jdbc.Driver");
//String url = "jdbc:mysql://localhost:3306/dbjsp?serverTimezone=UTC";//数据库的url地址
// String user = "root";//用户名
// String password = "root";//登录密码
//Connection con = DriverManager.getConnection(url, user, password);
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db?serverTimezone=UTC","root","root");
// Statement st=con.createStatement();
// String s="select stu_id from student";
// ResultSet rs=st.executeQuery(s);//执行查询
//防止sql注入,用PreparedStatement预编译
String query = "SELECT * FROM student ";
PreparedStatement pst = con.prepareStatement(query);//预编译
ResultSet rs = pst.executeQuery();//执行查询
while(rs.next()){//遍历获取结果集
int stuid=rs.getInt("stu_id");
System.out.println(stuid);
}
con.close();
pst.close();
rs.close();
数据库建表
1.新增数据库DBJsp,新增一张表student,包含身份证号、学号、姓名、年龄和性别等字段,并为student表添加一些记录。
首先,建立数据库,数据库管理工具很多,但其实基本都是在登录用户名那里点击新建或者找到数据库的小图标进行新建。
可以直接在数据库可视化管理工具进行点击新建表设计表等。
也可以对着新建的库写语句新建表。
CREATE TABLE `dbjsp`.`student` (
`id` int NOT NULL,
`pId` varchar(32) NOT NULL,
`no` varchar(32) NOT NULL,
`name` varchar(20) NULL,
`sex` varchar(4) NULL,
`birthdate` datetime NULL,
PRIMARY KEY (`id`)
)
然后在表里写入数据,可以在界面直接写,跟excel差不多,也可以用语句。
这样一个大致的表就有了,如果数据库语句不太记得的,可以点数据库基础篇进行复习。
JSP获取数据库内容以表格展示
2.编写一个JSP展示页面,能够通过数据库获取student表的信息,并使用表格展示表中所有的记录信息。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.sql.*" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<table border="1">
<tr>
<th>id</th>
<th>pId</th>
<th>no</th>
<th>name</th>
<th>sex</th>
<th>birthdate</th>
</tr>
<%
Class.forName("com.mysql.cj.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbjsp?serverTimezone=UTC","root","123");
String query = "SELECT * FROM student ";
PreparedStatement pst = con.prepareStatement(query);
ResultSet rs = pst.executeQuery();//执行查询
while(rs.next()){//遍历获取
int id=rs.getInt("id");
String pId = rs.getString("pId");
String no = rs.getString("no");
String name = rs.getString("name");
String sex = rs.getString("sex");
Timestamp birthdate = rs.getTimestamp("birthdate");
%><tr>
<td> <%= id %></td>
<td> <%= pId %></td>
<td> <%= no %></td>
<td> <%= name %></td>
<td> <%= sex %></td>
<td> <%= birthdate %></td>
</tr>
<% }
con.close();
pst.close();
rs.close();
%>
</table>
</body>
</html>
最好处理一下异常,这里省了点哈。
JSP查询页面
3.编写一个JSP查询页面,能够通过指定条件实现精确及模糊查询数据库获取student表的信息,并使用表格展示表中所有的记录信息。如果查询不到满足条件的记录,显示“查无此人”。
这题运用了jsp的request与preparedStatement的setstring进行传参,getstring与上题类似,就直接搬运了,大家也可以自行发挥。注意一下模糊查询的like,setstring要加"_"或"%"。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>查询</h1>
<form action="display.jsp" method="post">
<label>学号:</label>
<input type="text" name="id">
<label>姓名:</label>
<input type="text" name="name1">
<input type="submit" value="查询">
</form>
<h1>查询结果</h1>
<table border="1">
<tr>
<th>id</th>
<th>pId</th>
<th>no</th>
<th>name</th>
<th>sex</th>
<th>birthdate</th>
</tr>
<%
request.setCharacterEncoding("UTF-8");
String studentId = request.getParameter("id");
String stuname = request.getParameter("name1");
// 数据库连接信息
String url = "jdbc:mysql://localhost:3306/dbjsp?serverTimezone=UTC";
String user = "root";
String password = "123456";
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection(url, user, password);
String sql = "SELECT * FROM student WHERE id=? and name like ?";
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, studentId );
pst.setString(2, "%"+stuname+"%");
ResultSet rs = pst.executeQuery();
// 检查结果集是否有数据
if (rs.next()) {
do {
int id = rs.getInt("id");
String pId = rs.getString("pId");
String no = rs.getString("no");
String name = rs.getString("name");
String sex = rs.getString("sex");
Timestamp birthdate = rs.getTimestamp("birthdate");
%>
<tr>
<td><%= id %></td>
<td><%= pId %></td>
<td><%= no %></td>
<td><%= name %></td>
<td><%= sex %></td>
<td><%= birthdate %></td>
</tr>
<%
} while (rs.next());
} else {
out.println("查无此人");
}
// 关闭资源
rs.close();
pst.close();
conn.close();
} catch (Exception e) {
out.println("查询出错:" + e.getMessage());
}
%>
</table>
</body>
</html>
实验心得
很多东西都是仅供参考。会的越多,不会的越多,抓稳优势点吧。