• Java连接Mysql


    一、下载Mysql连接Jar包

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

    image.png

    2:点击DownLoad

    image.png

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

    image.png

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

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

    image.png

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

    image.png

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

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

    image.png
    image.png

    三、连接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`  (
    " + 
    				"  `user_name` varchar(255) CHARACTER SET utf8mb4  NOT NULL,
    " + 
    				"  `user_pwd` varchar(255) CHARACTER SET utf8mb4  NOT NULL,
    " + 
    				"  `user_money` decimal(10, 2) NOT NULL DEFAULT 0.00,
    " + 
    				"  PRIMARY KEY (`user_name`) USING BTREE
    " + 
    				") 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(); //关闭连接
    		
    	}
    
    }
    
    

    公众号

  • 相关阅读:
    scala-for高级用法
    scala-for
    numpy每行,没列中的最小值
    NLP
    sql-server笔记-sql
    openlayers加载geoserver的WMS服务出现点标注显示不全
    oracle删除表
    idea-debug
    python-windows安装相关问题
    mybatis-oracle 新增序列
  • 原文地址:https://www.cnblogs.com/HouXinLin/p/10849190.html
Copyright © 2020-2023  润新知