創(chuàng)建jdbc應(yīng)用(4+6+6+6)

第1天(4課時)

創(chuàng)建jdbc應(yīng)用

創(chuàng)建jdbc應(yīng)用步驟分7步
1)載入jdbc驅(qū)動(指定我要連接到哪種數(shù)據(jù)庫辆它,連接不同數(shù)據(jù)庫用不同驅(qū)動)
2)定義連接url(連接準(zhǔn)備 url,端口虏肾,用戶名软舌,密碼)
3)建立連接
4)創(chuàng)建PreparedStatement(動態(tài)) Statement(靜態(tài)的)(拼sql語句)
5)執(zhí)行數(shù)據(jù)庫命令(crud)
6)結(jié)果的處理
7)關(guān)閉連接

濃縮
1,2連接準(zhǔn)備---> 3 連接 ----> 4,5給數(shù)據(jù)庫下指令---> 6處理結(jié)果---> 7關(guān)閉連接
連接各數(shù)據(jù)庫的文檔放在
E:\java16\javase\手冊\JDBC—數(shù)據(jù)庫的連接字符串及連接方法(各類數(shù)據(jù)庫)

代碼開始

建包

右鍵src new-package-輸入com.neuedu.jdbc -ok

建類

右鍵包-new class-JdbcInsert.java
public class JdbcInsert {
@Test
public void insert(){

}
}

引入junit

用@Test因?yàn)闆]有引junit會報錯,鼠標(biāo)點(diǎn)擊紅色叉號捌年,接eclipse指示引入junit

1)載入jdbc驅(qū)動(指定我要連接到哪種數(shù)據(jù)庫瓢娜,連接不同數(shù)據(jù)庫用不同驅(qū)動)

https://www.runoob.com/w3cnote/java-class-forname.html

Class.forName("com.mysql.jdbc.Driver");

注意,要把mysql jar包引到工程里礼预。
操作方法:工程右鍵-build path-configure build path-add libraries選項(xiàng)卡-add exteral jar -選中mysql的jar包-ok

2)定義連接url(連接準(zhǔn)備 url,端口眠砾,用戶名,密碼)

  String url="jdbc:mysql://localhost:3306/java16?characterEncoding=UTF-8&useUnicode=true";
  String user="root";
  String password="root";

3)建立連接

  Connection conn=DriverManager.getConnection(url, user, password);

4)創(chuàng)建PreparedStatement(動態(tài)) Statement(靜態(tài)的)(拼sql語句)

  Statement st=conn.createStatement();

5)執(zhí)行數(shù)據(jù)庫命令(crud)

executeUpdate: 用于 insert update delete
executeQuery: 用于 select

 ResultSet rs= st.executeQuery("select empno,ename,deptno from emp where deptno=10");

6)結(jié)果的處理

while(rs.next()){
          //雙引號里是數(shù)據(jù)庫里的字段名托酸,
         String e_name=rs.getString("ename");
         System.out.println(e_name);
         int emp_no= rs.getInt("empno");
         System.out.println(emp_no);
         int deptno=rs.getInt("deptno");
         System.out.println(deptno);
      }

7)關(guān)閉連接

     rs.close();
  st.close();
  conn.close();

完整代碼

@Test
  public void query() throws ClassNotFoundException, SQLException {
      //1)載入jdbc驅(qū)動(指定我要連接到哪種數(shù)據(jù)庫褒颈,連接不同數(shù)據(jù)庫用不同驅(qū)動)
      Class.forName("com.mysql.jdbc.Driver");
      //2)定義連接url(連接準(zhǔn)備 url,端口,用戶名励堡,密碼)
      String url="jdbc:mysql://localhost:3306/java16?characterEncoding=UTF-8&useUnicode=true";
      String user="root";
      String password="root";
      //3)建立連接
      Connection conn=DriverManager.getConnection(url, user, password);
      //4)創(chuàng)建PreparedStatement(動態(tài)) Statement(靜態(tài)的)(拼sql語句)
      Statement st=conn.createStatement();
      //5)執(zhí)行數(shù)據(jù)庫命令(crud)  
      //executeUpdate   insert update delete
      //executeQuery select
      //查詢10號部門的員工的員工編號谷丸,員工姓名,部門編號
      ResultSet rs= st.executeQuery("select empno,ename,deptno from emp where deptno=10");
      //6)結(jié)果的處理
      while(rs.next()){
          //雙引號里是數(shù)據(jù)庫里的字段名应结,
         String e_name=rs.getString("ename");
         System.out.println(e_name);
         int emp_no= rs.getInt("empno");
         System.out.println(emp_no);
         int deptno=rs.getInt("deptno");
         System.out.println(deptno);
      }
      //7)關(guān)閉連接
      rs.close();
      st.close();
      conn.close();
}

發(fā)現(xiàn)異常不顯示刨疼,改造代碼

  @Test
    public void query1() {
        Connection conn = null;
        Statement st = null;
        ResultSet rs = null;
        try {
            // 1)載入jdbc驅(qū)動(指定我要連接到哪種數(shù)據(jù)庫,連接不同數(shù)據(jù)庫用不同驅(qū)動)
            Class.forName("com.mysql.jdbc.Driver");
            // 2)定義連接url(連接準(zhǔn)備 url,端口鹅龄,用戶名揩慕,密碼)
            String url = "jdbc:mysql://localhost:3306/java16?characterEncoding=UTF-8&useUnicode=true";
            String user = "root";
            String password = "root";
            // 3)建立連接
            conn = DriverManager.getConnection(url, user, password);
            // 4)創(chuàng)建PreparedStatement(動態(tài)) Statement(靜態(tài)的)(拼sql語句)
            st = conn.createStatement();
            // 5)執(zhí)行數(shù)據(jù)庫命令(crud)
            // executeUpdate insert update delete
            // executeQuery select
            // 查詢10號部門的員工的員工編號,員工姓名扮休,部門編號
            rs = st.executeQuery("select empno,ename,deptno from emp where deptno=10");
            // 6)結(jié)果的處理
            while (rs.next()) {
                // 雙引號里是數(shù)據(jù)庫里的字段名迎卤,
                String e_name = rs.getString("ename");
                System.out.println(e_name);
                int emp_no = rs.getInt("empno");
                System.out.println(emp_no);
                int deptno = rs.getInt("deptno");
                System.out.println(deptno);
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 7)關(guān)閉連接
            try {
                rs.close();
                st.close();
                conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

添加 修改 刪除執(zhí)行的是executeUpdate 返回類型為int而不是ResultSet,所以,這三種操作沒有結(jié)果集

刪除代碼如下:

@Test
    public void del() {
        Connection conn = null;
        Statement st = null;
        try {
            // 1)載入jdbc驅(qū)動(指定我要連接到哪種數(shù)據(jù)庫玷坠,連接不同數(shù)據(jù)庫用不同驅(qū)動)
            Class.forName("com.mysql.jdbc.Driver");
            // 2)定義連接url(連接準(zhǔn)備 url,端口蜗搔,用戶名,密碼)
            String url = "jdbc:mysql://localhost:3306/java16?characterEncoding=UTF-8&useUnicode=true";
            String user = "root";
            String password = "root";
            // 3)建立連接
            conn = DriverManager.getConnection(url, user, password);
            // 4)創(chuàng)建PreparedStatement(動態(tài)) Statement(靜態(tài)的)(拼sql語句)
            st = conn.createStatement();
            // 5)執(zhí)行數(shù)據(jù)庫命令(crud)
            // executeUpdate insert update delete
            // executeQuery select
            // 查詢10號部門的員工的員工編號侨糟,員工姓名,部門編號
            int count=st.executeUpdate("delete from emp_back where ename='SCOTT'"); 
System.out.println(count);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 7)關(guān)閉連接
            try {
                st.close();
                conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    } 

作業(yè)

1)練習(xí)修改和刪除
2)寫添加和修改

第2天(6課時)

項(xiàng)目階段(正常)
1)立項(xiàng)
2)需求分析(需求規(guī)格說明書)
3)概要設(shè)計(界面原型 部署模型 架構(gòu))
4)詳細(xì)設(shè)計(包 類 內(nèi)部接口(輸入瘩燥、輸出) 流程圖 外部接口)
5)編碼(實(shí)現(xiàn)類)
6)測試(單元測試 集成測試 模擬現(xiàn)場環(huán)境做一個測試環(huán)境 性能測試)
7)部署實(shí)施(部署到生產(chǎn)環(huán)境)
8)上線運(yùn)行

項(xiàng)目階段(有時)
1)立項(xiàng)
2)需求分析(需求規(guī)格說明書)
3)概要設(shè)計(界面原型 部署模型 架構(gòu))
5)編碼(實(shí)現(xiàn)類)
6)測試(單元測試 集成測試 模擬現(xiàn)場環(huán)境做一個測試環(huán)境 性能測試)
7)部署實(shí)施(部署到生產(chǎn)環(huán)境)
8)詳細(xì)設(shè)計(包 類 內(nèi)部接口(輸入秕重、輸出) 流程圖 外部接口)
9)上線運(yùn)行
10)驗(yàn)收

用戶注冊
字段:用戶id,用戶名,密碼厉膀,郵箱溶耘,權(quán)限
表名:t_*****

建表語句

/*
Navicat MySQL Data Transfer

Source Server : mysql
Source Server Version : 50553
Source Host   : localhost:3306
Source Database   : java16

Target Server Type: MYSQL
Target Server Version : 50553
File Encoding : 65001

Date: 2018-10-17 10:30:43
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for t_user
-- ----------------------------
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(20) NOT NULL,
  `user_pwd` varchar(20) NOT NULL,
  `user_email` varchar(100) DEFAULT NULL,
  `user_power` int(11) NOT NULL,
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
SET FOREIGN_KEY_CHECKS=1;

實(shí)體類

public class User {
    // 用戶id
    private int id;
    // 登錄名
    private String name;
    // 密碼
    private String password;
    // 郵箱
    private String email;
    // 權(quán)限 0-普通用戶 1-管理員
    private int power = 0;

    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 String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public int getPower() {
        return power;
    }

    public void setPower(int power) {
        this.power = power;
    }
}

開發(fā)主頁

    package com.neuedu.jdbc.menu;
    
    import java.util.Scanner;
    
    public class MainMenu {
        public static void main(String[] args) {
            while (true) {
                System.out.println("歡迎使用neusoft用戶管理系統(tǒng)");
                System.out.println("======================");
                System.out.println("用戶登錄---------------1");
                System.out.println("用戶注冊---------------2");
                System.out.println("退出程序---------------3");
                Scanner sc = new Scanner(System.in);
                //接受用戶輸入
                int choice = sc.nextInt();
                switch (choice) {//根據(jù)用戶輸入,進(jìn)入不同界面
                case 1:
                    // @todo進(jìn)入用戶登錄界面
                    System.out.println("用戶登錄");
                    break;
                case 2:
                    //用戶注冊
                    RegMenu  regMenu=new RegMenu();
                    regMenu.show();
                    break;
                case 3:
                    System.exit(0);
                default:
                    System.out.println("不好意思,您輸入錯誤!");
                    break;
                }
            }
    
        }
    }

開發(fā)注冊頁

    package com.neuedu.jdbc.menu;
    
    import java.util.Scanner;
    
    import com.neuedu.jdbc.dao.UserManagerDao;
    import com.neuedu.jdbc.pojo.User;
    
    public class RegMenu {
    
        public void show() {
            //業(yè)務(wù)層服鹅,中間如果有涉及數(shù)據(jù)庫的凳兵,咱們調(diào)用dao(數(shù)據(jù)訪問對象)類去存庫
            //讓用戶輸入個人信息
            System.out.println("用戶注冊界面");
            System.out.println("======================");
            Scanner sc = new Scanner(System.in);
            System.out.println("請輸入您的用戶名:");
            String userName=sc.next();
            System.out.println("請輸入您的密碼:");
            String userPwd=sc.next();
            System.out.println("請輸入您的郵箱:");
            String email=sc.next();
            //@todo做一些必要驗(yàn)證
            //封裝好一個對象,用于調(diào)用存庫方法時用
            User user=new User();
            user.setEmail(email);
            user.setUserName(userName);
            user.setUserPwd(userPwd);
            //把個人信息存庫  int 型的結(jié)果
          //需要調(diào)用 dao層進(jìn)行存庫
             UserManagerDao umd=new UserManagerDao();
             int result=umd.addUser(user);
            //根據(jù)返回結(jié)果給用戶提示
             if(result>0){
                 System.out.println("注冊成功");
             }else{
                 System.out.println("注冊失敗");
             }
            //回到主界面
            return;
        }
    }

創(chuàng)建實(shí)現(xiàn)類

    package com.neuedu.jdbc.dao;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    
    import com.neuedu.jdbc.pojo.User;
    
    public class UserManagerDao {
    
        public int addUser(User user) {
            Connection conn=null;
            PreparedStatement ptst=null;
            int result=0;
            try {
                Class.forName("com.mysql.jdbc.Driver");
                String url="jdbc:mysql://localhost:3306/java13?characterEncoding=UTF-8&useUnicode=true";
                String username="root";
                String password="root";
                conn=DriverManager.getConnection(url, username, password);
                ptst=conn.prepareStatement("insert into t_user values(null,?,?,?,?)");
                ptst.setString(1, user.getUserName());
                ptst.setString(2, user.getUserPwd());
                ptst.setString(3, user.getEmail());
                ptst.setInt(4, user.getUserPower());
                result=ptst.executeUpdate();
            } catch (ClassNotFoundException | SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } finally{
                try {
                    ptst.close();
                    conn.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                
            }
            return result;
        }
    
    }

作業(yè)

練習(xí)注冊功能
思考用戶登錄功能開發(fā)

第3天(6課時)

第一項(xiàng)任務(wù):把昨天寫的代碼全刪除企软,從頭來一遍(3課時)
新建項(xiàng)目-定義實(shí)體類-寫main方法-定義menu-寫dao接口-寫dao實(shí)現(xiàn)類庐扫,整個上午做完注冊全流程
第二項(xiàng)任務(wù):登錄功能開發(fā)

登錄功能

登錄用戶緩存

    package com.neuedu.jdbc.menu;
    
    import com.neuedu.jdbc.pojo.User;
    /**
     * 虛擬緩存
     * @author Administrator
     *
     */
    public class LoginUser {
    //共享對象
    public static User currentUser;
    
    public static User getCurrentUser() {
        return currentUser;
    }
    
    public static void setCurrentUser(User currentUser) {
        LoginUser.currentUser = currentUser;
    }
    }

LoginMenu

    package com.neuedu.jdbc.menu;
    
    import java.util.Scanner;
    
    import com.neuedu.jdbc.dao.UserManagerDao;
    import com.neuedu.jdbc.pojo.User;
    
    public class LoginMenu {
    
        public void show() {
            
            System.out.println("歡迎登錄界面");
            System.out.println("======================");
            Scanner sc=new Scanner(System.in);
            System.out.println("請輸入您的用戶名");
            String userName=sc.next();
            System.out.println("請輸入您的密碼");
            String userPwd=sc.next();   
            //封裝一個user對象
            User user=new User();
            user.setUserName(userName);
            user.setUserPwd(userPwd);
            //調(diào)用dao的鑒權(quán)方法,驗(yàn)證用戶名密碼正確性
            UserManagerDao umd=new UserManagerDao();
            //根據(jù)用戶名密碼查詢用戶
            User dbUser=umd.findUserByNameAndPassword(user);
            //如果用戶查詢到了,進(jìn)一步做
            
            if(null!=dbUser){
                System.out.println("登錄成功!");
                LoginUser.currentUser=dbUser;
                //向緩存里存一個user對象形庭,static 的铅辞,修改成功后,把對象更新
            if(dbUser.getUserPower()==0){
                //跳轉(zhuǎn)到普通用戶界面
                UserMenu um=new UserMenu();
                um.show();
            }else{
                //跳轉(zhuǎn)到管理員界面 學(xué)生獨(dú)立完成
            }
                    
            }else{
                System.out.println("沒有查詢到該用戶");
                return;
            }
        }
    }

UserManagerDao

public User findUserByNameAndPassword(User user) {
    User db_user=null;
    Connection conn=null;
    PreparedStatement ps=null;
    ResultSet rs=null;
    try {
        //加載驅(qū)動
        Class.forName("com.mysql.jdbc.Driver");
        String url="jdbc:mysql://localhost:3306/java13?characterEncoding=UTF-8&useUnicode=true";
        String userName="root";
        String password="root";
        //獲取連接
        conn=DriverManager.getConnection(url, userName, password);
        //新建查詢萨醒,預(yù)處理語句
        //根據(jù)用戶名和密碼查詢用戶
        ps=conn.prepareStatement("select * from t_user where user_name=? and user_pwd=?");
        ps.setString(1, user.getUserName());
        ps.setString(2, user.getUserPwd());
        //查詢要返回結(jié)果集
        rs=ps.executeQuery();
        //對結(jié)果集進(jìn)行處理 如果確認(rèn)返回結(jié)果是一行用if,如果是多條斟珊,用while
        if(rs.next()){
            //?
            db_user=new User();
            db_user.setId(rs.getInt("user_id"));
            db_user.setUserName(rs.getString("user_name"));
            db_user.setUserPwd(rs.getString("user_pwd"));
            db_user.setEmail(rs.getString("user_email"));
            db_user.setUserPower(rs.getInt("user_power"));
        }
        
    } catch (ClassNotFoundException | SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }finally{
        try {
            rs.close();
            ps.close();
            conn.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    // TODO Auto-generated method stub
    return db_user;
}

UserMenu

    package com.neuedu.jdbc.menu;
    
    import java.util.Scanner;
    
    import com.neuedu.jdbc.pojo.User;
    
    public class UserMenu {
        //四種
        //無參無返回值的 public void  methodName();
        //無參有返回值的public String methodName();
        //有參無返回值的 public void methodName(String username,String password);
        //           public void methodName(User);
        //有參有返回值的 public void methodName(String username,String password);
        //返回權(quán)限修飾符  返回值類型  方法名(參數(shù)列表)
         //這個方法可以接受參數(shù)類型為User的,返回為void的,方法名為show()
        public void show(){
            while(true){
            System.out.println(LoginUser.currentUser.getUserName()+"您好:"+"您的權(quán)限是普通用戶");
            System.out.println("=========================");
            System.out.println("修改個人信息---------------1");
            System.out.println("查詢個人信息---------------2");
            System.out.println("退出程序------------------3");
            Scanner sc = new Scanner(System.in);
            //接受用戶輸入
            int choice = sc.nextInt();
            switch (choice) {
            case 1:
                System.out.println("修改自己的信息");
                UpdateUserMenu updateMenu=new UpdateUserMenu();
                updateMenu.show();
                break;
            case 2:
                //查詢個人信息
                System.out.println(LoginUser.currentUser.getId()+" "+LoginUser.currentUser.getUserName()+" "+LoginUser.currentUser.getUserPwd()+" "+LoginUser.currentUser.getEmail()+"普通用戶");
                break;
            case 3:
                System.exit(0);
                break;
            default:
                System.out.println("選項(xiàng)錯誤!");
                break;
            }
            }
        }
    }

UpdateUserMenu

    package com.neuedu.jdbc.menu;
    
    import java.util.Scanner;
    
    import com.neuedu.jdbc.dao.UserManagerDao;
    import com.neuedu.jdbc.pojo.User;
    
    public class UpdateUserMenu {
    
        public void show() {
            //從緩存中獲取當(dāng)前用戶信息
            User old_user=LoginUser.currentUser;
            System.out.println("您現(xiàn)在的信息是"+old_user.getId()+old_user.getUserName()+old_user.getUserPower()+old_user.getEmail());
            System.out.println("================");
            Scanner sc = new Scanner(System.in);
            System.out.println("請輸入要修改的姓名");
            String new_Name=sc.next();
            System.out.println("請輸入要修改的密碼");
            String new_Pwd=sc.next();
            System.out.println("請輸入要修改的郵箱");
            String new_email=sc.next();
            User new_user=new User();
            new_user.setId(old_user.getId());
            new_user.setEmail(new_email);
            new_user.setUserName(new_Name);
            new_user.setUserPwd(new_Pwd);
            //給dao傳過去富纸,入庫去
            UserManagerDao upDate=new UserManagerDao();
            //添加囤踩,修改,刪除都返回int
            int count=upDate.updateUser(new_user);
            if(count>0){
                System.out.println("修改成功");
                //更新組成存的用戶信息
                LoginUser.currentUser=new_user;
            }else{
                System.out.println("修改失敗");
            }
        }
    }

MainMenu

......
case 1:
//用戶登錄
LoginMenu loginMenu=new LoginMenu();
loginMenu.show();
break;
......

修改用戶信息關(guān)鍵代碼

public int updateUser(User new_user) {
    Connection conn=null;
    PreparedStatement ps=null;
    int result=0;
    try {
        Class.forName("com.mysql.jdbc.Driver");
        String url="jdbc:mysql://localhost:3306/java13?characterEncoding=UTF-8&useUnicode=true";
        String userName="root";
        String password="root";
        conn=DriverManager.getConnection(url, userName, password);
        ps=conn.prepareStatement("update t_user set user_name=?,user_pwd=?,user_email=? where user_id=? ");
        ps.setString(1,new_user.getUserName());
        ps.setString(2,new_user.getUserPwd());  
        ps.setString(3,new_user.getEmail() );
        ps.setInt(4, new_user.getId());
        //返回條數(shù)
        result=ps.executeUpdate();
        
    } catch (ClassNotFoundException | SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }finally{
        try {
            ps.close();
            conn.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }
    return result;
}

第四天

制作數(shù)據(jù)庫工具類

第一步:建包

new -package-com.neuedu.utils

制作數(shù)據(jù)庫工具類

第一步:建包

new -package-com.neuedu.utils

public class DBUtil {
    // 用于數(shù)據(jù)庫連接的方法
    public static Connection getConnection() {
        Connection conn = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/java16?characterEncoding=UTF-8&useUnicode=true";
            String UserName = "root";
            String password = "root";
            conn = DriverManager.getConnection(url, UserName, password);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("數(shù)據(jù)庫連接異常" + e.getMessage());
        }
        return conn;
    }

    public static void closeConnection(ResultSet rs, Statement st, Connection conn) {
        try {
            if (rs != null) {
                rs.close();
            }
            if (st != null) {
                st.close();
            }
            if (conn != null) {
                conn.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
            System.out.println("關(guān)閉連接異常" + e.getMessage());
        }
    }
}

引入db.propertis

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/java16?characterEncoding=UTF-8&useUnicode=true
userName=root
passWord=root

完整代碼

package com.neuedu.utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class DBUtil {
    // 用于數(shù)據(jù)庫連接的方法
    public static Connection getConnection() {
        Connection conn = null;
        try {
            //載入資源文件
            Properties prop=new Properties();
            prop.load(DBUtil.class.getResourceAsStream("/db.properties"));
            //讀取資源文件各屬性
            String driver=prop.getProperty("driver");
            String url = prop.getProperty("url");
            String UserName = prop.getProperty("userName");
            String password = prop.getProperty("passWord");
            Class.forName(driver);
            conn = DriverManager.getConnection(url, UserName, password);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("數(shù)據(jù)庫連接異常" + e.getMessage());
        }
        return conn;
    }

    public static void closeConnection(ResultSet rs, Statement st, Connection conn) {
        try {
            if (rs != null) {
                rs.close();
            }
            if (st != null) {
                st.close();
            }
            if (conn != null) {
                conn.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
            System.out.println("關(guān)閉連接異常" + e.getMessage());
        }
    }
   }

查詢所有用戶關(guān)鍵代碼

dao實(shí)現(xiàn)類

@Override
public List<User> findAll() {
    conn=DBUtil.getConnection();
    List<User> userList=new ArrayList();
    try {
        st=conn.prepareStatement("select * from t_user");
        rs=st.executeQuery();
        while(rs.next()){
            //每次都新實(shí)例化一個對象
            User user=new User();
            //把從數(shù)據(jù)庫查詢到的記錄封裝到對象里
            user.setId(rs.getInt("user_id"));
            user.setName(rs.getString("user_name"));
            user.setPassword(rs.getString("user_pwd"));
            user.setEmail(rs.getString("user_email"));
            user.setPower(rs.getInt("user_power"));
            //把對象放到list里
            userList.add(user);
        }
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return userList;
}

頁面展示

System.out.println("查詢結(jié)果");
           for(User u:userlist){
               System.out.println(u.getId()+"   "+u.getName()+"   "+u.getPassword()+"   "+u.getEmail()+"  "+u.getPower());
               System.out.println("================================================");
           }

作業(yè):
學(xué)生獨(dú)立完成項(xiàng)目

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末晓褪,一起剝皮案震驚了整個濱河市堵漱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌辞州,老刑警劉巖怔锌,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異变过,居然都是意外死亡埃元,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門媚狰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來岛杀,“玉大人,你說我怎么就攤上這事崭孤±噜停” “怎么了罕容?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵滩届,是天一觀的道長油额。 經(jīng)常有香客問我撵颊,道長沉噩,這世上最難降的妖魔是什么无埃? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任蜒谤,我火速辦了婚禮击费,結(jié)果婚禮上赋兵,老公的妹妹穿的比我還像新娘笔咽。我一直安慰自己,他們只是感情好霹期,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布叶组。 她就那樣靜靜地躺著,像睡著了一般历造。 火紅的嫁衣襯著肌膚如雪甩十。 梳的紋絲不亂的頭發(fā)上船庇,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機(jī)與錄音枣氧,去河邊找鬼溢十。 笑死,一個胖子當(dāng)著我的面吹牛达吞,可吹牛的內(nèi)容都是我干的张弛。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼酪劫,長吁一口氣:“原來是場噩夢啊……” “哼吞鸭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起覆糟,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤刻剥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后滩字,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體造虏,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年麦箍,在試婚紗的時候發(fā)現(xiàn)自己被綠了漓藕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡挟裂,死狀恐怖享钞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情诀蓉,我是刑警寧澤栗竖,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站渠啤,受9級特大地震影響狐肢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜沥曹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一份名、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧架专,春花似錦同窘、人聲如沸玄帕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽裤纹。三九已至委刘,卻和暖如春丧没,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锡移。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工呕童, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人淆珊。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓夺饲,卻偏偏與公主長得像,于是被迫代替她去往敵國和親施符。 傳聞我的和親對象是個殘疾皇子往声,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容

  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,795評論 0 11
  • 1. 簡介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL戳吝、存儲過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 5,429評論 0 4
  • 本文主要內(nèi)容 1浩销、JDBC 2、DBUtils 01JDBC概念和數(shù)據(jù)庫驅(qū)動程序 A: JDBC概念和數(shù)據(jù)庫驅(qū)動程...
    勝浩_ae28閱讀 392評論 0 0
  • 本文包括傳統(tǒng)JDBC的缺點(diǎn)連接池原理自定義連接池開源數(shù)據(jù)庫連接池DBCP連接池C3P0連接池Tomcat內(nèi)置連接池...
    廖少少閱讀 16,727評論 0 37
  • 網(wǎng)上經(jīng)常有我國輸液現(xiàn)象是否過度的爭議普筹。雖然輸液是一種很好的治療方法,國外也并不排斥礁遣,但不可否認(rèn)的是斑芜,在我國 ,輸液...
    Arrowzg閱讀 5,751評論 0 0