//随机获取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列名条件是变量?
直接拼接起来啊:
String var_name = "age" ; //这是变量的名称
String quary="SELECT * FROM caoyao WHERE "+var_name+"=?";
列对应的类型应为数字类型
由于问题中并未给出具体的代码和错误提示信息,无法直接给出解决方案。同时,参考资料提供了多个关于SQL优化的技巧和注意事项,具体实践还需要结合具体的场景和需求进行。建议根据具体情况对照参考资料中的技巧和注意事项,逐一进行分析和优化,并考虑使用参数化查询来避免SQL注入攻击。如果仍然遇到问题,可以提供更具体的场景和代码,以便更好地帮助解决问题。
已解决,下图代码不使用数据库请求,换个方法直接赋值给相应的自定义的变量即可。