开发者社区> 问答> 正文

不能使用SELECT *通过executeQuery()发出数据操作语句

让我尝试说明我如何确切地得到此错误。

我credentials在数据库中表

凭证表

我有CredentialsEntity.java类

...
@Entity
@Table(name = "credentials", schema = "project")
public class CredentialsEntity {
    private int id;
    private String userName;
    private String password;
    ...

我也有DBConnect.java类,其中的一部分是

public static List<CredentialsEntity> list(String query){
    List<CredentialsEntity> credencials = new ArrayList<>();
    try (
            Connection conn = DriverManager.getConnection(DEFAULT_DB_URL, DEFAULT_user, DEFAULT_pass);
            PreparedStatement preparedStatement = conn.prepareStatement(query);
            ResultSet resultSet = preparedStatement.executeQuery(query)
    ){
        while (resultSet.next()){
            CredentialsEntity credentialsEntity = new CredentialsEntity();
            credentialsEntity.setId(resultSet.getInt("id"));
            credentialsEntity.setUserName(resultSet.getString("userName"));
            credentialsEntity.setPassword(resultSet.getString("password"));
            credencials.add(credentialsEntity);
        }
    }catch (Exception ex){
        System.out.print("Error" + ex);
    }
    return credencials;
}

在Main.java中,我这样调用DBConnect.list

query = "select * from credentials";
List<CredentialsEntity> credentials = DBConnect.list(query);
System.out.print(credentials.toString() + "\n");

错误是:

Errorjava.sql.SQLException: Can not issue data manipulation statements with executeQuery().

因此,我正在正确连接到数据库,并且正在正确更新表。问题在于将数据库记录保存到ArrayList中。我不知道为什么我不能通过executeQuery()

如果您还有其他疑问,可以通过https://github.com/DawidGrzejek/TheChoosenOne询问或检查完整代码

展开
收起
垚tutu 2019-12-19 16:01:35 658 0
0 条回答
写回答
取消 提交回答
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载