こんにちは、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();}
}
}