首先要建立连接,为了在第二次链接的时候,不用重新创建Connection ,浪费,所以在创建连接的时候,先判断当前对象的conn是否为null,是才进行创建,否则直接使用已有。
private static Connection conn = null;
public Connection getConnection()
{
if (conn == null)
{
System.out.println("数据库还未连接,请创建数据库连接");
return null;
}
else
return conn;
}
public Connection connectDatabase(String className, String connectUrl, String username, String password)
{
try
{
/**
* 加载mysql数据库驱动,判断conn连接是否已创建,若没有则创建,否则直接返回已有的连接。
*/
Class.forName(className);
System.out.println("Success load Driver");
if (conn == null)
{
conn = DriverManager.getConnection(connectUrl, username, password);
System.out.println("创建连接!");
}
}
catch (Exception e)
{
System.out.println("Error loading jdbc driver");
e.printStackTrace();
}
return conn;
}
连接建好了,第二部就是取数据。 提供sql查询语句,将查询的结果放进一个HashMap中,key是数据库字段名,value是查询结果。 将封装好的HashMap放进List中。
public List<Map<String, String>> getSelect(Connection conn, String query)
{
try
{
/**
* 连接数据,创建结果集
*/
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
Map<String, String> map = null;
/**
* 将查询结果集放进HashMap<Integer, StudentBean>, list添加封装好的map,
* 返回List
*/
while (rs.next())
{
map = new HashMap<String, String>();
map.put("classId",rs.getString("classId"));
map.put("studentName",rs.getString("sname"));
map.put("studentId", rs.getString("sid"));
list.add(map);
}System.out.println(list.size());
for(int i=0;i<list.size();i++){
Map<String, String> m = (Map<String, String>)list.get(i);
// Map<String, String> m = (Map<String, String>)iter.next();
for (Object obj : m.keySet())
{
System.out.print(obj + ": "); //输出key
System.out.print("time");
System.out.println(": " + m.get(obj)); //输出keyValues
}
}
return list;
}
catch (Exception e)
{
System.out.print("get data error!");
e.printStackTrace();
return null;
}
}
好了写一个List<Map<String,String> 的迭代器 ,查询返回结果
public void Query(List list)
{
/**
* 判断查询结果数目,为0 输出提示,结束方法
*/
if (list == null)
{
System.out.println("list is null ,error");
return;
}
else if (list.size() == 0)
{
System.out.println("no data found!!");
return;
}
/**
* 迭代Iterator,
*/
else
{
Iterator<Map<String, String>> iter = list.iterator();
while (iter.hasNext())
{
Map<String, String> m = (Map<String, String>)iter.next();
for (Object obj : m.keySet())
{
System.out
写个测试类Test.class
public static void main(String[] args)
{
String sqlString = "select * from student ";
String className = "com.mysql.jdbc.Driver";
String connectUrl = "jdbc:mysql://localhost:3306/test";
String username = "root";
String password = "123";
JdbcInterface inter = new JdbcImpl();
Connection conn = inter.connectDatabase(className, connectUrl,username,password);
inter.getSelect(conn, sqlString);