0

こんにちは、compMac オブジェクトの LinkedList を作成するメソッドがあります。CompMac オブジェクトには、mysql テーブル行の要素が含まれています。各行にはニックネームと場所が含まれているため、ループを使用して各行の「compMac」を作成し、それらをリンクリストに追加します。理由はわかりませんが、最初の「compMac」が作成され、リンクリストに追加されていますが、その後

java.sql.SQLException: Column 'nickname' not found.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920)
at com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1163)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5729)
at server.DbConnect.getArray(DbConnect.java:224)
at server.doComms.sendArray(doComms.java:127)
at server.doComms.whileChatting(doComms.java:107)
at server.doComms.run(doComms.java:32)
at java.lang.Thread.run(Thread.java:695)

これが私の方法です:

public LinkedList<compMac> getArray()
{
    LinkedList<compMac> locArray = new LinkedList<compMac>();
    try{
        String query = "SELECT * FROM online";
        rs = st.executeQuery(query);
        while(rs.next()){
            String nn = rs.getString("nickname");
            String loc = rs.getString("location");//mac addresses
            String cX=getCoorX(loc);
            String cY=getCoorY(loc);
            String building=getBuilding(loc);
            String floor=getFloor(loc);

            locArray.add(new compMac(nn,loc,cX,cY,building,floor));

            }
    }
    catch(Exception e){e.printStackTrace();}
    return locArray;

}

しかし、私はニックネームの列を持っています。私が言ったように、最初のcompMacが作成され、リンクリストをポップすると、最初の行の情報が得られます。

私のコードの何が問題なのか考えている人に感謝します。

編集: ここでクラス コード: パッケージ サーバー; java.sql.* をインポートします。java.util.LinkedList をインポートします。

  import com.example.client.Mac;
  import com.example.client.compMac;


  public class DbConnect {

private Connection con;
private Statement st;
private Statement stClean;
private ResultSet rs;

public DbConnect(){

    try{
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        con = DriverManager.getConnection("jdbc:mysql://melucio.no-ip.biz:3306/TOC","XXXXX","XXXXXXX");
        st = con.createStatement();
        stClean = con.createStatement();

    }catch(Exception ex){
        System.out.println("Error: "+ex);
    }
}






/*This method returns the x coor. of mac address*/
    public String getCoorX(String mac){
    String cX = "";
    try{
        String query = "SELECT * FROM coordinate";
        rs = st.executeQuery(query);
        while(rs.next()){
            if(rs.getString("mac").equals(mac)){
                return rs.getString("coorX");
            }
        }
    }
    catch(Exception e){}
    return cX;

}

    /*This method returns the y coor. of mac address*/
    public String getCoorY(String mac){
    String cY = "";
    try{
        String query = "SELECT * FROM coordinate";
        rs = st.executeQuery(query);
        while(rs.next()){
            if(rs.getString("mac").equals(mac)){
                return rs.getString("coorY");
            }
        }
    }
    catch(Exception e){}
    return cY;

}   public String getBuilding(String mac){
        String buil = "";
        try{
            String query = "SELECT * FROM coordinate";
            rs = st.executeQuery(query);
            while(rs.next()){
                if(rs.getString("mac").equals(mac)){
                    return rs.getString("building");
                }
            }
        }
        catch(Exception e){}
        return buil;

    }

    public String getFloor(String mac){
        String fl = "";
        try{
            String query = "SELECT * FROM coordinate";
            rs = st.executeQuery(query);
            while(rs.next()){
                if(rs.getString("mac").equals(mac)){
                    return rs.getString("floor");
                }
            }
        }
        catch(Exception e){}
        return fl;

    }



/*Update the location table*/
public void updateLocation(String userNN,String location){//,long time){

    long time = System.currentTimeMillis();
    if(!isOnline(userNN))
    {System.out.println("not online");
        setOnline(userNN,location);}
    else{
        try{
            //String query ="UPDATE online SET location = '" +location +"' WHERE nickname='" +userNN +"'";
            String query ="UPDATE online SET location = '" +location +"', lastSeen = "+time +"  WHERE nickname='" +userNN +"'";

            st.executeUpdate(query);

        }   
        catch(Exception e){System.out.println("ayayaya");}  
    }
}


public LinkedList<compMac> getArray()
{
    LinkedList<compMac> locArray = new LinkedList<compMac>();
    try{
        String query = "SELECT * FROM online";
        rs = st.executeQuery(query);
        while(rs.next()){
            String nn = rs.getString("nickname");
            String loc = rs.getString("location");//mac addresses
            String cX=getCoorX(loc);
            String cY=getCoorY(loc);
            String building=getBuilding(loc);
            String floor=getFloor(loc);

            locArray.add(new compMac(nn,loc,cX,cY,building,floor));

            }
    }
    catch(Exception e){e.printStackTrace();}
    return locArray;

}

public void clean()
{
    long currentTime = System.currentTimeMillis();
    long acceptableTime = currentTime-120000;
    try{
        String query = "SELECT * FROM online";
        rs = st.executeQuery(query);
        while(rs.next()){
            String nn = rs.getString("nickname");
            Long ls = rs.getLong("lastSeen");
            if(ls<acceptableTime)//{}
            {stClean.executeUpdate("DELETE FROM online WHERE     nickname='"+nn+"'");} 

        }
    }
    catch(Exception e){e.printStackTrace();}

}

}

4

1 に答える 1