目录
1. 理论
JSP是动态网页设计技术,动态网页离不开数据库的支持。
JSP支持各种数据库应用:Mysql、Oracle、Sql Server、DB2、Access...
在数据库中创建表的方法:①新建表 ②运行sql脚本 ③从excel导入
我们使用JDBC(Java DataBase Connectivity)来访问数据库
JDBC是Java核心类库的组成部分
JSP访问MySQL数据库,需要将JDBC驱动jar包,并放入项目的\WEB-INF\lib\文件夹中
JDBC常用接口、类介绍
Driver接口:每种数据库的驱动程序都提供一个实现该接口的类,应用程序必须首先加载它
Class.forName("com.mysql.jdbc.Driver"); //加载JDBC驱动器,不同数据库的JDBC驱动器不一样
DriverManager类:管理与特定数据库的连接
Connection接口类:Connection接口类对象是应用程序连接数据库的连接对象
该对象由DriverManager类的getConnection()方法提供
该对象主要作用是调用createStatement()来创建Statement语句对象
Statement接口:将sql语句发送到数据库中,并获取sql语句的结果
ResultSet接口:用于获取Statement语句对象执行sql语句返回的结果
JDBC访问数据库的步骤
①注册加载一个数据库驱动程序
②创建Connection
③创建语句对象Statement
④语句对象Statement执行sql语句
⑤处理执行sql后得到的数据
⑥关闭Connection连接等资源
2.实践---网上书店项目初步
数据库设计
列名 | 数据类型 | 备注 |
userId | int(11) | 用户ID |
loginname | varchar(20) | 用户名 |
passsword | varchar(10) | 密码 |
列名 | 数据类型 | 备注 |
isbn | varchar(20) | 书号 |
title | varchar(100) | 书名 |
editionNumber | int(11) | 版本号 |
copyright | varchar(4) | 版权号 |
publisherID | int(11) | 出版社ID |
imageFile | varchar(100) | 封面图片文件名 |
price | double | 图书单价 |
summary | varchar(200) |
内容简介 |
列名 | 数据类型 | 备注 |
publisherId | int(11) | 出版社ID |
publisherName | varchar(30) | 出版社名称 |
列名 | 数据类型 | 备注 |
orderId | int(11) | 订单ID |
userName | varchar(20) | 用户名 |
zipcode | varchar(8) | 邮编 |
phone | varchar(20) | 联系电话 |
creditcard | varchar(20) | 信用卡号 |
total | double | 合计金额 |
列名 | 数据类型 | 备注 |
authorId | int(11) | 作者ID |
firstName | varchar(20) | 作者姓 |
lastName | varchar(30) | 作者名 |
列名 | 数据类型 | 备注 |
id | int(11) | ID |
balance | double | 余额 |
creditcard | varchar(10) | 信用卡号 |
我这里用的是导入sql脚本的方式来创建数据库(sql脚本可去我的项目根目录下的dataBase文件夹下去找)
利用JDBC访问图书表
①创建bookstore项目
②导入jdbc驱动jar包,并放入项目的\WEB-INF\lib\文件夹中
③创建listTitles.jsp(需要import sql.*)
④将bookstore项目发布到tomcat上,启动tomcat
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决办法(如果确实已经导入了mysql-connector-java-8.0.26.jar包):关闭tomcat再重启试试
WebRoot/test/listTitles.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="java.sql.*" %>
<!DOCTYPE HTML>
<html>
<body>
<table>
<tr><td>ISBN</td><td>书名</td><td>版本</td><td>出版时间</td><td>价格</td></tr>
<%
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/books?useUnicode=true&characterEncoding=UTF-8";
Connection dbCon = DriverManager.getConnection(url, "root", "123456");
Statement stmt = dbCon.createStatement();
ResultSet rs = stmt.executeQuery("select * from titles");
while(rs.next()) {
%>
<tr bgcolor="cyan">
<td><%=rs.getString(1)%></td>
<td><%=rs.getString(2)%></td>
<td><%=rs.getInt("editionNumber")%></td>
<td><%=rs.getInt(4)%></td>
<td><%=rs.getDouble("price")%></td>
</tr>
<%}
rs.close();
stmt.close();
dbCon.close();
%>
</table>
</body>
</html>
效果(确保MySQL已经启动)