清壶一杯酒 2024-06-11 18:33 采纳率: 83.3%
浏览 4
已结题

用myeclipse添加不了数据

<%@ page language="java" import="java.sql.*" contentType="text/html; charset=gb2312"%>

              查询学生信息<br>
   <form method="post">
                请输入学生姓名:<input type ="text" name="stuname"><br>
   <input type ="submit" value="查询">
    </form>

    <%request.setCharacterEncoding("gb2312"); %>
    <%  
      //  String stuname=request.getParameter("stuname");
      //  if(stuname!=null){
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/school?useUnicode=true&characterEncoding=UTF-8","root","123456");
            PreparedStatement stat=null;
            ResultSet rs=null;
        //String sql="SELECT * FROM t_student where stuname like '%"+stuname+"%'";
        String sql="INSERT INTO t_student(stuno,stuname,stusex,password)values('1','2','3','4')";   
            stat=conn.prepareStatement(sql);
            //rs=stat.executeQuery();
            //while(rs.next()){
            //    String stuno=rs.getString(1);
            //    String stuname1=rs.getString(2);
            //    String stusex=rs.getString(3);
            //    out.println(stuno+" " +stuname1+" "+stusex+"<br>");
            //    }
                 stat.close();
                conn.close();
    // }
           
    %>
  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-06-11 18:33
    关注

    引自免费微信小程序:皆我百晓生

    从你提供的代码来看,你正在尝试使用MyEclipse进行数据库操作,具体是向数据库中插入一条记录。然而,你遇到了一些问题。以下是针对你代码中可能存在的问题以及如何解决这些问题的详细步骤:

    问题分析

    1. 编码设置:你使用了gb2312编码,这在中文环境中有时会导致乱码问题。更推荐使用UTF-8编码。
    2. 错误处理:你的代码没有处理可能出现的异常,比如数据库连接失败、SQL执行失败等。
    3. 资源关闭方式:使用try-with-resources语句可以自动关闭资源,避免资源泄露。
    4. SQL注入风险:硬编码SQL语句可能会导致SQL注入攻击,应该使用参数化查询。

    解决方案

    首先,修改你的JSP文件中的编码设置为UTF-8,并确保整个项目都使用UTF-8编码。

    然后,修改你的数据库操作代码如下:

    <%
        // 设置请求编码
        request.setCharacterEncoding("UTF-8");
    
        // 数据库连接信息
        String url = "jdbc:mysql://localhost:3306/school?useUnicode=true&characterEncoding=UTF-8";
        String user = "root";
        String password = "123456";
    
        try (Connection conn = DriverManager.getConnection(url, user, password);
             PreparedStatement stat = conn.prepareStatement(
                 "INSERT INTO t_student(stuno, stuname, stusex, password) VALUES (?, ?, ?, ?)")) {
    
            // 设置参数值
            stat.setString(1, "1");
            stat.setString(2, "2");
            stat.setString(3, "3");
            stat.setString(4, "4");
    
            // 执行SQL
            int rowsAffected = stat.executeUpdate();
    
            if (rowsAffected > 0) {
                out.println("数据插入成功!");
            } else {
                out.println("数据插入失败!");
            }
    
        } catch (Exception e) {
            // 异常处理
            out.println("发生错误:" + e.getMessage());
            e.printStackTrace();
        }
    %>
    

    注意事项

    1. 异常处理:上面的代码中使用了catch块来捕获并处理可能出现的异常,这样可以避免程序因未处理的异常而崩溃。
    2. 资源管理:通过try-with-resources语句,可以确保ConnectionPreparedStatement对象在使用完毕后被正确关闭。
    3. 安全性:使用参数化查询可以有效防止SQL注入攻击。

    按照上述修改后的代码,你应该能够成功地向数据库中添加数据。如果还有其他问题,比如数据库配置、驱动类路径等,也需要检查是否正确设置。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月18日
  • 创建了问题 6月11日