gpt4 book ai didi

java - ReadyState 保持为空

转载 作者:行者123 更新时间:2023-12-01 22:21:05 25 4
gpt4 key购买 nike

我目前正在 servlet 内创建一个私有(private)方法。但我的 PreparedStatement 不断返回 null

private ArrayList<String> emails(String id) {
ArrayList<String> email= new ArrayList<String>();
try {
PreparedStatement st = null;
ResultSet data = null;
DriverManager.getConnection(
"jdbc:postgresql://localhost/test",
"test", "test");
String sql = "SELECT email FROM hdpr.email_table WHERE id='"
+ id+ "'";
data = st.executeQuery(sql);
while (data.next()) {
email.add(data.getString("email"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();

} catch (NullPointerException e) {

e.getMessage();
}

return email;

}

最佳答案

尝试这样:

private ArrayList<String> emails(String id) {
ArrayList<String> email= new ArrayList<String>();
try {
PreparedStatement st = null;
ResultSet data = null;

// Creating a new connection
Connection con = DriverManager.getConnection(
"jdbc:postgresql://localhost/test",
"test", "test");

// your SQL Query now with a ? as parameter placeholder
String sql = "SELECT email FROM hdpr.email_table WHERE id = ?";

// creating a new preparedStatement using your sql query
st = con.prepareStatement(sql);

// set the first ? to the value of id
st.setString(1, id);

data = st.executeQuery();
while (data.next()) {
email.add(data.getString("email"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();

} catch (NullPointerException e) {

System.err.println(e.getMessage());
}

return email;

}

您还应该查看的步骤:

  1. 如果将 null 分配给变量,则该变量将为 null,并且在尝试调用方法时总会发生 NullpointerException来自该对象。

  2. 要使用 PreparedStatement st,您需要通过使用连接和 SQL 查询创建 preparedStatement 来初始化它。

  3. 不要使用 + 运算符向 SQL 查询添加参数 - 这将为SQL 注入(inject)打开大门,为此我们有准备好的语句和setString(), setInt(), ...

  4. 您应该看看这样的教程:http://www.mkyong.com/jdbc/jdbc-preparestatement-example-select-list-of-the-records/

关于java - ReadyState 保持为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29755959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com