2 回答
TA贡献1820条经验 获得超9个赞
当然,您不需要将列名作为参数传递。JDBC 允许您从元数据中获取列名。就像下面一样
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM TABLE2");
ResultSetMetaData rsmd = rs.getMetaData();
Integer colunNum = rsmd.getColumnCount();
for(int i =0; i < columnNum; i ++){
String colmnName = rsmd.getColumnName(i);
....
}
归功于:从 java.sql.ResultSet 中检索列名
TA贡献1844条经验 获得超8个赞
在类实例化中调用驱动方法。
static {
// Ensure we have mariadb Driver in classpath
try {
Class.forName("org.mariadb.jdbc.Driver");
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
你也应该关闭你的资源。您可以使用try-with-resources来做到这一点。
public List<String> getData(String sql, Map column) {
try (
Connection conn = DriverManager.getConnection(this.url);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
){
List<String> result = new ArrayList<>();
if (column.containsKey("string")) {
for (Object i : column.values()) {
while (rs.next()) {
result.add(rs.getString(String.valueOf(i)));
}
}
return result;
}
}
catch (SQLException e) {
e.printStackTrace();
}
return null;
}
添加回答
举报