《JSP Web开发基础教程》 期末上机考数据库连接速通!(sqlite) SQLite连接数据库


前言

本来我是录了一个视频 手敲代码 这个链接数据库示例的 但 录完之后我发现 声音有点问题!! 全瑕 !

所以我撰写了此文档。文档的描述相较于视频讲解可能不够详尽,但相关代码均已涵盖。若文档中有表述欠佳之处,还望海涵,后续我会进行修改完善。

一、读题目(依据图片内容明确任务要求)

二、步骤

打开数据库管理工具 创建表和数据库

依照图片中的详细信息创建数据库。(具体操作为:首先新建 sqlite 连接,随后依据表名创建对应的数据库类。)

新建sqlite连接 并按照表名创建数据库类



完成上述数据库相关操作后,打开 eclipse 创建一个 web 项目,并着手编写页面 jsp 以及需要跳转至的结果 jsp 页面。

创建页面和java文件

创建index.jsp页面 (此页面主要构建了一个包含商品 ID、名称和库存输入框的表单,表单提交的目标是 “StockServlet”,提交方式为 post。)


Index page
	首页
	
	请输入商品ID:
	请输入商品名称:
	请输入商品库存:
	
	

创建result.jsp页面(该页面用于展示库存操作的结果信息,包括从请求中获取的 message、productID、productName 和 productStock 等信息,并提供了返回 index.jsp 页面的链接。)


 库存操作结果
 操作结果
 ${message}
 产品ID:${productID}
 产品名称:${productName}
 产品库存:${productStock}
 返回录入页面

接着写我们的数据库连接 封装到DataBase包里面 里面有两个方法 链接数据库和关闭数据库(在 Database 包中的 DatabaseHelper 类实现了数据库连接与关闭的功能。)

package Database;
import java.sql.*;
public class DatabaseHelper {
 // 定义SQLite数据库驱动程序的类名。
 private static final String DRIVER_CLASS = "org.sqlite.JDBC";
 
 // 定义数据库的URL路径,指向本地磁盘上的SQLite数据库文件。
 private static final String DATABASE_URL = "jdbc:sqlite:D:\\product.db";
 
 // 用于保存当前数据库连接的对象,静态声明意味着该连接可以在所有实例间共享。
 private static Connection con = null;
 
 /**
 * 尝试建立与SQLite数据库的连接。
 * @return 返回一个表示数据库连接的对象,如果连接失败则返回null。
 */
 public Connection dbcon() {
 try {
 // 加载指定的JDBC驱动程序。
 Class.forName(DRIVER_CLASS);
 
 // 使用DriverManager获取数据库连接。
 con = DriverManager.getConnection(DATABASE_URL);
 
 // 返回建立的数据库连接。
 return con;
 } catch (ClassNotFoundException e) {
 // 如果找不到驱动程序类,则打印信息并返回null。
 e.printStackTrace();
 return null;
 } catch (SQLException e) {
 // 如果发生SQL异常(如无法建立连接),则打印堆栈跟踪信息并返回null。
 e.printStackTrace();
 return null;
 }
 }
 
 /**
 * 关闭与数据库的现有连接。
 */
 public void closeDB() {
 if (con != null) {
 try {
 // 尝试关闭数据库连接。
 con.close();
 } catch (SQLException e) {
 // 如果关闭连接时发生SQL异常,则打印堆栈跟踪信息。
 e.printStackTrace();
 }
 // 设置连接对象为null,确保资源被正确释放。
 con = null;
 }
 }
}

接着我们建一个servlet包 (在 sevlet 包中的 StockServlet 类用于处理来自 index.jsp 页面的 post 请求。)

package sevlet;
import java.io.IOException;
import java.sql.*;
import Database.DatabaseHelper;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@WebServlet("/StockServlet")
public class StockServlet extends HttpServlet {
 @Override
 protected void doPost(HttpServletRequest request, HttpServletResponse response) {
 // 从HTTP请求中获取产品ID、名称和库存参数。
 String productID = request.getParameter("productID");
 String productName = request.getParameter("productName");
 String productStock = request.getParameter("productStock");
 // 创建DatabaseHelper实例以帮助与数据库交互。
 DatabaseHelper dbhelp = new DatabaseHelper();
 
 // 尝试建立数据库连接。
 Connection con = dbhelp.dbcon();
 PreparedStatement prst = null;
 ResultSet rs = null;
 // 定义SQL查询语句,用于检查指定的产品ID是否存在于数据库中。
 String selectsql = "select * from TblProduct where productID=?";
 try {
 // 准备并执行SQL查询。
 prst = con.prepareStatement(selectsql);
 prst.setString(1, productID);
 rs = prst.executeQuery();
 // 如果找到了对应的产品ID,则更新该产品的信息。
 if (rs.next()) {
 rs.close(); // 关闭结果集。
 // 更新产品的名称和库存。
 String updateSql = "update TblProduct set productName=?, productStock=? where productID=?";
 prst = con.prepareStatement(updateSql);
 prst.setString(1, productName);
 prst.setString(2, productStock);
 prst.setString(3, productID);
 prst.executeUpdate();
 
 // 设置成功消息为“库存更新成功”。
 request.setAttribute("message", "库存更新成功");
 } else {
 // 如果未找到产品ID,则插入新记录。
 String insertSql = "insert into TblProduct(productID, productName, productStock) values(?, ?, ?)";
 prst = con.prepareStatement(insertSql);
 prst.setString(1, productID);
 prst.setString(2, productName);
 prst.setString(3, productStock);
 prst.executeUpdate();
 
 // 设置成功消息为“库存插入成功”。
 request.setAttribute("message", "库存插入成功");
 }
 // 将产品信息设置到请求属性中,以便在JSP页面中使用。
 request.setAttribute("productID", productID);
 request.setAttribute("productName", productName);
 request.setAttribute("productStock", productStock);
 } catch (SQLException e) {
 // 捕获并打印SQL异常的堆栈跟踪。
 e.printStackTrace();
 } finally {
 // 确保无论发生什么情况,都关闭数据库资源。
 try {
 if (rs != null) rs.close();
 if (prst != null) prst.close();
 if (con != null) con.close();
 } catch (SQLException e) {
 // 捕获并打印关闭资源时发生的SQL异常。
 e.printStackTrace();
 }
 }
 // 转发请求和响应到结果页面(result.jsp)。
 try {
 request.getRequestDispatcher("result.jsp").forward(request, response);
 } catch (ServletException | IOException e) {
 // 捕获并打印转发请求时发生的异常。
 e.printStackTrace();
 }
 }
}

然后我们运行项目 就成功了!!! 可以进行数据库的增改查!


编写上面代码需要注意的问题(写一下我容易出错的地方)

写数据库帮助类时注意不要打错这两个 特别是下面有前缀jdbc:sqlite开头:

private static final String DRIVER_CLASS = "org.sqlite.JDBC";
 private static final String DATABASE_URL = "jdbc:sqlite:D:\\product.db";

try-catch语句可以由ecilpse提示补充 可以不用手打

务必记得导入 sqlite 驱动包,否则将无法正常连接和操作 SQLite 数据库。


总结

本文主要是使用JSP+servlet对SQLite数据库进行操作 可以拿这个进行练手 当然这个有很多种方法写 这只是其中一种
下面我提供一个使用实体类mvc的视频 使用的是mysql数据库 可以看一下 我和实验室的朋友一起弄得两个版本
友情链接(bilibili)速通JavaWeb MySQL+MVC版

作者:LWENBiN8668原文地址:https://blog.csdn.net/2303_79770314/article/details/144639092

%s 个评论

要回复文章请先登录注册