[英]JDBC: “SQLException:Column name is not found”
我試圖用這兩個問題作為參考
但是,這對我的情況沒有任何幫助。 我不斷收到java.sql.SQLException: Column 'debut' not found.
這是我的 SQL
private List<MemberModel> getModelFromNickname(String test) throws SQLException {
List<MemberModel> result = new ArrayList<>();
String sql = "select distinct " +
"m.name," +
"m.visual," +
"m.branch, " +
"m.illustrator, " +
"m.debut3D AS debut " +
"FROM " +
"member_list as m, " +
"nickname AS n " +
"WHERE n.nick_id = m.nick AND n.nickname LIKE ?";
ResultSet ret= sqlAdapter.select(
sql, 1,test
);
while (ret.next()){
result.add(fillRecord(ret));
}
return result;
}
這是我的 MYSQLAdapter
public ResultSet select(String sql,int option, Object... params) throws SQLException {
PreparedStatement query;
try{
logger.info(params.length);
query = getConnection().prepareStatement(sql);
}
catch (Exception e){
throw new Error("Problem "+ e);
}
resolveParameters(query,option, params);
return query.executeQuery();
}
這是我的 fillRecord 命令
private static MemberModel fillRecord(ResultSet resultSet) throws SQLException {
MemberModel member = new MemberModel();
member.name =resultSet.getString("name");
member.branch = resultSet.getString("branch");
member.debut_3d = resultSet.getBoolean("debut");
member.visual = resultSet.getString("visual");
member.illustrator = resultSet.getString("illustrator");
return member;
}
雖然這是我的 memberModel
public class MemberModel {
public String name = "";
public int social_media = 0;
public int nick = 0;
public String branch = "";
public boolean debut_3d= true;
public String illustrator ="";
public String visual = "";
}
我試着用
ResultSetMetaData rsmd = sqlAdapter.getConnection().prepareStatement(sql).getMetaData();
for(int i =1; i<= rsmd.getColumnCount();i++){
System.err.println(rsmd.getColumnCount()+"\n"+rsmd.getColumnName(i));
}
這給了我以下內容(我不知道它是如何設法打印超過 5 個的。但是,除了“debut”之外的所有內容都可以找到)
5
name
5
visual
5
branch
5
illustrator
5
debut
5
name
5
visual
5
branch
5
illustrator
5
debut
這表明首次亮相的專欄應該存在,但我仍然得到那個例外。 我哪里做錯了? 我確保它區分大小寫以防萬一。 “debut”列的數據類型是我的本地主機 XAMPP MySQL 中的 boolean。 如果我刪除member.debut_3d = resultSet.getBoolean("debut");
在fillrecord
內...一切正常
而是通過 labelName 嘗試列號獲取值。
private static MemberModel fillRecord(ResultSet resultSet) throws SQLException {
MemberModel member = new MemberModel();
member.name = resultSet.getString(1);
member.branch = resultSet.getString(3);
member.debut_3d = resultSet.getBoolean(5);
member.visual = resultSet.getString(2);
member.illustrator = resultSet.getString(4);
return member;
}
resultSet.getBoolean("debut3D"); // Instead of "debut"
數據庫表中的列稱為“debut3D”。
順便說一句,您沒有關閉 PreparedStatement 和 ResultSet。 我會使用 try-with-resources。
列名是“首次debut3D
”而不是“ debut
”,這就是您收到錯誤的原因。
使用正確的列名更新下面的行,
member.debut_3d = resultSet.getBoolean("debut3D");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.