Java连接Mysql

Posted houxinlin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java连接Mysql相关的知识,希望对你有一定的参考价值。

一、下载mysql连接Jar包

1:jar可到Mysql官网下载:地址Mysql 连接jar包.
如图,在下拉列表框中选择Platform Independent

技术图片

2:点击DownLoad

技术图片

3:在新得页面点击No thanks, just start my download.意思是,不,谢谢,我只想进行下载

技术图片

二、集成mysql jar到你得项目中

1:先新建一个文件夹,用来存放第三方jar,这里就是用来存放mysql得连接jar包

技术图片

2:在新弹出得窗口中填写一个文件夹名称,文件夹名可以随便写,只要符合windows文件夹命名就可以,这里我写得是lib(library得简写)

技术图片

3:你已经下载好了mysql jar包,如果第一步成功得话.如图
把下载的jar复制到刚才新建的lib下(Ctrl+c Ctrl+v)

技术图片
4:右击lib下得mysql jar包------Build Path------Add to Build Path,如果成功得话,文件夹可能会有一些变化

技术图片
技术图片

三、连接mysql

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怎么可以呢),或者评价留言.

四、增删查改

下面要做的事就是:
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(); //关闭连接
        
    }

}

以上是关于Java连接Mysql的主要内容,如果未能解决你的问题,请参考以下文章

从mysql的片段中加载ListView

java 连接mysql数据库怎么连接

java是怎么连接mysql数据库的

Java连接MySQL数据库——代码

java 连接mysql 和sql server2008代码

使用 JDBC 将 Java 代码与远程 MySQL 数据库连接 [重复]