hello,大家好,我依旧是你们熟悉的槿凉!那么最近呢也是快把java基础部分学完啦!然后今天赶上没有课。赶紧给大家更新博客,不然我就成了名副其实的"断更"博主了???
ok,废话不多说,今天我们要讲的内容就是数据库部分的知识点了,那么不可能一次性全部都讲的那么仔细,当然了我会用最简洁的语言去描述出最重要的知识点,以便于小伙伴们能够读完博客就觉得自己会了!!! 感觉自己是个数据库大佬 ?? 嗯……我有信心!
1.什么是数据库?
定义:数据库是一种存储结构,它允许使用各种格式输入、处理和检索数据,不必在每次需要数据时重新输入。例如,当需要某人的电话号码时,需要查看电话薄,按照姓名来查阅,这个电话簿就是一个数据库。
数据库特点:
我觉得书本内容大家看的更舒服……嗯没错就是这样。
ok,这里已经了解到了数据库的概念和基本特点,我们这里再来介绍一下SQL语句。那什么是SQL语句呢?
定义:SQL即结构化查询语言,被广泛应用于大多数数据库中,使用SQL语言可以方便地查询、操作、定义和控制数据库中的数据。
1:select语句(用于从数据表中检索数据)
那么怎么用呢?
假设数据表名称是tb,要检索出tb表中所有女员工的姓名,年龄,并按年龄升序排序,代码如下:
select name,age from tb where sex = '女' order by age;
2:insect 语句(用于向表中插入新数据)
假设要向数据表tb中插入数据,代码如下:
insert into tb values('lili','女','销售部');
3:update语句(用于更新数据表中某些记录)
假设要将数据表tb中2号员工的年龄修改为24,代码如下:
update tb set age = 24 where id = 2;
4:delete语句(用于删除语句)
假设要删除数据表tb中编号为1024的员工,代码如下:
delete from tb where id = 1024;
那么到这里呢大家已经大致了解到数据库的部分知识啦,好了,接下来我们讲JDBC的具体概述!
首先,老样子,那么什么是JDBC呢?
定义:JDBC(全称是java database connectivity)是一种可用于执行SQL语句的javaAPI,(API的意思就是应用程序设计接口)是连接数据库和java应用程序的纽带。
JDBC的任务:
1:与数据库建立一个连接。
2:向数据库发送 SQL语句。
3:处理从数据库返回的结果。
注意:JDBC并不能直接访问数据库,必须依赖于数据库厂商提供的JDBC驱动程序。
JDBC的总体结构由4个组件构成:
应用程序、 驱动程序管理器、驱动程序和数据源。我们附上一张知识点图:
是不是看的非常懵呢?其实我也很懵哈哈哈哈 那么,没有关系,我刚开始看的也是非常痛苦,其实我们不必要去死扣这些定义,我们直接到程序中来看:
1.DriverManager类是JDBC的管理层,用于管理数据中的驱动程序。在操作指定数据库之前,需要使用java中Class类的静态方法forName()加载指定数据库的驱动程序。
Class.forName("包名");
DriverManager类的常用方法:getConnection(String url,String user,String password) 指定三个入口参数(依次是连接数据库的URL、用户名、密码)来获取数据库的连接
2.Connection接口代表与特定的数据库连接,在连接上下文中执行SQL语句并返回结果。
3.Statement接口用于在已经建立连接的基础上向数据库发送SQL语句。
4.ResultSet接口类似于一个临时表,用来暂时存放数据库查询操作所获得的结果集。ResultSet实例具有指向当前数据行的指针,指针开始的位置在第一条记录的前面,通过next()方法可将指针往下移。
1:首先我们来连接本地数据库
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionUtil {
public static void main(String[] args) {
Connection con = null; // 声明数据库连接对象
try {
Class.forName("com.mysql.cj.jdbc.Driver");// 加载数据库驱动类
// 通过访问数据库的URL,获取数据库连接对象
con = DriverManager.getConnection(
"jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=CONVERT_TO_NULL&allowPublicKeyRetrieval=true",
"root", "123456");
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
if (con != null) {// 如果数据库不为空
System.out.println("数据库连接成功!");
System.out.println(con);
}
}
}
2.向数据库发送SQL语句(语法如下):
Statement stmt = con.createStatement();
3.处理查询结果集(语法如下):
ResultSet res = stmt.executeQuary("select*from tb_stu");
4.顺序查询(ResultSet类的next()方法的返回值是boolean类型的数据,当游标移动到最后一行之后会返回false。
例:下面的实例就是将数据表tb_stu表中的全部信息显示在控制台上。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCDemo {
public static void main(String[] args) {
try {
Class.forName("com.mysql.cj.jdbc.Driver");// 加载数据库驱动类
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
// 通过访问数据库的URL,获取数据库连接对象
Connection con = DriverManager.getConnection(
"jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=CONVERT_TO_NULL&allowPublicKeyRetrieval=true",
"root", "123456");
Statement stmt = con.createStatement();
ResultSet res = stmt.executeQuery("select * from tb_stu");
while (res.next()) { // 如果当前语句不是最后一条,则进入循环
String id = res.getString("id"); // 获取列名是id的字段值
String name = res.getString("name"); // 获取列名是name的字段值
String sex = res.getString("sex"); // 获取列名是sex的字段值
String birthday = res.getString("birthday"); // 获取列名是birthday的字段值
System.out.print("编号:" + id); // 将列值输出
System.out.print(" 姓名:" + name);
System.out.print(" 性别:" + sex);
System.out.println(" 生日:" + birthday);
}
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
运行结果如下:
5.模糊查询
SQL语句中提供了LIKE操作符御用模糊查询,可使用"%"来代替0个或多个字符,使用下划线“—”来代替一个字符。例如,在查询姓张的同学信息时,可以使用以下SQL语句:
select* from tb_stu where name like'张%'
例:<找出所有姓张的同学>
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCDemo2 {
public static void main(String[] args) {
try {
Class.forName("com.mysql.cj.jdbc.Driver");// 加载数据库驱动类
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
// 通过访问数据库的URL,获取数据库连接对象
Connection con = DriverManager.getConnection(
"jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&zeroDateTimeBehavior=CONVERT_TO_NULL&allowPublicKeyRetrieval=true",
"root", "123456");
Statement stmt = con.createStatement();
ResultSet res = stmt.executeQuery("select * from tb_stu where name like '张%'");
while (res.next()) { // 如果当前语句不是最后一条,则进入循环
String id = res.getString("id"); // 获取列名是id的字段值
String name = res.getString("name"); // 获取列名是name的字段值
String sex = res.getString("sex"); // 获取列名是sex的字段值
String birthday = res.getString("birthday"); // 获取列名是birthday的字段值
System.out.print("编号:" + id); // 将列值输出
System.out.print(" 姓名:" + name);
System.out.print(" 性别:" + sex);
System.out.println(" 生日:" + birthday);
}
con.close(); // 关闭数据库连接
} catch (SQLException e) {
e.printStackTrace();
}
}
}
[点击并拖拽以移动]
好了,欢乐的学习时间总是这么短暂,那么到这里也就要和大家说拜拜啦,我们下篇博客见!