我(初学)用java和jdbc来操作mysql,
想把查询到的数据结果返回回去?下面的函数也实现了想我的功能,
但是我觉得,写得很low,
哪位大神麻烦看看,怎么改进一下返回类型?
/**
* 通过sql语句查询数据
* @param sql
* @return [description]
*/
public List<Map<String,String>> query(String sql){
List<Map<String,String>> lists=new ArrayList<Map<String,String>>();
try {
conn = DriverManager.getConnection(url, user, password);
statement = conn.createStatement();
ResultSet rs = statement.executeQuery(sql);
lists=this.ResultSetToList(rs);
rs.close();
conn.close();
return lists;
} catch(Exception e) {
e.printStackTrace();
}
return lists;
} /**
* 把结果转化成list返回
* @param rs
* @return [description]
*/
public static List<Map<String,String>> ResultSetToList(ResultSet rs) {
try {
ResultSetMetaData md = rs.getMetaData(); // 获得结果集结构信息(字段数、字段名等)
int columnCount = md.getColumnCount();
List<Map<String,String>> list = new ArrayList<Map<String,String>>();
while (rs.next()) {
Map<String, String> rowData = new HashMap<String, String>();
for (int i = 1; i <= columnCount; i++) {
rowData.put(md.getColumnName(i), rs.getString(i));
}
list.add(rowData);
}
return list;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
想把查询到的数据结果返回回去?下面的函数也实现了想我的功能,
但是我觉得,写得很low,
哪位大神麻烦看看,怎么改进一下返回类型?
/**
* 通过sql语句查询数据
* @param sql
* @return [description]
*/
public List<Map<String,String>> query(String sql){
List<Map<String,String>> lists=new ArrayList<Map<String,String>>();
try {
conn = DriverManager.getConnection(url, user, password);
statement = conn.createStatement();
ResultSet rs = statement.executeQuery(sql);
lists=this.ResultSetToList(rs);
rs.close();
conn.close();
return lists;
} catch(Exception e) {
e.printStackTrace();
}
return lists;
} /**
* 把结果转化成list返回
* @param rs
* @return [description]
*/
public static List<Map<String,String>> ResultSetToList(ResultSet rs) {
try {
ResultSetMetaData md = rs.getMetaData(); // 获得结果集结构信息(字段数、字段名等)
int columnCount = md.getColumnCount();
List<Map<String,String>> list = new ArrayList<Map<String,String>>();
while (rs.next()) {
Map<String, String> rowData = new HashMap<String, String>();
for (int i = 1; i <= columnCount; i++) {
rowData.put(md.getColumnName(i), rs.getString(i));
}
list.add(rowData);
}
return list;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
bean 是你实体类名,比如List<User>可以直接返回user 的list 注意,sql 和字段的对应
3l说的挺对,关闭资源一定要放在finally里,这个是个坑。
然后数据库连接可以单独抽象出来,做个静态的连接,关闭连接也可以单独抽象出来,这样结构清楚,主函数一眼可以看出干啥的。