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`  (\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(); //关闭连接
		
	}

}

公众号

posted @ 2019-05-11 16:49  听风逝夜blog  阅读(17587)  评论(4编辑  收藏  举报