JDBC--连接数据库

目录

1.JDBC的概念

2.JDBC至数据库的通信路径

3.Java.SQL包中常用的接口和类包括:

4.实现JDBC

实例一:查询表中所有信息

 实例二:插入一条记录(使用占位符)

 实例三:插入一条记录


1.JDBC的概念

JDBC是java DataBase Connectivity的缩写,是Sun的Javasoft公司制定的Java数据库连接技术,是一套标准接口。

JDBC API不能直接访问数据库,它依赖于数据库厂商提供的JDBC Driver(JDBC的驱动程序).

使用Java和JDBC开发的程序可以跨数据库平台运行,受数据库的限制很少。

2.JDBC至数据库的通信路径

3.Java.SQL包中常用的接口和类包括:

  • Driver接口和DriverManager类
  • Connection
  • Statement或者PreparedStatement
  • ResultSet

注意:

所有的JDBC驱动程序都必须实现Driver接口(JDBC驱动程序加入到项目中)

DriverManager用来建立和数据库的连接以及管理JDBC驱动程序。

Connection代表Java程序和数据库的连接。连接上下文执行SQL语句并返回结果。

  1. createStatement() 创建并返回Statement对象
  2. PreparedStatement(String sql) 创建并返回PreparedStatement对象   占位符setXXX(位置参数,值参数)

Statement接口定义了一组数据库操作的方法,可以通过这个接口实现类对对象执行指定的SQL命令。

  1. executeUpdate()   更新创建和更新表
  2. executeQuery()    对于select语句返回ResultSet
  3. execute()              返回布尔值,用于执行任何SQL语句

ResultSet表示select语句查询而来的结果集。

  1. next(),使游标定位到下一条记录 (记录行号一般从1开始)
  2. getXXX(),可以取得某个字段的值

4.实现JDBC

准备工作:将数据库的驱动下载好,进行解压,将mysql-connector-java-8.0.25.jar复制到项目的lib文件夹中-->右击jar包,Build Path。

实例一:查询表中所有信息

public class Test01 {
	public static void main(String[] args) {
		try {
			String url = "jdbc:mysql://localhost:3306/store?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true";
			String sql = "select * from employee";
			List<Emp> list = new ArrayList<>();//加载驱动
			Class.forName("com.mysql.cj.jdbc.Driver");//得到连接对象
			Connection con = DriverManager.getConnection(url, "root", "");
			PreparedStatement ps = con.prepareStatement(sql);
			ResultSet rs = ps.executeQuery();
			while(rs.next()) {
				int empId = rs.getInt(1);
				String empName = rs.getString(2);
				String empSex = rs.getString(3);
				int empAge = rs.getInt(4);
				String empAdd = rs.getString(5);
				String empTel = rs.getString(6);
				double empSalary = rs.getDouble(7);
				int empDepId = rs.getInt(8);
				Emp emp =new Emp(empId, empName, empSex, empAge, empAdd, empTel, empSalary, empDepId);//对象必须放到循环内部定义
				list.add(emp);
			}
			for (Emp emp : list) {
				System.out.println(emp);
			}
			ps.close();
			con.close();
		} catch (ClassNotFoundException | SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

 实例二:插入一条记录(使用占位符)

public class Test02 {
	public static void main(String[] args) {
		try {
			String url = "jdbc:mysql://localhost:3306/store?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true";
			String sql = "insert into employee values(0,?,?,?,?,?,?,?)";//插入记录
			Class.forName("com.mysql.cj.jdbc.Driver");//加载驱动
			Connection con = DriverManager.getConnection(url,"root","");//连接数据库
			PreparedStatement ps = con.prepareStatement(sql);
			//通过占位符进行输入
			ps.setString(1, "花萼");
			ps.setString(2, "女");
			ps.setInt(3, 23);
			ps.setString(4, "绿源街道");
			ps.setString(5, "19099123214");
			ps.setDouble(6, 12900);
			ps.setInt(7, 121001);
			int result = ps.executeUpdate();
			//关闭  先开后关
			ps.close();
			con.close();
			System.out.println(result);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

 实例三:插入一条记录

public class Test03 {
	public static void main(String[] args) {
		try {
			String url="jdbc:mysql://localhost:3306/store?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true";
			String sql="insert into employee values(0,'碧姬','女',29,'洪庆街道','17655412389',15000,'121003')";
			Class.forName("com.mysql.cj.jdbc.Driver");//加载驱动			
			Connection con = DriverManager.getConnection(url, "root", "");//得到连接对象
			Statement st = con.createStatement();//创建sql操作面板
			int result = st.executeUpdate(sql);//执行sql操作,并返回结果
			st.close();
			con.close();
			System.out.println(result);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值