J2EE学习篇之--JDBC详解(二)

2014-11-23 21:26:05 · 作者: · 浏览: 38
); } //模板代码 public static void template(){ Connection conn = null; Statement st = null; ResultSet rs = null; try { conn = JdbcUtils.getConnection(); //创建语句 st = conn.createStatement(); //执行语句 rs = st.executeQuery("select * from user"); //处理结果 while(rs.next()){ System.out.println(rs.getObject(1) + "\t" + rs.getObject(2) + "\t" + rs.getObject(3) + "\t"); } }catch(SQLException e){ e.printStackTrace(); }catch(Exception e){ e.printStackTrace(); }finally{ JdbcUtils.free(rs, st, conn); } } //测试 static void test() throws Exception{ //注册驱动 DriverManager.registerDriver(new com.mysql.jdbc.Driver()); //通过系统属性来注册驱动 System.setProperty("jdbc.drivers",""); //静态加载驱动 Class.forName("com.mysql.jdbc.Driver"); //建立连接 String url = "jdbc:mysql://localhost:3306"; String userName = "root"; String password = ""; Connection conn = DriverManager.getConnection(url,userName,password); //创建语句 Statement st = conn.createStatement(); //执行语句 ResultSet rs = st.executeQuery("select * from user"); //处理结果 while(rs.next()){ System.out.println(rs.getObject(1) + "\t" + rs.getObject(2) + "\t" + rs.getObject(3) + "\t"); } //释放资源 rs.close(); st.close(); conn.close(); } }
这里还要记住引入额外的jar.这个网上很多的,这里使用的是MySql,搜一下MySql驱动的jar就行了。这里我们将一些操作都放到一个工具类中,这种方式是很优雅的。


第二个例子:使用JDBC来实现CRUD的操作

我们这里就采用分层操作:Dao层,Service层

首先看一下domain域中的User实体

package com.weijia.domain;

import java.util.Date;

public class User {
	
	private int id;
	private String name;
	private Date birthday;
	private float money;
	
	public User(){
		
	}
	
	public User(int id,String name,Date birthday,float money){
		this.id = id;
		this.name = name;
		this.birthday = birthday;
		this.money = money;
	}
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	public float getMoney() {
		return money;
	}
	public void setMoney(float money) {
		this.money = money;
	}

	@Override
	public String toString(){
		return "[id="+id+",name="+name+",birthday="+birthday+",money="+money+"]";
	}
}

再来看一下Dao层结构:

接口:

package com.weijia.domain;

public interface UserDao {

	//添加用户
	public void addUser(User user);
	//通过userid查询用户,id是唯一的,所以返回的是一个user
	public User getUserById(int userId);
	//更新用户信息
	public int update(User user);
	//删除用户信息
	public int delete(User user);
	
}
实现类:

package com.weijia.domain;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import com.weijia.firstdemo.JdbcUtils;

public class UserDaoImpl implements UserDao{

	/**
	 * 添加用户
	 */
	public void addUser(User user) {
		Connection conn = null;
		PreparedStatement st = null;
		try{
			conn = JdbcUtils.getConnection();
			String sql = "insert into user(id,name,birthday,money) values( , , , )";
			st = conn.prepareStatement(sql);
			st.setInt(1,user.getId());
			st.setString(2,user.getName());
			//日期格式的转换(utils.date转化成sql.date)
			st.s