gpt4 book ai didi

java - 这是在 Java 中执行查询的好方法吗?

转载 作者:搜寻专家 更新时间:2023-10-30 22:14:12 26 4
gpt4 key购买 nike

我正在执行查询并将结果放入 JSONObject 以将其返回到 EXTJS 页面。代码有效,但我不确定这是否是最好或最有效的方法。我会发布我的代码,请看看我是否需要改进它以及在哪里。我是新程序员,所以请原谅明显的错误。提前致谢。

public JSONObject execQuery(String invoice, String id){

StringBuffer sb = new StringBuffer();
JSONObject json = new JSONObject();
JSONObject data = new JSONObject();
JSONArray jsArray = new JSONArray();

try{
// get conn
conn = DBConnect.getInstance().dbOracleConnect();

// create query
sb = new StringBuffer("SELECT * FROM table ");
sb.append("WHERE rtrim(invoice) = ? AND ");
sb.append("id = ? ");

ps = conn.prepareStatement(sb.toString());
ps.setString(1, invoice);
ps.setString(2, id);

rs = ps.executeQuery();

while(rs.next()){
json = new JSONObject();

json.put("invoice", rs.getString("invoice"));
json.put("id", rs.getString("id"));
json.put("name", rs.getString("name"));
json.put("gender", rs.getString("gender"));

jsArray.put(json);
// out put will be like [{"invoice":"111", "id":"123", "name":"sam", "gender":"male"}, {...}]
}
data.put("data", jsArray);
// out put will be like {"data":[{"invoice":"111", "id":"123", "name":"sam", "gender":"male"}, {...}]}
}
catch(Exception e){
System.out.println("Error: " + e.toString());
}
finally {
JDBCHelper.close(rs);
JDBCHelper.close(ps);
JDBCHelper.close(conn);
}

return data;
}

最佳答案

您需要在代码中考虑的一些事项:

  1. 您正在通过 JDBCHelper 关闭连接,这意味着 JDBCHelper 中应该有一个方法来抽象出获取连接的细节。

  2. 由于您不是动态创建查询,因此不需要使用 StringBuffer/StringBuilder。常规字符串对您的情况很有效。

  3. sbjson 变量被初始化两次,一次在顶部,然后在 try block 中再次初始化。只需在顶部声明这些变量并在使用它们的地方对其进行初始化。

  4. 您应该在 while 循环之前关闭 jsonjsArray 的初始化,并在循环之后关闭 data 的初始化。

关于java - 这是在 Java 中执行查询的好方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17202756/

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