gibi görünebilir Bir süre önce, başa çıkmak için aynı problemdeydim. Bazıları bu tasarım üzerinde durduktan sonra aşağıda olduğu gibi yapmaya karar verdik. kodunun altına ExecuteRequest
sınıf kullanılır ise
private static ExecuteRequest er = new ExecuteRequest();
aşağıda verildiği gibi bazı özel nedenle
public static Properties execute(String string, String[] columnames) throws Exception {
Properties resulProperties = er.executeQuery(string, columnames);
return resulProperties;
}
, benim sınıfta bir alan yarattı.
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;
}
Bu yaklaşımı bir çözüm olarak kullanabilirsiniz.
Döndürülmüş gerçek veri türleri hakkında bilgi kaybetmemek için bir 'Harita' iletilmelidir. Ve tablo nULL değerleri içeriyorsa 'rs.getObject (1) .toString()' NullPointerException ile bombalar. –
Tüm eşlenen JDBC Türleri bir toString() yöntemine sahiptir. Ve null hakkında, hiç sorunum olmadı. SELECT * NULL değerleriyle DATE alanı bulunan Tablolarımdan, konsolda "null" yazdı. – athspk
Elbette bir toString() yöntemine sahipler. Ama String'i "gerçek" bir şeye geri çevirmek bir problem olabilir.Hangi nesneyi geri dönüştürmeleri gerektiğini nereden biliyorsunuz? Yerel ayarlara bağlı olan varsayılan biçimlendirme (ondalık ayırıcı, tarih biçimleri vb.). Bu, veritabanındaki bir varchar sütunundaki her şeyi depolamak gibidir ... –