java.sql.SQLException:没有这样的列
我被指派使用sqlite演示CRUD操作。当我尝试从数据库检索项目时,我的ResultSet似乎没有“id”列。我很困惑 这是我的ContactRepository类java.sql.SQLException:没有这样的列,java,sql,sqlite,Java,Sql,Sqlite,我被指派使用sqlite演示CRUD操作。当我尝试从数据库检索项目时,我的ResultSet似乎没有“id”列。我很困惑 这是我的ContactRepository类 public class ContactRepositoryJDBC implements ContactRepository { private static Connector connector = new Connector(); ... public Contact getById(int
public class ContactRepositoryJDBC implements ContactRepository {
private static Connector connector = new Connector();
...
public Contact getById(int id) throws SQLException {
Contact contact = null;
try (Connection conn = connector.getConnection();
PreparedStatement statement = conn
.prepareStatement(SQL.GET_CONTACT_BY_ID)) {
statement.setInt(1, id);
try (ResultSet resultSet = statement.executeQuery()) {
if (resultSet.next()) {
contact = new Contact();
contact.setId(resultSet.getInt("id"));
contact.setFirstName(resultSet.getString("first_name"));
contact.setSurname(resultSet.getString("surname"));
contact.setHomeNumber(resultSet.getString("home_number"));
contact.setCellNumber(resultSet.getString("cell_number"));
contact.setEmail(resultSet.getString("email"));
}
}
}
if (contact == null) {
System.out.print("no contact with id " + id + " found : ");
}
return contact;
}
...
}
我对sql语句使用单独的类
public class SQL {
...
public static final String GET_CONTACT_BY_ID = "SELECT first_name, surname, home_number, cell_number, email FROM Contact WHERE id = ?";
...
}
我得到一个SQLException“没有这样的列id”
编辑:
接触模型类
public class Contact {
private int id;
private String firstName;
private String surname;
private String homeNumber;
private String cellNumber;
private String email;
public Contact(String firstName, String surname, String homeNumber,
String cellNumber, String email) {
this.firstName = firstName;
this.surname = surname;
this.homeNumber = homeNumber;
this.cellNumber = cellNumber;
this.email = email;
}
public Contact() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
... getters and setter for everything else
}
您的选择不包括列
id
,因此它不在结果集中。将其添加到选择中:
public static final String GET_CONTACT_BY_ID = "SELECT id, first_name, surname, home_number, cell_number, email FROM Contact WHERE id = ?";
您的SQL查询
public static final String GET_CONTACT_BY_ID = "SELECT first_name, surname, home_number, cell_number, email FROM Contact WHERE id = ?";
不要选择id列。您只能从查询中选择的结果集中检索这些列
为了获得id列值,您需要将查询修改为
public static final String GET_CONTACT_BY_ID = "SELECT id,first_name, surname, home_number, cell_number, email FROM Contact WHERE id = ?";
查询您使用的数据库时:
SELECT first_name, surname, home_number, cell_number, email FROM Contact WHERE id = ?
但是在resultset
中,您需要idcontact.setId(resultset.getInt(“id”)代码>
因此,错误将查询更改为:
SELECT id, first_name, surname, home_number, cell_number, email FROM Contact WHERE id = ?
只需检查您的数据库“CONTACT”表是否包含名为“id”的列。
此错误仅在列名不匹配时出现
您的查询是正确的请输入实体联系人的代码好吗?您是如何创建数据库的?是否有名为“id”的列?select语句在select关键字后不包含id列。谢谢大家。成功了。现在我坐了几个小时却没有注意到,我觉得自己很傻。非常感谢。!
SELECT id, first_name, surname, home_number, cell_number, email FROM Contact WHERE id = ?