随看随点赞,养成好习惯 2022-10-06 15:42 采纳率: 61.5%
浏览 81
已结题

如何解决数据库执行预编译语句爆红问题

问一下,怎么解决PreparedStatement 执行另一条sql语句爆红的问题。
写java代码时,我连接数据库,使用PreparedStatement 执行预编译语句,PreparedStatement 执行的sql语句不能修改吗?
按理说,sql是String类型,我改了呀,可是ps执行时还是会爆红。

img


String sql = "select 1 from userinfo where username=?";
            PreparedStatement ps = connection.prepareStatement(sql);
            ps.setString(1,username);
            ResultSet rs = ps.executeQuery();
            if(rs.next()){
                response.sendRedirect("/reg_have_to_login.html");
                return;
            }
            ps.close();
            sql = "insert into userinfo values (null,?,?,?,?)";
            ps = connection.prepareStatement(sql);
            ps.setString(1,username);
//这里就报红了,虽然仍然能执行,但是一直红在这不好
            ps.setString(2,password);
            ps.setString(3,nickname);
            ps.setInt(4,age);
            int num = ps.executeUpdate();

尝试解决
创建新的变量,新的对象,执行就没问题,难道只能这样吗,这样每一条语句都要新建,太麻烦了

img

  • 写回答

1条回答 默认 最新

  • 心寒丶 全栈领域优质创作者 2022-10-06 16:03
    关注

    重新声明一个String

    img


    比如

     String sql = "select 1 from userinfo where username=?";
            PreparedStatement ps = connection.prepareStatement(sql);
            ps.setString(1,username);
            ResultSet rs = ps.executeQuery();
            if(rs.next()){
                response.sendRedirect("/reg_have_to_login.html");
                return;
            }
            ps.close();
            String sql1 = "insert into userinfo values (null,?,?,?,?)";
            ps = connection.prepareStatement(sql1);
            ps.setString(1,username);
            ps.setString(2,password);
            ps.setString(3,nickname);
            ps.setInt(4,age);
            int num = ps.executeUpdate();
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 10月14日
  • 已采纳回答 10月6日
  • 修改了问题 10月6日
  • 创建了问题 10月6日

悬赏问题

  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同