Java 当(rs.next())未执行时

Java 当(rs.next())未执行时,java,sql,ms-access,Java,Sql,Ms Access,对不起,代码太大了。问题是rs.next似乎根本没有执行,因为 System.out.println(//////不打印任何内容 String Temp2; Temp2 = ""; //initialise variable System.out.println("*************************************************"); try { String filename = "Database.mdb";

对不起,代码太大了。问题是rs.next似乎根本没有执行,因为
System.out.println(//////不打印任何内容

String Temp2;
    Temp2 = ""; //initialise variable
    System.out.println("*************************************************");
    try
    {
        String filename = "Database.mdb";
        String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=";
        database += filename.trim() + ";DriverID=22;READONLY=false";
        conn = DriverManager.getConnection(database, "", "");

        for(int id = 1; id < 16; id++)//will repeat 15 times (for each player)
        {
            for(int x = 1; x < 18; x++)//will repeat 18 times (once for each team fixture)
            {
            Statement sta2 = conn.createStatement();

            ResultSet rs2 = sta2.executeQuery("SELECT * FROM tblPlayers WHERE PlayerID = "+ PlayerID +" AND FixtureNumber = "+ x);

                while (rs2.next())
                {
                    Temp2 = rs2.getString("PlayerName");
                    System.out.println("//////////////////////////////////");
                    System.out.println(Temp2 + ":Temp2");
                    Total = Total + rs2.getInt("Goals");//calculating total
                    System.out.println(Total + ":Total");
                }
            }
                        if (Total.equals(TotalsRev[0])){
                            PlayerName[0] = Temp2;
                        }else if (Total.equals(TotalsRev[1])){
                            PlayerName[1] = Temp2;
                        }else if (Total.equals(TotalsRev[2])){
                            PlayerName[2] = Temp2;
                        }else if (Total.equals(TotalsRev[3])){
                            PlayerName[3] = Temp2;
                        }else if (Total.equals(TotalsRev[4])){
                            PlayerName[4] = Temp2;
                        }
        }
        PlayerID = 0;//reset variable
        for(int x = 0; x < 5; x++){
            System.out.println(PlayerName[x]);                
        }
        System.out.println("*********************************************");
        System.out.println(TotalsRev[0]);
        System.out.println(TotalsRev[1]); 
        System.out.println(TotalsRev[2]); 
        System.out.println(TotalsRev[3]); 
        System.out.println(TotalsRev[4]); 

        jLabel10.setText(PlayerName[0] + "");
        jLabel11.setText(PlayerName[1] + "");
        jLabel12.setText(PlayerName[2] + "");
        jLabel13.setText(PlayerName[3] + ""); 
        jLabel14.setText(PlayerName[4] + "");
    }
    catch (Exception e)
    {
    System.out.println("Exception displayTotalAttributes:" + e);
    }
    finally //close down connection to prevent "too many tables open" error
    {
        if (conn != null) {
            try {
            conn.close();
            } catch (SQLException e) {}
        }
    }
String Temp2;
Temp2=“”//初始化变量
System.out.println(“*******************************************************************”);
尝试
{
字符串filename=“Database.mdb”;
String database=“jdbc:odbc:Driver={Microsoft Access驱动程序(*.mdb)};DBQ=”;
数据库+=filename.trim()+“DriverID=22;READONLY=false”;
conn=DriverManager.getConnection(数据库“,”);
for(int id=1;id<16;id++)//将重复15次(每个玩家)
{
for(int x=1;x<18;x++)//将重复18次(每个团队赛程一次)
{
语句sta2=conn.createStatement();
结果集rs2=sta2.executeQuery(“从tblPlayers中选择*,其中PlayerID=“+PlayerID+”和FixtureNumber=“+x”);
while(rs2.next())
{
Temp2=rs2.getString(“PlayerName”);
System.out.println(“////////”;
System.out.println(Temp2+“:Temp2”);
Total=Total+rs2.getInt(“目标”);//计算总数
系统输出打印项次(总计+“:总计”);
}
}
if(Total.equals(TotalsRev[0])){
PlayerName[0]=Temp2;
}else if(总计等于(总计SREV[1])){
PlayerName[1]=临时2;
}else if(Total.equals(TotalsRev[2])){
PlayerName[2]=Temp2;
}否则如果(总计等于(总计SREV[3])){
PlayerName[3]=临时2;
}else if(总计等于(总计SREV[4])){
PlayerName[4]=临时2;
}
}
PlayerID=0;//重置变量
对于(int x=0;x<5;x++){
System.out.println(PlayerName[x]);
}
System.out.println(“**********************************************************************”);
System.out.println(TotalsRev[0]);
System.out.println(TotalsRev[1]);
System.out.println(TotalsRev[2]);
System.out.println(TotalsRev[3]);
System.out.println(TotalsRev[4]);
jLabel10.setText(PlayerName[0]+“”);
jLabel11.setText(PlayerName[1]+“”);
jLabel12.setText(PlayerName[2]+“”);
jLabel13.setText(PlayerName[3]+“”);
jLabel14.setText(PlayerName[4]+“”);
}
捕获(例外e)
{
System.out.println(“异常显示TotalAttributes:+e”);
}
最后//关闭连接以防止“打开的表太多”错误
{
如果(conn!=null){
试一试{
康涅狄格州关闭();
}捕获(SQLE){}
}
}
控制台中的输出为:
************************************************
//
System.out.println(//////应该在这里执行
Omicron//团队名称
null//这些也应该是团队名称



*********************************************
15
14
13
12

11“

SQL注入,到处都是SQL注入…是否有与您的查询匹配的行?If
rs2.next()
在第一次调用时返回false,这意味着查询没有返回匹配的行。@反斜杠,您认为代码的哪一部分容易发生SQLInjection?查询的参数是整数,JDBC URL由内部定义的变量组成。我同意
PreparedStatement
更合适!您是在SELECT查询中选择PlayerName但尝试检索它。