1. 程式人生 > >第二節 JDBC 基本操作-增刪查改(一)

第二節 JDBC 基本操作-增刪查改(一)

package jdbc.utils;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Utils {
//載入資料庫驅動,並建立資料庫連線
	public static Connection getConnection()throws SQLException,
	 ClassNotFoundException{
		Class.forName("com.myssql.jdbc.Driver");
		String url="jdbc:mysql://localhost:3306/chapter01";
		String username="root";
		String password="****";
		Connection conn=(Connection)DriverManager.getConnection(url,username,password);
		return conn;
	}
		//關閉資料庫連線
	public static void release(Statement stmt,Connection conn){
		if(stmt !=null){
			 try{
					  stmt.close();
				  }catch(SQLException e){
					  e.printStackTrace();
				  }
				  stmt=null;
				  }
				  if(conn !=null){
					  try{
						  conn.close();
					  }catch(SQLException e){
						  e.printStackTrace();
					  }
					  conn=null;
					  }
				  }
		public static void release(ResultSet rs,Statement stmt,Connection conn){
			if(rs!=null){
				try{
					rs.close();
				}catch(SQLException e){
					e.printStackTrace();
				}
				rs=null;
				}
			release(stmt,conn);
			}
		}

(3)新建一個包,在包中建立一個類UserDao,該類封裝對資料表的增刪查改操作。
package jdbc.example.dao;
import jdbc.domain.User;
import jdbc.utils.Utils;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
public class UserDao {
	//新增使用者操作
		public boolean insert(User user){
			Connection conn=null;
			Statement stmt=null;
			ResultSet rs=null;
			//public class SimpleDateFormt extends SimpleDateFormat {
			//}
			try{
				//獲取資料連線
				conn=Utils.getConnection();
				stmt=conn.createStatement();
				//傳送SQL資料
				SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
				String birthday=sdf.format(user.getBirthday());
				String sql="INSERT INTO users(id,name,password,email,birthday)"+
				"VALUES("+user.getId()+",'"+user.getUsername()+"','"+user.getPassword()+
				"','"+user.getEmail()+"','"+birthday+"')";
				int num=stmt.executeUpdate(sql);
				if(num>0){
					return true;
				}
				return false;
			}catch(Exception e){
					e.printStackTrace();
				}finally{
					Utils.release(rs, stmt,conn);//1
				}
				return false;
			}
			
		//查詢所有user物件
		public ArrayList<User>findAll(){
			//return null;
			Connection conn=null;
		    Statement stmt=null;
			ResultSet rs=null;
			ArrayList<User>list=new ArrayList<User>();
				try{
					//獲取資料連線
					conn=Utils.getConnection();
					//獲取Statement物件
					stmt=conn.createStatement();
					//傳送SQL資料
					String sql="SELECT*FROM users";
					rs=stmt.executeQuery(sql);
					//處理結果集
					while(rs.next()){
					User user=new User();
					user.setId(rs.getInt("id"));
					user.setUsername(rs.getString("name"));
					user.setPassword(rs.getString("password"));
					user.setEmail(rs.getString("email"));
					user.setBirthday(rs.getDate("birthday"));
					list.add(user);
					}
					return list;
				}catch(Exception e){
					e.printStackTrace();
				}finally{
					Utils.release(rs, stmt,conn);//2
				}
				return null;
			}
		//根據id查詢指定的user
		public User find(int id){
		     Connection conn=null;
			 Statement stmt=null;
			ResultSet rs=null;
			try{
				//獲取資料連線
				conn=Utils.getConnection();
				//獲取Statement物件
				stmt=conn.createStatement();
				//傳送SQL資料
				String sql="SELECT*FROM users WHERE id="+id;
				rs=stmt.executeQuery(sql);
				//處理結果集	
				while(rs.next()){
					User user=new User();
					user.setId(rs.getInt("id"));
					user.setUsername(rs.getString("name"));
					user.setPassword(rs.getString("password"));
					user.setEmail(rs.getString("email"));
					user.setBirthday(rs.getDate("birthday"));
					return user;
				}
				return null;
			}catch(Exception e){
				e.printStackTrace();
			}finally{
				Utils.release(rs, stmt,conn);//3
			}
			return null;
		}
		//刪除使用者
		public boolean delete(int id)throws SQLException{
			Connection conn=null;
			Statement stmt=null;
			ResultSet rs=null;
			try{
				//獲取資料連線
				conn=Utils.getConnection();
				//獲取Statement物件
				stmt=conn.createStatement();
				//傳送SQL語句
				String sql="DELETE FROM users WHERE id="+id;
				int num=stmt.executeUpdate(sql);
				if(num>0){
					return true;
				}
				return false;
			}catch(Exception e){
				e.printStackTrace();
			}finally{
				Utils.release(rs, stmt,conn);
			}
			return false;
		   }
		//修改使用者
		public boolean update(User user){
			Connection conn=null;
			Statement stmt=null;
			ResultSet rs=null;
			try{
				//獲取資料連線
				conn=Utils.getConnection();
				//獲取Statement物件
				stmt=conn.createStatement();
				//傳送SQL資料
				SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
				String birthday=sdf.format(user.getBirthday());
				String sql="UPDATE users set name='"+user.getUsername()
				+"',password='"+user.getPassword()+"',email='"+user.getEmail()
				+"',birthday='"+birthday+"'WHERE id= "+user.getId();
				int num=stmt.executeUpdate(sql);
				if(num>0){
					return true;
				}return false;
			}catch(Exception e){
				e.printStackTrace();
			}finally{
				Utils.release(rs, stmt,conn);//5
			}
			return false;
		   }
			
}