java的sql语句列名条件是变量的写法


//随机获取10个目标图片、7个其他类型图片
        int []a=new int[17];
        String str1="type";
        try{
            String quary="SELECT * FROM caoyao WHERE ?=?";
            PreparedStatement pstmt=con.prepareStatement(quary);
            pstmt.setString(1,str1);
            pstmt.setString(2,Type[n]);
            con.prepareStatement(quary,ResultSet.TYPE_SCROLL_SENSITIVE,
                    ResultSet.CONCUR_READ_ONLY);
            rs =pstmt.executeQuery();
            int r=0;
            while (rs.next()){
                a[r++]=rs.getInt(1);
                String name1=rs.getString(2);
                String type1=rs.getString(3);
                String path1=rs.getString(4);
            }
            rs.last();
            int max0 = rs.getRow();
            int num0,k;
            for (k=0;k<10;k++) {
                num0 = (int) (Math.random() * max0 + 1);
                rs.absolute(num0);
                a[k]=rs.getInt(1);
            }
            quary="SELECT * FROM caoyao WHERE ?!=?";
            pstmt=con.prepareStatement(quary);
            pstmt.setString(1,str1);
            pstmt.setString(2,Type[n]);
            con.prepareStatement(quary,ResultSet.TYPE_SCROLL_SENSITIVE,
                    ResultSet.CONCUR_READ_ONLY);
            rs =pstmt.executeQuery();
            r=0;
            while (rs.next()){
                a[r++]=rs.getInt(1);
                String name1=rs.getString(2);
                String type1=rs.getString(3);
                String path1=rs.getString(4);
            }
            rs.last();
            max0=rs.getRow();
            for (;k<17;k++) {
                num0 = (int) (Math.random() * max0 + 1);
                rs.absolute(num0);
                a[k]=rs.getInt(1);
            }
            for (int i=0;i<a.length-1;i++){
                int random=(int)(Math.random()*(a.length-i));
                int last=a[a.length-1-i];
                a[a.length-1-i]=a[random];
                a[random]=last;
            }
            con.close();
        } catch(SQLException e) {
            System.out.println(e);
        }

只进结果集不支持请求操作怎么解决啊,怎么实现sql语句where列名条件是变量?

img

直接拼接起来啊:
String var_name = "age" ; //这是变量的名称
String quary="SELECT * FROM caoyao WHERE "+var_name+"=?";

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7472569
  • 你也可以参考下这篇文章:java中的复杂查询sql语句怎么写?
  • 除此之外, 这篇博客: java操作sql语句记录收集篇中的 描述 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 列对应的类型应为数字类型

  • 您还可以看一下 邵发老师的Java反射机制与框架原理课程中的 生成SQL小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    由于问题中并未给出具体的代码和错误提示信息,无法直接给出解决方案。同时,参考资料提供了多个关于SQL优化的技巧和注意事项,具体实践还需要结合具体的场景和需求进行。建议根据具体情况对照参考资料中的技巧和注意事项,逐一进行分析和优化,并考虑使用参数化查询来避免SQL注入攻击。如果仍然遇到问题,可以提供更具体的场景和代码,以便更好地帮助解决问题。

已解决,下图代码不使用数据库请求,换个方法直接赋值给相应的自定义的变量即可。

img