鱼C论坛

 找回密码
 立即注册
查看: 531|回复: 3

这段连接数据库的代码有什么问题

[复制链接]
发表于 2023-5-31 13:46:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
<%@ page import="java.sql.*" %>
<%
// 获取表单中的商品信息
String name = request.getParameter("name");
double price = Double.parseDouble(request.getParameter("price"));
int quantity = Integer.parseInt(request.getParameter("quantity"));

// 将商品信息保存到数据库中
String url = "jdbc:mysql://localhost:3306/111";
String user = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, user, password);
String sql = "INSERT INTO products (name, price, quantity) VALUES (?, ?, ?)";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, name);
stmt.setDouble(2, price);
stmt.setInt(3, quantity);
stmt.executeUpdate();
stmt.close();
conn.close();
%>
<!DOCTYPE html>
<html>
<head>
        <title>保存成功</title>
</head>
<body>
        <h1>保存成功</h1>
        <p>商品名称: <%= name %></p>
        <p>单价: <%= price %></p>
        <p>数量: <%= quantity %></p>
</body>
</html>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-31 13:55:37 | 显示全部楼层
这段代码在一般情况下应该可以正常工作,它将从前端表单获取的商品信息保存到数据库中。但是有几个关键点需要注意:

1. 错误处理:在代码中,如果在数据库操作过程中出现错误,这些错误将不会被正确处理。例如,如果无法连接到数据库,或者数据库操作失败,都会导致程序中断并抛出异常。你应该将数据库操作放入 try-catch 语句中,并适当地处理任何可能出现的 SQLException。

2. SQL 注入:虽然你使用的 PreparedStatement 可以防止 SQL 注入,但如果你在其他地方也使用 SQL 查询,并直接插入用户输入,那么仍然可能发生 SQL 注入。确保你在整个应用程序中都使用 PreparedStatement 或其他防止 SQL 注入的方法。

3. 数据库连接关闭:虽然你已经在代码中关闭了数据库连接,但这是在主程序流程中,如果在前面的数据库操作过程中出现异常,那么这段关闭数据库连接的代码将不会被执行。正确的做法是在 finally 语句块中关闭数据库连接,这样无论是否出现异常,数据库连接都能够被关闭。

4. 硬编码敏感信息:数据库的 URL、用户名和密码都是硬编码在代码中的,这是一种不安全的做法。你应该将这些敏感信息保存在一个安全的地方,例如环境变量或配置文件中,然后在程序中读取。

5. 加载数据库驱动:从 Java 6 开始,不需要手动加载 JDBC 驱动。但如果你使用的是更旧的 Java 版本,或者数据库需要特殊的 JDBC 驱动,你可能需要添加如下代码: Class.forName("com.mysql.jdbc.Driver");

6. 未加载数据库驱动:如果使用的是更旧的 JDBC 版本或者使用的是其他数据库系统,可能需要显示地加载数据库驱动类。例如,使用  Class.forName("com.mysql.jdbc.Driver") 。

总的来说,你的代码在基本的数据库操作上是正确的,但在错误处理、安全性和稳健性方面还有待改进。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-31 18:03:27 | 显示全部楼层
这段代码存在两个问题:

1. 安全问题:使用 request.getParameter() 方法获取用户输入的值,然后直接将这些值插入到 SQL 语句中,容易受到 SQL 注入攻击。建议使用数据验证和过滤器来防止这种攻击。
2. 可维护性问题:在 JSP 中编写 Java 代码会导致代码混乱不堪,难以维护和调试。应该考虑使用 Javabeans 模型或者 Spring MVC 等框架来分离业务逻辑和展示逻辑。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-6-13 11:14:12 | 显示全部楼层
看报错哇
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 18:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表