数据库的主要使用场景:
1)OLTP:事务处理(发表文章、写作业、批改作业...CURD都有)
2)OLAP:事务分析(某班共写了多少作业、完成率、CSDN用户增长数...一次涉及众多数据,一般仅查询,很少修改)
目录
1)POM(Project Object Model)工程对象模型
2)xml (exention Markup Language) 扩展标记性语言,是一种语言结构
1)创建数据库连接Connection(得到Connection对象)
2)得到语句(Statement)对象【带结果集或不带结果集的SQL语句】
4)遍历结果集(ResultSet);executeQuery:执行查询
一、OLTP-使用java代码操作数据库
1.pom.xml:项目的配置文件
maven工具:项目构建工具
1)POM(Project Object Model)工程对象模型
理解:把整个工程的构建过程抽象成一个对象,既然有对象就应该把数据等关联起来
2)xml (exention Markup Language) 扩展标记性语言,是一种语言结构
xml是用文本表示树型结构。假设有这样一棵树:
文本表示:
把上图设置好后点m的小图标maven或者右键Maven让maven-Reaload project加载一下本次修改的内容。加载完后external libraries中会看到Maven....这个库的出现【library:库;external library表示我们需要依赖的第三方库有哪些】。
//pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.wy</groupId>
<artifactId>pro-1</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 项目的一些基本属性 -->
<properties>
<!-- compiler:编译器;source:源。maven的源是1.8版本,目标是1.8版本 -->
<!-- 整个编译交给maven处理,所以需要告诉maven选择编译器时把源码当作哪个版本编译 -->
<!-- source1.8是把java文件当成java1.8版本使用,target1.8是编译出的类文件按照1.8版本编译 -->
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<!-- dependencies:依赖。开始引入第三方库,项目运行,需要依赖第三方代码,一个项目中可以依赖很多第三方 -->
<dependencies>
<!-- 具体第三方开始写.<groupId>,artifactId,version可以唯一确定一个第三方 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
</dependencies>
</project>
2.展示数据库中的库名
package com.wy;
import com.mysql.cj.jdbc.MysqlDataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* @author 美女
* @date 2022/04/05 23:22
**/
public class Demo1 {
public static void main(String[] args) throws SQLException {
//show database(展示当前mysql服务器上有多少个库)
MysqlDataSource db=new MysqlDataSource();
db.setServerName("localhost");
db.setPort(3306);
db.setUser("root");
db.setPassword("xxxxxxxxx");
db.setUseSSL(false);
db.setCharacterEncoding("utf-8");
db.setServerTimezone("Asia/Shanghai");
/**
* 上面是配置-java代码写出的mysql客户端
*/
try (Connection c=db.getConnection()){
try(PreparedStatement ps=c.prepareStatement("show databases")){
try(ResultSet rs=ps.executeQuery()){
while(rs.next()){
String name=rs.getString(1);
System.out.println(name);//一行打一个名字
}
}
}
}
}
}
三.JDBC:java数据库的连接组件
(Java Database Connectivity) 所有数据库都可以用这套方式连接
1.配置
客户端连接服务器(告诉客户端,如何找到网络中的服务器进程)
类比保存电话联系人信息
1.找到是网络中的哪台主机(host,哪台电脑)--默认通过ip地址/域名【127.0.0.1/localhost 本机上】去找。
2.第二步,端口(port,一个专门的标识符,在电脑上跑的众多程序中精准找到对应程序)。3306端口等。mysql服务器就相当于摆摊的,找到3306摊位摆好摊了,然后等待人来买东西。客户端就相当于找它(服务器)买东西的人,所以就要告诉客户端怎么找到这个摊位,去127.0.0.1这个城市3306这个摊位就找到了。如果服务器没启动,即到那个摊位发现没出摊,就会搜寻失败。
即:
db.setServerName("localhost");
db.setPort(3306);
3.告诉服务器我们是谁
db.setUser("root");
db.setPassword("xxxxxxxxx");
4. 配置其他内容
db.setUseSSL(false);
db.setCharacterEncoding("utf-8");
db.setServerTimezone("Asia/Shanghai");
整块代码:
public static void main(String[] args) throws SQLException {
MysqlDataSource db=new MysqlDataSource();
db.setServerName("localhost");
db.setPort(3306);
db.setUser("root");
db.setPassword("xxxxxxxxx");
db.setDatabaseName("java_lib");//设置默认库
db.setUseSSL(false);
db.setCharacterEncoding("utf-8");
db.setServerTimezone("Asia/Shanghai");
/**
* 上面是配置-java代码写出的mysql客户端
*/
}
即:【通过DataSource方式】
public class DBUtil {
//由于mysql的对象只需要一份,一个static就够了
private static final DataSource dataSource;
static {
MysqlDataSource db=new MysqlDataSource();
db.setDatabaseName("localhost");
db.setPort(3306);
db.setUser("root");
db.setPassword("xxxxxxxxx");
db.setDatabaseName("java_lib");
try {
db.setUseSSL(false);
} catch (SQLException e) {
e.printStackTrace();
}
try {
db.setCharacterEncoding("utf-8");
} catch (SQLException e) {
e.printStackTrace();
}
try {
db.setServerTimezone("Asia/Shanghai");
} catch (SQLException e) {
e.printStackTrace();
}
dataSource=db;
}
public static Connection connection() throws SQLException{
return dataSource.getConnection();
}
}
也可以写成:
public class DButil {
private static final DataSource dataSource;
static {
MysqlDataSource db=new MysqlDataSource();
String url="jdbc:mysql://localhost:3306/java_lib?useSSL=false&characterEncoding=utf-8&serverTimezone=Asia/Shanghai";
db.setUrl(url);
db.setUser("root");
db.setPassword("xxxxxx");
dataSource=db;
}
public static Connection connection() throws SQLException{
return dataSource.getConnection();
}
}
2.JDBC的使用
1)创建数据库连接Connection(得到Connection对象)
上面配置中已经创建好了数据库及配置条件,现在进行连接操作得到Connection对象:
类比打通电话了
a.
try ( Connection c = db.getConnection() ) {
}
等价于:
b.也可以通过DriverManager方式:
2)得到语句(Statement)对象【带结果集或不带结果集的SQL语句】
类比要说的话
a.带结果集的SQL语