学习JDBC连接mysql

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。

每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。

我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。

所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

RDBMS 即关系数据库管理系统(Relational Database Management System)的特点:

1.数据以表格的形式出现
2.每行为各种记录名称
3.每列为记录名称所对应的数据域
4.许多的行和列组成一张表单
5.若干的表单组成database

JDBC

首先我们需要利用jdbc技术搭建java和数据库之间的桥梁,以便我们能搞顺利访问并修改数据库,这就需要我们添加相应的驱动包,并且利用到java当中的Connection接口以及Statement接口来相辅。

以下的几个小程序分别展示了该如何利用jdbc来访问数据库当中的test库数据。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class 连接数据库 {
	public static void main(String[] args) {
		try {
			//加载驱动包
			Class.forName("com.mysql.jdbc.Driver");
			String url = "jdbc:mysql://127.0.0.1:3306/test";
			String username = "root";
			String password = "root";
			//获取数据库连接对象
			Connection con = DriverManager.getConnection(url,username,password);
			System.out.println(con);
			con.close();
		} catch (ClassNotFoundException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
	}
}

利用sql接口向数据库发送sql语句,用来搜索tb_st表中的数据

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.Statement;

public class 数据库搜索 {
	public static void main(String[] args) {
		Connection con = null;//连接接口
		Statement stmt = null;//发送sql接口
		ResultSet rs = null;//结果集接口
		try {
			//添加驱动
			Class.forName("com.mysql.jdbc.Driver");
			//连接数据库
			con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","root","root");
			//创建对象
		    stmt = con.createStatement();
		    //发送sql语句并回送结果
		    rs = stmt.executeQuery("select * from tb_st");
		    //遍历寻找
		    while(rs.next()) {
		    	int id = rs.getInt("id");
		    	String name = rs.getString(2);
		    	String sex = rs.getString("sex");
		    	String birthday = rs.getString(4);
		    	System.out.println("编号="+id+"姓名="+name+"性别="+sex+"生日="+birthday);
		    }
		} catch (ClassNotFoundException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}finally {
			//依次关闭
			try {
				rs.close();
			} catch (SQLException e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
			try {
				stmt.close();
			} catch (SQLException e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
			try {
				con.close();
			} catch (SQLException e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
		}
	}
}

利用sql接口向数据库发送sql语句,用来对tb_st表中的数据进行增添,删除,修改。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class 数据库的添_修_删 {
	public static void main(String[] args) {
		Connection con = null;
		Statement sate = null;
		try {
			//添加数据库驱动
			Class.forName("com.mysql.jdbc.Driver");
			//连接数据库
			con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","root","root");
			
			sate = con.createStatement();
			
			//插入数据
			String sql1 = "insert into tb_stu(name,sex,birthday) values('tom','男','2012-02-01')";
			int result1 = sate.executeUpdate(sql1);
			System.out.println("有"+result1+"行数据被修改");
			
			//修改数据
			String sql2 = "update into tb_stu set birthday = '1970-01-01' where id = 5";
			int result2 = sate.executeUpdate(sql2);
			System.out.println("有"+result2+"行数据被修改");
			
			//删除数据
			String sql3 = "delete from tb_stu where id = 5";
			int result3 = sate.executeUpdate(sql3);
			System.out.println("有"+result3+"行数据被修改");
			
		} catch (ClassNotFoundException | SQLException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}finally {
			try {
				sate.close();
			} catch (SQLException e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
			try {
				con.close();
			} catch (SQLException e) {
				// TODO 自动生成的 catch 块
				e.printStackTrace();
			}
		}
	}
}

在利用JDBC技术连接mysql过程当中要注意许多细节问题,添加相关的try-catch
语句用来抛出异常,其次桥梁之间利用流操作,为了避免相关数据的丢失,要在使用完毕之后进行关闭操作,层层关闭,切记遗漏。
其次,为了避免信息的不安全,我们还需提供数据动态搜索操作

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;


public class 数据库动态搜索 {
	public static void main(String[] args) {
		Connection con = null;
		try {
			//添加数据库驱动
			Class.forName("com.mysql.jdbc.Driver");
			//连接数据库
			con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","root","root");
			
			//动态规划  可以避免数据库安全漏洞,使用?通配符进行改善
			String sql = "select * from tb_stu where name = ? or sex = ?";
			//PreparedStatement继承于statement,更加安全,强大
			PreparedStatement ps = con.prepareStatement(sql);
			ps.setString(1, "%");
			ps.setString(2, "男");
			
			ResultSet rs = ps.executeQuery();
			System.out.println("id\tname\tsex\tbirthday");
			while(rs.next()) {
				System.out.println(rs.getInt(1)+"\t"+rs.getInt(2)+"\t"+rs.getInt(3)+"\t"+rs.getInt(4));
			}
			rs.close();
			ps.close();
			con.close();
		} catch (ClassNotFoundException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值