JavaWeb——找了1个多小时才发现的错误。。

文章讨论了一个Javaweb应用程序中遇到的问题,包括如何正确加载db.properties配置文件以避免500错误,使用jdbcUtil获取数据库连接,以及在更新用户信息时遇到的SQL语句问题。同时提到了解决数据库乱码的方法,即设置请求编码为utf-8。
摘要由CSDN通过智能技术生成

如果只是跟着课本敲,那就肯定报错了

好久没碰有点生疏了

之前敲过一个类似的加载properties的文件的方法,直接把课本的这个改成这个就可以解决500的错误了

注释的地方是行不通的错误代码!!!

注释下边这个没问题,记得路径改成绝对路径!!!

package com.sun.web.utils;

import java.io.FileInputStream;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;

public final class jdbcUtil {

    private static String driver;
    private static String url;
    private static String user;
    private static String password;
    private static Properties pr = new Properties();

    public jdbcUtil() {
    }

    static {
        try {
            pr.load(new FileInputStream("E:\\IDEA_SAVE\\javaweb_ laboratory_course\\src\\db.properties"));
//            pr.load(jdbcUtil.class.getClassLoader().getResourceAsStream("E:\\IDEA_SAVE\\javaweb_ laboratory_course\\src\\db.properties"));
        } catch (IOException e) {
            e.printStackTrace();
        }
        driver = pr.getProperty("driver");
        url = pr.getProperty("url");
        user = pr.getProperty("user");
        password = pr.getProperty("password");
        try {
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public static Connection getConn() throws Exception {
        return DriverManager.getConnection(url, user, password);
    }

    public static void free(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet) throws Exception {
        if (resultSet != null) resultSet.close();
        if (preparedStatement != null) preparedStatement.close();
        if (connection != null) connection.close();
    }


}

针对添加信息不成功的问题,原因在于sql语句的问题,因为是固定的,id不能改动,所以修改id的时候,sql语句就执行不了了。

    public void update(User user) throws Exception {
        Connection conn = jdbcUtil.getConn();
        String sql = "update user set username=?,sex=? where userid=?";
        PreparedStatement preparedStatement = conn.prepareStatement(sql);
        preparedStatement.setString(1, user.getUsername());
        preparedStatement.setString(2, user.getSex());
        preparedStatement.setString(3, user.getUserid());
        int n=preparedStatement.executeUpdate();
        System.out.println(n);
        jdbcUtil.free(conn, preparedStatement, null);
    }

记得加上解决数据库乱码的问题

request.setCharacterEncoding("utf-8");

    request.setCharacterEncoding("utf-8");
    String bh = request.getParameter("userid3");
    String xm = request.getParameter("username3");
    String xb = request.getParameter("sex3");

    System.out.println(bh+xm+xm);
    User u = new User(bh, xm, xb);
    UserDao dao = new UserDao();
    dao.update(u);
    List<User> users = dao.QueryAll();
    request.setAttribute("user_list", users);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暗紫色的乔松(-_^)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值