运行搜索时,我会发现一个sqlexception错误,说找不到我的一列。这是非常令人困惑的,因为我在代码早些时候引用该列,并且该程序可以在此时找到列。我的语法有问题吗?谢谢你!
public void createDB(){
String createCharTableSQL = "CREATE TABLE CosplayCharacter (" +
"CharacterID int NOT NULL primary key GENERATED ALWAYS " +
"AS IDENTITY (START WITH 1, INCREMENT BY 1), " +
"name varchar(60) not null," +
"gender varchar(10)," +
"genreID int, " +
"universeID int, " +
"mediaID int, " +
"description varchar(60))";
statement.executeUpdate(createCharTableSQL);
}
public void insertCharacter(){
String fetchAllDataSQL = "SELECT * from CosplayCharacter";
//Code can find the universeID column here
resultSet = statement.executeQuery(fetchAllDataSQL);
while (resultSet.next()) {
String name = resultSet.getString("name");
int universeCharID = resultSet.getInt("universeID");
System.out.println("Character Name : " + name +
" UniverseID : " + universeCharID);
}
}
//But returns error here
public void searchCharacter(String characterName){
String fetchAllDataSQL = "SELECT * from CosplayCharacter where name = '" + characterName +"'";
resultSet = statement.executeQuery(fetchAllDataSQL);
while (resultSet.next()) {
String gender = resultSet.getString("gender");
int genreID = resultSet.getInt("genreID");
//Method to search a column in a joined table; no error
String genreName = getGenreName(genreID);
int universeID = resultSet.getInt("universeID");
}
}
堆栈跟踪:
java.sql.SQLException: Column 'universeID' not found.
at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown
Source)
at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.newSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.ConnectionChild.newSQLException(Unknown Source)
结果集已在全球使用。getGenRename方法中使用的结果集覆盖了主搜索查理法中的结果集。解决方案:在每种方法中单独设置结果集变量。