设为首页 加入收藏

TOP

数据库:JDBC编程(二)
2014-11-23 23:24:39 来源: 作者: 【 】 浏览:7
Tags:数据库 JDBC 编程
; if (params != null && !params.isEmpty()) { for (int i = 0; i < params.size(); i++) ps.setObject(i + 1, params.get(i)); } // 步骤4:执行SQL语句 resultSet = ps.executeQuery(); // 步骤5:处理执行结果 // 获取此ResultSet对象的列的属性 ResultSetMetaData metaData = resultSet.getMetaData(); // 列的长度 int col_len = metaData.getColumnCount(); // 若有下一条记录 while (resultSet.next()) { // 将该条记录以map形式存储 Map map = new HashMap(); for (int i = 0; i < col_len; i++) { // 根据列名获得键值并存放在map中 String col_name = metaData.getColumnName(i + 1); Object col_value = resultSet.getObject(col_name); map.put(col_name, col_value); } // 将该记录添加到list中 list.add(map); } // 遍历完resultSet返回list return list; } // 封装步骤6关闭JDBC对象 public void release() { if (resultSet != null) try { resultSet.close(); } catch (SQLException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } if (ps != null) try { ps.close(); } catch (SQLException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } if (connection != null) try { connection.close(); } catch (SQLException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } } } ②TestMain类

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class TestMain {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		JdbcUtils jdbcUtils = new JdbcUtils();
		/*执行一:新建表*/
		// String sql0 =
		// "create table userinfo(id int primary key auto_increment, username varchar(64), password varchar(64))";
		// try {
		// jdbcUtils.update(sql0, null);
		// } catch (SQLException e) {
		// // TODO 自动生成的 catch 块
		// e.printStackTrace();
		// }
		
		/*执行二:增加一条记录*/
		// String sql = "insert into userinfo (username,password) values( , )";
		// List params = new ArrayList();
		// params.add("jack");
		// params.add("123456");
		// try {
		// jdbcUtils.update(sql, params);
		// } catch (SQLException e) {
		// // TODO 自动生成的 catch 块
		// e.printStackTrace();
		// }
		
		/*执行三:修改一条记录*/
		// String sql1 = "update userinfo set username =   where id =  ";
		// List param1 = new ArrayList();
		// param1.add("tommy");
		// param1.add(2);
		// try {
		// jdbcUtils.update(sql1, param1);
		// } catch (SQLException e) {
		// // TODO 自动生成的 catch 块
		// e.printStackTrace();
		// }
		
		/*执行四:删除一条记录*/
		// String sql2 = "delete from userinfo where username = 'tommy'";
		// try {
		// jdbcUtils.update(sql2, null);
		// } catch (SQLException e) {
		// // TODO 自动生成的 catch 块
		// e.printStackTrace();
		// }

		/*执行五:查询所有记录*/
		// String sql3 = "select * from userinfo";
		// try {
		// List> list = jdbcUtils.query(sql3, null);
		// System.out.println(list);
		// } catch (SQLException e) {
		// // TODO 自动生成的 catch 块
		// e.printStackTrace();
		// }
	}

}
执行步骤一:创建一个新的表(以下说的执行步骤没有说明的话都是指单独执行,其他步骤都注释掉) 
 

\

执行步骤二:创建一个表,有三个字段,id是主键

\

连续执行步骤三两次:增加两条记录

\

执行步骤四:将第二条记录修改

\

执行步骤五:删除第二条记录

\

执行步骤六:查询到一条记录

\

再次执行步骤一和步骤五:查询到多条记录

\

实例二:应用反射机制来实现查询数据库记录

①新建一个和数据库字段匹配的类UserInfo< http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PC9wPgo8cHJlIGNsYXNzPQ=="brush:sql;">public class UserInfo { private int id; private String username; private String password; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "UserInfo [id=" + id + ", username=" + username + ", password=" + password + "]"; } } ②在JdbcUtils类中添加一个应用反射机制的数据库查询函数

public  List queryRef(String sql, List params, Class cls)
		throws Exception {
	List list = new ArrayList<>();
	ps = connection.prepareStatement(sql);
	if (params != null && !params.isEmpty()) {
		for (int i = 0; i < params.size(); i++)
			ps.setObject(i + 1, params.get(i));
	}
	resultSet = ps.executeQuery();
	ResultSetMetaData metaData = resultSet.getMetaData();
	int col_len = metaData.getColumnCount();
	while (resultSet.next()) {
		// 存在记录时,实例化一个对象
		T record = cls.newInstance();
		for (int i = 0; i < col_len; i++) {
			String col_name = metaData.getColumnName(i + 1);
			Object col_value = resultSet.getObject(col_name);
			// 将列对应的值赋给对象的相应字段
			Field field = cls.getDeclaredField(col_name);
			field.setAccessible(true);
			field.set(record, col_value);
		}
		// 将这条记录添加到List中
		list.add(record);
	}
	return list;
}③TestMain类,添加一个执行操作 
 

/*执行六:反射机制查询记录*/
String sqlQuery = "select * from userinfo";
try {
	List list = jdbcUtils.queryRef(sqlQuery, null,
			UserInfo.class);
	System.out.println(list);
} catch (Exception e) {
	// TODO 自动生成的 catch 块
	e.printStackTrace();
} finally {
	jdbcUtils.release();
}
执行步骤六





首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇ocp认真考试指南第一章 下一篇Innobackupex全备数据库

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: