123

来源:互联网 发布:数据库高并发处理 编辑:程序博客网 时间:2024/06/04 19:38
package com.hzyc.lesson23.jdbc.redo;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;


public class JDBCTools {

//rs的缺点:只能使用一次,【***】不能关闭连接
//数据结构
/*public ArrayList<String> find(String sql, String[] columns) {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3308/hzyc18", "root", "mysql");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);

//ArrayList<记录(多个列的值)> rsList = new ArrayList<记录(多个列的值)>();
ArrayList<String> rsList = new ArrayList<String>();

while (rs.next()) {
//每next一次,得到一行

String row = "";
for (int i = 0; i < columns.length; i++) {
String value = rs.getString(columns[i]);
row = row + value + " - ";
}

//把拼接好的row字符串,以元素的身份添加到list中
rsList.add(row);

}

rs.close();
stmt.close();


conn.close();

return rsList;

} catch (Exception e) {
e.printStackTrace();
return null;
}
}*/

Connection conn = null;
Statement stmt = null;
ResultSet rs = null;

public ArrayList<HashMap<String, String>> find(String sql) {
ArrayList<HashMap<String, String>> rsList = null;
try {
rsList = new ArrayList<HashMap<String, String>>();
connect();
rs = stmt.executeQuery(sql);

//ArrayList<记录(多个列的值)> rsList = new ArrayList<记录(多个列的值)>();

//【****重点】:结果集结构对象
ResultSetMetaData rsmd = rs.getMetaData();

while (rs.next()) {
//每next一次,得到一行,一行想用一个map存储,所以next一次必须new一个Map

HashMap<String, String> onceMap = new HashMap<String, String>();
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
String value = rs.getString(rsmd.getColumnName(i));
//onceMap.put("列名", "列对应的值");
onceMap.put(rsmd.getColumnName(i), value);
}

//把存储好一行数据的Map,以元素的身份添加到list中
rsList.add(onceMap);

}
} catch (Exception e) {
e.printStackTrace();
} finally {
//无论如何都要执行
close();
}
return rsList;
}

public void update(String sql) {
try {
connect();//1\2\3
stmt.executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
} finally {
close();//5
}
}

private void connect() {
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3308/hzyc18", "root", "mysql");
stmt = conn.createStatement();
} catch (Exception e) {
e.printStackTrace();
}
}

private void close() {
try {
rs.close();
stmt.close();
conn.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}















原创粉丝点击