【发布时间】:2016-01-03 17:52:08
【问题描述】:
我的程序有 2 个数据库表:GameInfo 和 Characters。 其工作原理是一个游戏有 4 张不同名称的地图,并且必须为添加到游戏中的每个角色分配 4 张地图中的任何一张。现在我有一个 sql 语句,它返回一个名为“Expr1001,每个地图上的字符数的结果集。然后我需要将此信息添加到 jTable 并将地图上每个字符的相应数量与地图名称链接起来。
我的 ResultSet 带有返回每个地图上字符数量的查询:
ResultSet qs = dbm.queryDatabase("SELECT Expr1001 FROM (SELECT GameInfo.mapname, SUM(IIF(Map = GameInfo.mapname,1,0)) FROM (SELECT * FROM [Character] INNER JOIN Player ON Character.PlayerID=Player.[ID]) AS A RIGHT JOIN GameInfo ON A.Character.map = GameInfo.mapname GROUP BY GameInfo.mapname) AS [%$##@_Alias]");
从 GameInfo 表中从数据库中获取游戏信息的整个方法,它仅包含一个 GameID 和 MapName。
public Game[] getGameInfo(){
Game[] arr = null; //Creates an array of Games
try { //getting list from database
ResultSet rs = dbm.queryDatabase("Select Count(GameID) as NumGames from GameInfo" );
//While there are still more rows to read from the database.
rs.next();
int count = rs.getInt("NumGames");
arr = new Game[count];
String sql = "Select * from GameInfo";
// System.out.println(sql);
rs = dbm.queryDatabase(sql);
//Take the info from the current row
//Add the info to the array
ResultSet qs = dbm.queryDatabase("SELECT Expr1001 FROM (SELECT GameInfo.mapname, SUM(IIF(Map = GameInfo.mapname,1,0)) FROM (SELECT * FROM [Character] INNER JOIN Player ON Character.PlayerID=Player.[ID]) AS A RIGHT JOIN GameInfo ON A.Character.map = GameInfo.mapname GROUP BY GameInfo.mapname) AS [%$##@_Alias]");
for(int i = 0; rs.next(); i++){
arr[i] = new Game(
rs.getInt("GameInfo.GameID"),
rs.getString("GameInfo.mapname"),
qs.getInt(i));
}//Creates a Game from the currently selected info
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Failed to get Games");
e.printStackTrace();
}
return arr;
}
}
然后将数据添加到 GameInfoPanel 类中 Panel 上的 jTable 中:
public void refreshTable() {
//remove old stuff
refreshing = true;
Game[] arr = gim.getGameInfo();
DefaultTableModel model = (DefaultTableModel) GameInfoTable.getModel();
while (model.getRowCount() > 0) {
model.removeRow(0);
}
for (int i = 0; i < arr.length; i++) {
model.addRow(new Object[]{
arr[i].getNumberOfCharacters(),
arr[i].getID(),
arr[i].getMapName()});
}
refreshing = false;
//load new data from database using manager
}
当我尝试运行程序时,我不断收到指向 ResultSet qs 行的错误:“用户缺少权限或找不到对象:A.CHARACTER.MAP”,即使我将此语句复制到 Microsoft Access 并运行没关系。
请帮忙! 谢谢。
(我还在上学,所以在这方面根本不是天才,所以如果我做了一些愚蠢的事情,请原谅)
【问题讨论】:
-
尝试用
CHARACTER.MAP替换A.CHARACTER.MAP -
@AdamMartin 错误现在是:用户缺少权限或找不到对象:CHARACTER.MAP