1. 程式人生 > >JAVA WEB JDBC連線資料庫

JAVA WEB JDBC連線資料庫

     

班級   軟體16-1   學號 3162052051116  姓名 張識虔   同組實驗者              

實驗名稱       JDBC訪問資料庫                       

日期 2018 10 24

一、實驗目的:

 

理解JDBC的工作原理,掌握JDBC訪問資料庫;

掌握常見資料庫MYSQL ;

 

 

二、實驗環境:

 

 

 

三、實驗內容:

現在使用JDBC寫一個簡單的小程式,主要是使用JDBC連線MySQL資料庫,然後對資料庫進行一些基本的增刪改查操作。

定義實體類

UserVO.java

package bean;

import java.util.Date;

public class UserVO {

    private int id;

    private String userName;

    private int age;

    private int sex;

    private Date createDt;

   

    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 int getAge() { 

            return age; 

        } 

     

        public void setAge(int age) { 

            this.age = age; 

        } 

     

        public int getSex() { 

            return sex; 

        } 

     

        public void setSex(int sex) { 

            this.sex = sex; 

        } 

     

        public Date getCreateDt() { 

            return createDt; 

        } 

     

        public void setCreateDt(Date createDt) { 

            this.createDt = createDt; 

        }

     

        @Override 

        public String toString() { 

            return "UserVO [id=" + id + ", userName=" + userName + ", age=" + age  + ", sex=" + sex + ", createDt=" + createDt + "]"; 

        } 

}

定義資料庫連線類

DBUtil.java
package bean;



import java.sql.Connection;

import java.sql.DriverManager;



public class DBUtil {



       private static final String URI = "jdbc:mysql://182.91.133.2:3306/z?"     ///182.91.133.2是本地的IP地址 可以百度IP就可以顯示   z是資料庫名

                     + "user=root&password=123&useUnicode=true&characterEncoding=UTF-8";

         //user 是賬號   password是密碼

       private static final String DRIVER = "com.mysql.jdbc.Driver";

      

       public static Connection connectDB() throws Exception {

              //1、載入資料庫驅動

              Class.forName(DRIVER);

              //2、獲取資料庫連線

              Connection conn = DriverManager.getConnection(URI);

             

              return conn;

       }

      

}

 

實現執行的程式碼

UserDao.java

package bean;

import java.sql.*;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;



public class UserDao {

       public List<UserVO> queryAll() throws Exception {

//查詢操作,查詢可以一次查詢出所有的資料,也可以根據相應的條件查詢。

查詢所有的資料

              Connection conn = DBUtil.connectDB();

              String sql = "SELECT * FROM tbl_user_info";

              List<UserVO> userList = new ArrayList<UserVO>();

             

              Statement stmt = conn.createStatement();

              ResultSet rs = stmt.executeQuery(sql);

              while(rs.next()) {

                     UserVO user = new UserVO();

                     user.setId(rs.getInt("id"));

                     user.setUserName(rs.getString("user_name"));

                     user.setAge(rs.getInt("age"));

                     user.setSex(rs.getInt("sex"));

                     user.setCreateDt(rs.getDate("create_dt"));

                    

                     userList.add(user);

              }

             

              return userList;

       }

       public List<UserVO> queryByParams(List<Map<String, Object>> params) throws Exception {

//這個方法可以自由選擇查詢的條件,只需要向方法中傳入一個條件的List即可,這些條件都是由Map組成的,每一個Map包含三個元素,col表示查詢條件對應哪一列,rel表示查詢條件的關係是什麼,value是指查詢條件的值

              Connection conn = DBUtil.connectDB();

              StringBuilder sql = new StringBuilder("SELECT * FROM tbl_user_info WHERE 1=1 ");

             

              for(Map<String, Object> param : params) {

                     sql.append(" and ");

                     sql.append(" " + param.get("col") + " ");

                     sql.append(" " + param.get("rel") + " ");

                     sql.append(" " + param.get("value") + " ");

              }

              System.out.println(sql.toString());

             

              List<UserVO> userList = new ArrayList<UserVO>();

             

              Statement stmt = conn.createStatement();

              ResultSet rs = stmt.executeQuery(sql.toString());

              while(rs.next()) {

                     UserVO user = new UserVO();

                     user.setId(rs.getInt("id"));

                     user.setUserName(rs.getString("user_name"));

                     user.setAge(rs.getInt("age"));

                     user.setSex(rs.getInt("sex"));

                     user.setCreateDt(rs.getDate("create_dt"));

                    

                     userList.add(user);

              }

             

              return userList;

       }

       public void addUser(UserVO user) throws Exception {

//增加的操作

              Connection conn = DBUtil.connectDB();

              String sql = "INSERT INTO tbl_user_info(user_name, age, sex, create_dt) "

                            + " VALUES(?, ?, ?, ?)";

             

              PreparedStatement pstmt = conn.prepareStatement(sql);

              pstmt.setString(1, user.getUserName());

              pstmt.setInt(2, user.getAge());

              pstmt.setInt(3, user.getSex());

              pstmt.setDate(4, new Date(new java.util.Date().getTime()));

             

              pstmt.execute();

       }

       public void deleteUser(int id) throws Exception {

//刪除的方法,根據使用者的id來刪除資料

              Connection conn = DBUtil.connectDB();

              String sql = "DELETE FROM tbl_user_info WHERE id = ?";

             

              PreparedStatement pstmt = conn.prepareStatement(sql);

              pstmt.setInt(1, id);

             

              pstmt.execute();

       }

       public void updateUser(UserVO user) throws Exception {

//更新操作

              Connection conn = DBUtil.connectDB();

              String sql = "UPDATE tbl_user_info SET user_name=?, age=?, sex=?"

                            + " WHERE id=?";

             

              PreparedStatement pstmt = conn.prepareStatement(sql);

              pstmt.setString(1, user.getUserName());

              pstmt.setInt(2, user.getAge());

              pstmt.setInt(3, user.getSex());

              pstmt.setInt(4, user.getId());

             

              pstmt.executeUpdate();

       }





       public static void main(String[] args) {

              //增刪改的主函式程式碼放的地方

       }

}

 

 

資料庫執行部分

Create database z; 建立資料庫

顯示資料庫

 

使用use z資料庫

 

建立一個表格

插入資料

 

顯示錶格

 

在MyEclipse執行結果

  

     public static void main(String[] args) {

              UserDao dao = new UserDao();

             

              try {

                     List<UserVO> userList = dao.queryAll();

                     for(UserVO user : userList) {

                            System.out.println(user);

                     }

              } catch (Exception e) {

                     e.printStackTrace();

              }

       }

條件查詢

public static void main(String[] args) {

              UserDao dao = new UserDao();

             

              List<Map<String, Object>> params = new ArrayList<Map<String,Object>>();

              Map<String, Object> param1 = new HashMap<String, Object>();

              param1.put("col", "user_name");

              param1.put("rel", "like");

              param1.put("value", "'%zhang%'");   //尋找zhang的名字

              params.add(param1);

             

              Map<String, Object> param2 = new HashMap<String, Object>();

              param2.put("col", "sex");

              param2.put("rel", "=");

              param2.put("value", 1);  //性別為1的

              params.add(param2);

              try {

                     List<UserVO> userList = dao.queryByParams(params);

                     for(UserVO user : userList) {

                            System.out.println(user);

                     }

              } catch (Exception e) {

                     e.printStackTrace();

              }

             

       }

增加之後

public static void main(String[] args) {

              UserDao dao = new UserDao();

              UserVO user = new UserVO();

             

              user.setUserName("xiaozi");  //增加的名字

              user.setAge(0);               //增加的歲數

              user.setSex(1);                     //增加的性別

              try {

                     dao.addUser(user);

              } catch (Exception e) {

                     e.printStackTrace();

              }

刪除之後

public static void main(String[] args) {

              UserDao dao = new UserDao();

             

              try {

                     dao.deleteUser(1);     //刪除的ID為1

              } catch (Exception e) {

                     e.printStackTrace();

              }

       }

更新  xiaozi的值

public static void main(String[] args) {

        UserDao dao = new UserDao();

        UserVO user = new UserVO();

       

        user.setUserName("xiaozi");   //名字為 xiaozi

        user.setAge(10);               //更新歲數為10

        user.setSex(1);                

        user.setId(4);

       

        try {

            dao.updateUser(user);

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

 

 

 

四、心得體會: