Một số thời gian trở lại, tôi đã cùng một vấn đề để đối phó với. Sau khi cân nhắc về thiết kế này, chúng tôi quyết định làm như sau.
public static Properties execute(String string, String[] columnames) throws Exception {
Properties resulProperties = er.executeQuery(string, columnames);
return resulProperties;
}
Đối với một số lý do cụ thể, tôi đã tạo ra một lĩnh vực trong lớp học của tôi là đưa ra dưới đây
private static ExecuteRequest er = new ExecuteRequest();
Trong ExecuteRequest
lớp dưới đây đang được sử dụng.
public Properties executeQuery(String sqlstatement, String[] columnNames) throws Exception {
Properties prop = new Properties();
try {
prop = creteProperty(sqlstatement, columnNames);
} catch (Exception e) {
mlogger.report("Error executing sql statement");
throw (e);
}
return prop;
}
public Properties creteProperty(String sqlstatement, String[] columnNames) throws Exception {
Properties prop = new Properties();
try {
PreparedStatement stmt = ConnectionManager.getInstance().prepareStatement(sqlstatement);
ResultSet rs = stmt.executeQuery();
if (rs.next()) {
for (int i = 0; i < columnNames.length; i++) {
String key = columnNames[i];
if (rs.getObject(key) != null) {
String value = (rs.getObject(key).toString());
prop.setProperty(key, value);
} else {
String value = "";
prop.setProperty(key, value);
}
}
}
rs.close();
} catch (Exception e) {
mlogger.report("Error executing sql statement");
throw (e);
}
return prop;
}
Bạn có thể sử dụng phương pháp này làm giải pháp.
Nguồn
2011-01-12 22:35:09
Bạn nên trả về một 'Bản đồ' để tránh mất thông tin về các kiểu dữ liệu thực tế được trả về. Và 'rs.getObject (1) .toString()' sẽ ném ra với NullPointerException nếu bảng chứa giá trị NULL. –
Tất cả các loại JDBC được ánh xạ đều có phương thức toString(). Và về null, tôi đã không có bất kỳ vấn đề. SELECT * Từ một trong các bảng của tôi, trong đó có trường DATE với giá trị null, in ra "null" trên bảng điều khiển. – athspk
Tất nhiên họ có phương thức toString(). Nhưng việc chuyển đổi chuỗi trở lại thành "thực" có thể là một vấn đề.Làm thế nào để bạn biết được họ nên chuyển đổi đối tượng nào? Điều gì về định dạng mặc định phụ thuộc vào ngôn ngữ (dấu phân cách thập phân, định dạng ngày và vv). Điều này giống như lưu trữ tất cả mọi thứ trong một cột varchar trong cơ sở dữ liệu ... –