Java鏈接Mysql

1、下載Mysql鏈接Jar包java

1:jar可到Mysql官網下載:地址Mysql 鏈接jar包.
如圖,在下拉列表框中選擇Platform Independentmysql

image.png

2:點擊DownLoad程序員

image.png

3:在新得頁面點擊No thanks, just start my download.意思是,不,謝謝,我只想進行下載sql

image.png

2、集成mysql jar到你得項目中windows

1:先新建一個文件夾,用來存放第三方jar,這裏就是用來存放mysql得鏈接jar包測試

image.png

2:在新彈出得窗口中填寫一個文件夾名稱,文件夾名能夠隨便寫,只要符合windows文件夾命名就能夠,這裏我寫得是lib(library得簡寫)ui

image.png

3:你已經下載好了mysql jar包,若是第一步成功得話.如圖
把下載的jar複製到剛纔新建的lib下(Ctrl+c Ctrl+v)this

image.png
4:右擊lib下得mysql jar包------Build Path------Add to Build Path,若是成功得話,文件夾可能會有一些變化google

image.png
image.png

3、鏈接mysql.net

1:新建一個MysqlManager 類,若是你不知道怎麼建,以及創建在什麼地方,我想你多是缺乏一些java以及IED得知識,不如回頭學一下再過來.

public class MysqlManager {
    private static  Connection mConnect;
    static {
        try {
            System.out.println("init---");
            Class.forName("com.mysql.cj.jdbc.Driver");
            mConnect=DriverManager.getConnection("jdbc:mysql://localhost:3306/demo", "root", "hxl495594..");
        } catch (ClassNotFoundException | SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    public static Connection getConnection() {
        return mConnect;
        
    }
    public static void  close() {
        try {
            mConnect.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }
}

2:測試代碼Main.java

public class Main {
    
    public Main() {
    

    }
    public static void main(String[] args) {
        MysqlManager.getConnection();
        
    }

}

3:若是運行以上代碼沒有報錯,說明jar包成功集成了,而且成功鏈接到mysql.

可是着該死的異常老是伴隨着咱們,好比:

1:java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
你鏈接得密碼可能有誤

2:java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
沒有找到com.mysql.cj.jdbc.Driver類,多是你第二步沒有作對,不妨回頭仔細閱讀一下

3:Caused by: java.net.UnknownHostException: localhost
你得mysql主機鏈接路徑可能存在問題,

若是你的異常再也不我上面列舉的範圍內,那你能夠嘗試使用百度或者Google(做爲程序員,不會上google怎麼能夠呢),或者評價留言.

4、增刪查改

下面要作的事就是:
1:建立一個tb_user表,有三個字段,user_name、user_pwd、user_money
2:增長兩個有錢人
3:查詢一個具體的人
4:修改他的密碼

import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;

public class Mysql {
    public Connection mConnect;
    
    public Mysql(Connection connection) {
        super();
        this.mConnect = connection;
    }

    /**
     * 建立表
     * @param connection
     * @param sql
     * @return
     */
    public  boolean createTable(String sql) {
        boolean result = false;
        try {
            Statement statement = mConnect.createStatement();
            statement.execute(sql);
            result = true;
            statement.close();

        } catch (SQLException e) {
            System.err.println("建立表異常:"+e.getMessage());
        }
        return result;
    }
    
    
    /**
     * 添加用戶
     * @param users
     */
    public  void addUser(List<UserBean> users) {
        try {
            Statement statement =mConnect.createStatement();
            /**
             * 循環添加
             */
            for (UserBean userBean : users) {
                String sql ="INSERT INTO `demo`.`tb_user`(`user_name`, `user_pwd`, `user_money`) VALUES ('"+
                userBean.getmUserName()+"','"+userBean.getmUserPass()+"',"+userBean.getmMoney()+")";
                statement.executeUpdate(sql);//執行語句
            }
            statement.close();
        } catch (SQLException e) {
            /**
             * 可能會重複添加
             */
            if(e.getMessage().contains("PRIMARY")) {
                System.err.println("主鍵重複");
            }
        }
        
    }
    
    /**
     * 獲取指定用戶信息
     * @param userName
     * @return
     */
    public UserBean getUserInfos(String userName) {
        String sql ="SELECT * FROM `demo`.`tb_user` WHERE user_name='" +userName+"';";
        try {
            Statement statement =mConnect.createStatement();
            ResultSet result = statement.executeQuery(sql);
            if(result.first()) {
                UserBean userBean =new UserBean(
                        result.getString("user_name"), 
                        result.getString("user_pwd"), 
                        new BigDecimal(result.getFloat("user_money")));
                return userBean;
            }
            
            
            statement.close();
            
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
            
        }
        return null;
    }
    
    /**
     * 更新用戶密碼
     * @param userName  用戶名字
     * @param oldPdw    用戶之前密碼
     * @param newPwd    用戶新密碼
     * @return
     */
    public int upUserPwd(String userName,String oldPdw,String newPwd) {
        int result =-1;
        try {
    
            String sql="UPDATE `demo`.`tb_user` SET `user_pwd` = '"+newPwd+ "' WHERE `user_name` = '"+userName+"'";
            
            UserBean user =getUserInfos(userName);
            if(user!=null) {
                /**
                 * 判斷傳遞過來的老密碼是否正確
                 */
                if(user.getmUserPass().equals(oldPdw)) {
                    Statement statement =mConnect.createStatement();
                    statement.executeUpdate(sql);
                    statement.close();
                    result= 0;
                }else {
                    result=1;
                    System.err.println("密碼不正確,不容許更改");
                }
            }else {
                result=2;
                System.err.println("無此用戶");
            }
        }catch(SQLException e) {}
        return result;
        
    }
}

測試(Main.java)

public class Main {
    
    public Main() {
    

    }
    public static void main(String[] args) {
        String createTablesSql="CREATE TABLE IF NOT EXISTS  `tb_user`  (\r\n" + 
                "  `user_name` varchar(255) CHARACTER SET utf8mb4  NOT NULL,\r\n" + 
                "  `user_pwd` varchar(255) CHARACTER SET utf8mb4  NOT NULL,\r\n" + 
                "  `user_money` decimal(10, 2) NOT NULL DEFAULT 0.00,\r\n" + 
                "  PRIMARY KEY (`user_name`) USING BTREE\r\n" + 
                ") CHARACTER SET = utf8mb4";
        
        Mysql mysql =new Mysql(MysqlManager.getConnection());
        
        /**
         * 建立表
         */
        boolean ok =mysql.createTable(createTablesSql);
        
        
        /**
         * 添加用戶
         */
        List<UserBean> list =new ArrayList<>();
        list.add(new UserBean("張五", "123",new BigDecimal(1000000.5)) );
        list.add(new UserBean("張四", "123456",new BigDecimal(2000000)) );
        mysql.addUser(list);
        
        
        //獲取指定用戶信息
        UserBean user =mysql.getUserInfos("張五");
        if (user!=null) {
            System.out.println(user.getmUserPass() +"  "+user.getmMoney());
        }

         //修改用戶密碼
        mysql.upUserPwd(user.getmUserName(), user.getmUserPass(), "123456789");
        
        MysqlManager.close(); //關閉鏈接
        
    }

}
相關文章
相關標籤/搜索