Java使用mysql_connector驱动包连接数据库

一、前言:

     之前的一篇笔记是关于安装MySQL数据库和SQLyog数据库可视化工具的教程(该教程连接),下面写一下如何使用mysql_connector连接数据库并且对数据进行删、增、查、改等操作。

二、实现步骤:

1、首先要使用mysql_connector驱动包的话需要加添加mysql_connector驱动包,因为java本身是没有mysql_connector驱动包的,我们需要在网上下载mysql_connector驱动包添加到程序的添加库中,这是我用的mysql_connector驱动包的版本下载链接:https://download.csdn.net/download/sdbx_lyp/10396071。下载好驱动包以后,新建java project:按下图所示步骤添加mysql_connector驱动包:


然后选择mysql_connector驱动包添加。

2、添加完成后剩下的就是写代码了:

public class DataBase {

	public static void main(String[] args) {
		int numbefore = 0;
		Connection con = null;//链接接口
		Statement stmt = null;//发送SQL语句接口
		ResultSet rs = null;//返回结果集接口
		PreparedStatement ps = null;
		FileInputStream fis;  
		try {
			//加载驱动
			Class.forName("com.mysql.jdbc.Driver");
			//连接方法一
			/*String url = "jdbc:mysql://127.0.0.1:3306/students";//127.0.0.1可以改成localhost,表示本地主机。
			String username = "root";
			String password = "123";
			con = DriverManager.getConnection(url,username,password);*/
			
			//连接方法二,useUnicode=true&characterEncoding=UTF-8是设置编码方式
			String URL ="jdbc:mysql://127.0.0.1:3306/students?user=root&password=123&useUnicode=true&characterEncoding=UTF-8";
			con = DriverManager.getConnection(URL);
			
			//如果连接成功打印con不为空
			System.out.println(con);
			stmt = con.createStatement();
			//con.close();
			
			//查询数据库中表的值,并且打印出来
			rs = stmt.executeQuery("select * from  students_1");
			while(rs.next()) { //next()方法控制行数,一行一行读出返回结果集,直到null
				int id = rs.getInt("id");//获取id这一列的数据
				String name = rs.getString(2);//获取第二列数据
				String sex = rs.getString("sex");
				int age = rs.getInt("age");
				System.out.println("编号="+id+",姓名="+name+",性别="+sex+",年龄="+age);
				//计算表中数据的行数
				numbefore = numbefore + 1;
			}
			
			//打印出操作数据前的行数
			System.out.println("操作前数据为"+numbefore+"行");
			
			//添加图片数据
			 File image = new File("C:/Users/lyp/Pictures/桌面背景/1.jpg");  //添加图片的路径
			 ps = con.prepareStatement("INSERT INTO `students`.`students_1` (`id`,`name`, `sex`, `age`,`icon`)"
			 		+ " VALUES (?,?,?,?,?);");  
	                 ps.setInt(1, numbefore+1);  
	                 ps.setString(2, "兰陵王"); 
	                 ps.setString(3,"男");
	                 ps.setInt(4,500);  
	                 fis = new FileInputStream(image);  
	                 ps.setBinaryStream(5, (InputStream) fis, (int) (image.length()));  
	                 //检查是否添加成功
	                 int s = ps.executeUpdate();  
	                 if (s > 0) {  
	                    System.out.println("Uploaded successfully !");  
	                 } else {  
	                    System.out.println("unsucessfull to upload image.");  
	                 }  
			
			//添加一行数据
			//使用SQL语句:INSERT INTO `students`.`students_1` (`id`, `name`, `sex`, `age`) VALUES ('1','小七', '女', '10'); 添加数据
			/*String sql1 = "INSERT INTO `students`.`students_1` (`id`,`name`, `sex`, `age`) VALUES ('1','小七', '女', '10');";
			int result1 = stmt.executeUpdate(sql1);
			System.out.println("有"+result1+"行记录被修改");*/
			
			//动态添加一行数据
			/*ps = con.prepareStatement("INSERT INTO `students`.`students_1` (`id`,`name`, `sex`, `age`) VALUES (?,'小七', '女', '10');");
			ps.setInt(1, numbefore+1);
			int result_x = ps.executeUpdate();
			System.out.println("有"+result_x+"行记录被修改");*/
		
			//修改一个数据
			//使用SQL语句:UPDATE `students`.`students_1` SET `name` = '康纳' WHERE `age` = 12 AND `sex` = '男':修改age=12和sex=男的数据的name为康纳
			String sql2 = "UPDATE `students`.`students_1` SET  `name` = '康纳' WHERE `id`= '4' AND `age` = '12' AND `sex` = '男'; ";
			int result2 = stmt.executeUpdate(sql2);
			System.out.println("有"+result2+"行记录被修改");
			
			//删除一行数据
			//使用SQL语句:DELETE FROM `students`.`students_1` WHERE `id` = '5' ; 删除id=5的一行
			/*String sql3 = "DELETE FROM `students`.`students_1` WHERE `id` = '8' ; ";
			int result3 = stmt.executeUpdate(sql3);
			System.out.println("有"+result3+"行记录被修改");*/
						
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}finally {//依次关闭数据库接口
			if(rs!=null) {
				try {
					rs.close();
				} catch (SQLException e) {
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				}
			}
			if(stmt!=null) {
				try {
					stmt.close();
				} catch (SQLException e) {
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				}
			}
			if(con!=null) {
				try {
					con.close();
				} catch (SQLException e) {
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				}
			}
		}

	}

}

三、代码说明:

1、前面定义连接接口con、发送SQL语句接口stmt以及返回结果集接口re,其中连接接口con主要是用来连接数据库的代码中写了两种方法,都可以,在数据库连接的第一种方法代码中:

String url = "jdbc:mysql://127.0.0.1:3306/students";
String username = "root";
String password = "123";
con = DriverManager.getConnection(url,username,password);
127.0.0.1是本地地址,3306是数据库的端口(在配置MySQL时设置),后面students是我新建的数据库。username是数据库用户名,password是用户登录密码。第二中方法类似。

2、在查询数据中有一个students_1是我在students中创建的表,如下图所示:


3、现在我将代码中对数据库的其他操作注释掉,只留查询数据库数据,和添加图片数据的代码以及修改数据代码,修改数据代码:

String sql2 = "UPDATE `students`.`students_1` SET  `name` = '康纳' WHERE `id`= '4' AND `age` = '12' AND `sex` = '男'; ";
int result2 = stmt.executeUpdate(sql2);
System.out.println("有"+result2+"行记录被修改");

按照条件修改:将id= 4,age=12和sex=“男”的数据的nam改为康纳。

运行后控制台输出如下图所示:


其中第一行com.mysql.jdbc.JDBC4Connection@246b179d表示连接数据库成功。接下来是打印的是数据库修改之前保存的数据,后面的Uploaded successfully !表示添加图片数据成功。运行完成后数据库如下图所示:


可以看到400k的一个图片数据已经添加进去了。点击第五行的icon栏会显示你添加的图片。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值