第一章 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();
步骤:
- 添加jar包
- 加载驱动类
- 获取连接对象(Connection)
- 通过连接对象创建命令执行对象(Statement)
- 定义插入的sql语句
- 使用命令执行对象,使用executeUpdate执行增删改sql语句,并返回受影响行数
- 关闭数据库对象(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();
步骤:
- 添加jar包
- 加载驱动类
- 获取连接Connection
- 通过Connection获取得到Statement对象
- 编写查询SQL命令
- 使用Statement对象执行SQL命令(executeQuery(查询)),返回单个的ResultSet
对象 - 遍历结果集,逐行读取数据,取出每行中的各列的值
- 关闭资源
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';
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/118098.html