第一章 JDBC基础操作 ① 笔记

内容回顾

 List、Set和Map是否都继承自Collection接口?
 List:有序,允许重复
 Set:无序,不允许重复
 Map:键值对集合,键值不能重复,可以有一个null值
 请说明ArrayList和LinkedList的,HashMap和HashTable的区别?
 ArrayList:动态数组,优于查询,插入删除慢
 LinkedList:链表,数据的插入和删除效率高。
 HashMap:线程不安全,轻量级的
 HashTable:线程安全,效率低

本章内容

1.掌握jdbc的工作原理
2.如何获取数据库连接
3.如何对数据进行CRUD操作

第一节 JDBC的使用

1.1 jdbc简介
jdbc(java database connectivity): java数据库连接技术;java应用操作数据库技术的简称。
在这里插入图片描述
1.2 工作原理分析
jdbc api : java厂商(sun公司定义)规定数据库驱动的标准(接口),数据库厂商
(mysql,oracle,sqlserver)提供驱动的具体实现(数据库jar包,统称为数据库驱动)。
DriverManager :驱动管理类
jdbc驱动 : mysql驱动,sqlserver驱动,oracle驱动。连接不同的数据库使用不同的驱动
包(jar)
在这里插入图片描述
在这里插入图片描述
1.3 常用的API介绍
在这里插入图片描述

在这里插入图片描述
 DriverManager(类):加载管理驱动
 Connection:建立连接
 Statement:执行命令并返回结果
 ResultSet:结果集

第二节 实现增、删、该操作

junit: 测试工具类,可以在一个类中定义多个方法,批量执行
1. 添加junit的jar包
2. 在类中定义普通方法
3. 在普通方法上添加@Test注解
4. 选中方法名,右键执行

public class MyTest2 {

	@Test
	public void test1(){
		System.out.println("这是test1方法");
	}
	@Test
	public void test2(){
		System.out.println("这是test2方法");
		System.out.println(1/0);
	}
}
jdbc数据库操作的步骤
1. 添加对应数据库jar包(驱动)
2. 加载驱动类(用反射的方式加载) com.mysql.cj.jdbc.Driver
3. 获取连接 Connection
4. 获取数据库操作对象(命令执行对象) Statment
5. 执行sql(增删改查) executeUpate executeQuery
6. 获取结果集对象(针对查询操作) ResultSet
7. 释放连接

如何添加jar包?

1.导入mysql驱动包
a.复制mysql驱动到项目中在这里插入图片描述

复制jar包
在这里插入图片描述
b.将jar包导入到项目(就是和项目关联)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
MySql的Driver类实现了java.sql.Driver接口

在这里插入图片描述

使用驱动管理类(DriverManager)调用驱动类(Driver)创建连接(Connection),需要提供三个参数:
url
user
password
在这里插入图片描述

public class MyTest2 {
	@Test
	public void test1() throws ClassNotFoundException, SQLException {
		//数据库连接四大金刚(四个属性):
		//数据库驱动类,实现了jdbc api相关接口
		String driver = "com.mysql.cj.jdbc.Driver";
		//mysql服务器地址
		//jdbc:连接协议 mysql:数据库类型 //localhost:3306 服务器地址和端口 0514_
		// useSSL 是否加密 characterEncoding 编码 serverTimezone 服务器时区
		String url = "jdbc:mysql://localhost:3306/0514_db?useSSL=false&chara
		//服务器账号
		String user = "root";
		//服务器密码
		String password = "XXXXXX";
		//测试java程序,使用mysql jar包,连接到mysql数据库上
		Class.forName(driver);
		//使用驱动管理类,调用mysql的驱动类,创建数据库连接
		Connection con = DriverManager.getConnection(url,user,password);
		System.out.println("====数据库连接成功===");
		con.close();
		System.out.println("====数据库关闭成功====");
	}
}

2.1.使用Statement实现数据库操作
通过连接对象获取Statement对象

Statement st = 连接对象.createStatement();

在这里插入图片描述
步骤:

  1. 添加jar包
  2. 加载驱动类
  3. 获取连接对象(Connection)
  4. 通过连接对象创建命令执行对象(Statement)
  5. 定义插入的sql语句
  6. 使用命令执行对象,使用executeUpdate执行增删改sql语句,并返回受影响行数
  7. 关闭数据库对象(Connection,Statement)
package com.test1;

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

public class Test3 {

	public static void main(String[] args) {
		//数据库插入的步骤
		/*
		* 1.添加jar包
		* * 2.加载驱动类
		* 3.获取连接对象(Connection)
		* 4.通过连接对象创建命令执行对象(Statement)
		* 5.定义插入的sql语句
		* 6.使用命令执行对象,执行sql语句,并返回受影响行数
		* 7.关闭数据库对象(Connection,Statement)
		*/
		//驱动类字符串
		String driver="com.mysql.cj.jdbc.Driver";
		//数据库连接字符串
		String url="jdbc:mysql://localhost:3306/goodsdb_1009?serverTimezone=
		//定义用户名
		String user="root";
		//定义密码
		String password="XXXXXX";
		
		//定义连接对象
		Connection con = null;
		//定义sql命令执行对象
		Statement st = null;
		
		try {
			//加载驱动类
			Class.forName(driver);
			//获取连接对象
			con = DriverManager.getConnection(url, user, password);
			
			//定义插入的sql语句
			String sql="insert into goods"
			+ " (goodsName,price,produceDate,address,categoryId)"
			+ " values"
			+ " ('辣条',5.5,'2019-10-05','福建',1) ";
			
			//通过连接对象,创建命令执行对象
			st = con.createStatement();
			
			//使用命令执行对象,使用executeUpdate执行增删改sql语句,并返回受影响行数
			int res = st.executeUpdate(sql);
			
			System.out.println("插入的记录数:"+res);
			
		} catch (Exception e) {
		
			e.printStackTrace();
			
		} finally{
			try {
				//关闭数据库对象
				if(st!=null){
					st.close();
				}
				if(con!=null){
					con.close();
				}
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}
	}
}


第三节 实现查询操作

ResultSet 通过命令对象执行查询操作返回改对象

ResultSet rs = 命令执行对象.executeQuery();

在这里插入图片描述
步骤:

  1. 添加jar包
  2. 加载驱动类
  3. 获取连接Connection
  4. 通过Connection获取得到Statement对象
  5. 编写查询SQL命令
  6. 使用Statement对象执行SQL命令(executeQuery(查询)),返回单个的ResultSet
    对象
  7. 遍历结果集,逐行读取数据,取出每行中的各列的值
  8. 关闭资源
package com.test1;

	import java.sql.Connection;
	import java.sql.DriverManager;
	import java.sql.ResultSet;
	import java.sql.Statement;
	import java.util.Date;
	
public class Test4 {
	public static void main(String[] args) {
		//实现数据库查询数据的步骤:
		/*
		* 1.添加jar包
		* 2.加载驱动类
		* 3.获取连接对象
		* 4.使用连接对象创建命令执行对象
		* 5.定义查询的sql语句
		* 6.使用命令执行对象执行查询sql,并生成结果集对象
		* 7.使用结果集对象,读取查询结果中的记录
		* 8.关闭数据库对象
		*
		*/
		//驱动类字符串
		String driver="com.mysql.cj.jdbc.Driver";
		//数据库连接字符串
		String url="jdbc:mysql://localhost:3306/goodsdb_1009?serverTimezone=
		//定义用户名
		String user="root";
		//定义密码
		String password="XXXXXX";
		
		//连接对象
		Connection con = null;
		//命令执行对戏哪个
		Statement st=null;
		//结果集对象
		ResultSet rs = null;
		
		try {
		
			//加载驱动类
			Class.forName(driver);
			//获取连接对象
			con = DriverManager.getConnection(url, user, password);
			
			//定义查询的sql
			String sql="select goodsId,goodsName,price,produceDate,address,c
			+ " from goods ";
			System.out.println(sql);
			//通过连接对象创建命令执行对象
			st = con.createStatement();
			
			//使用命令执行对象,使用executeQuery方法执行查询sql
			rs = st.executeQuery(sql);
			
			//使用结果集对象,读取结果中的每行数据
			//next():返回一个boolean值,表示,是否指向到一条记录。如果存在记录则返回
			while(rs.next()){
			//获取指向的当前记录中的数据:get数据类型(列索引)
			int goodsId = rs.getInt(1);
			String goodsName = rs.getString(2);
			double price = rs.getDouble(3);
			Date d = rs.getDate(4);
			System.out.println(goodsId+" "+goodsName+" "+price+" "+d);
			}
			
			/*
			boolean b = rs.next();
			System.out.println(b);
			//如果指向到一条记录
			if(b){
				//获取指向的当前记录中的数据:get数据类型(列索引)
				int goodsId = rs.getInt(1);
				String goodsName = rs.getString(2);
				double price = rs.getDouble(3);
				Date d = rs.getDate(4);
				System.out.println(goodsId+" "+goodsName+" "+price+" "+d);
			}
			
			b=rs.next();
			if(b){
				//获取指向的当前记录中的数据:get数据类型(列索引)
				int goodsId = rs.getInt(1);
				String goodsName = rs.getString(2);
				double price = rs.getDouble(3);
				Date d = rs.getDate(4);
				System.out.println(goodsId+" "+goodsName+" "+price+" "+d);
			}*/
		} catch (Exception e) {
			e.printStackTrace();
		} finally{
			//关闭数据库对象
			try {
				if(rs!=null){
					rs.close();
				}
				if(st!=null){
					st.close();
				}
				if(con!=null){
					con.close();
				}
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}
	}
}

练习任务

1、熟练掌握jdbc的操作过程:C(Create )R(Retrieve )U(update)D(delete)
2、打jar包的过程
在这里插入图片描述

// A code block
var foo = 'bar';
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值