【发布时间】:2021-04-10 21:13:17
【问题描述】:
我曾尝试将这两个问题作为参考
但是,这对我的情况没有任何帮助。我不断收到
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 中是布尔值。如果我在 fillrecord 中删除 member.debut_3d = resultSet.getBoolean("debut");... 一切正常
【问题讨论】:
-
您确定这是可重现的吗?我认为您的实际代码没有任何问题。
-
我在我的 XAMPP 中尝试过,效果很好。出于某种原因,唯一有问题的部分仅适用于“首次亮相”,如果我删除该部分 - 代码按照我想要的方式工作得非常好。
-
它是否按原样工作?我不认为你问的问题是可重复的,因此我在上面发表了评论。
-
不,它不起作用,因为它给了我这个错误
java.sql.SQLException: Column 'debut' not found.