Java之初入JDBC-连接数据库

之前我们学完了Mysql
现在我们要学习怎么用JAVA来操作Mysql数据库(JDBC不止能操作Mysql还能操作如Redis等数据库)

概述

在这里插入图片描述
JDBC原理图
在这里插入图片描述
大致我们java语言开发者,指定一个接口
这个接口-包含了对数据库基本操作
然后不同数据库的开发厂商,来根据java对应的接口实现不同的类
形成一个jar包,也可以叫驱动

这个JDBC接口
里面包含的方法无非就
1.连接数据库2.增删改查3.关闭数据库
后面的话主要是学JDBC
里面到底有哪些方法/类然后怎么操作
就这样

JDBC接口是一组接口还有一些类
主要在java.sql和javax.sql包中
在这里插入图片描述

快速入门

四个步骤
在这里插入图片描述

案例

首先在db02数据库创建一个演员表(用sqlyog创建)
然后在java(eclipse)用jdbc连接sql表添加语句

package yuan.hsp.JDBC;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

import com.mysql.jdbc.Driver;
@SuppressWarnings({"all"})
// 第一个JDBC程序演示一些简单操作
public class JDBC01 {
	public static void main(String[] args) throws SQLException {
		//前置工作:项目下建一个文件夹
		//把mysql.jar拷贝到该目录下然后Add to project加入到项目中才能使用mysql连接jdbc的jar文件(一些接口个包)
		//1.注册驱动
		Driver driver = new Driver();//Driver就是对应的一个类 
		
		//2.得到连接
		//jdbc:mysql://表示jdbc连接mysql,localhost是主机ip(本机主机localhost就可以),3306对应mysql端口
		//db02对应想要连接的数据库,mysql连接本质还是socket连接
		String url="jdbc:mysql://localhost:3306/db02";
		//将用户名和密码放到properties对象中(注册操作)
		//!user和password是规定好的,就是对应用户名和密码,不要写成其他的
		Properties properties = new Properties();
		properties.setProperty("user", "root");//用户
		properties.setProperty("password", "123456");//密码
		
		Connection connect = driver.connect(url, properties);//得到连接
		//3.执行sql语句 
		String sql = "insert into actor values(null,'刘德华','男','1970-11-11','110')";
		//创建一个statement对象(执行静态sql语句,返回生成结果的对象)
		Statement Statement = connect.createStatement();
		int executeUpdate = Statement.executeUpdate(sql);//dml语句返回受影响的行数
		
		System.out.println(executeUpdate);
		//4.关闭连接(先开后闭)
		Statement.close();
		connect.close();
		
	}

}

对应图
在这里插入图片描述
结果
在这里插入图片描述

数据库连接方式

也就是和数据库建立网络连接的方式

方式1-driver静态

在这里插入图片描述
也就是我们刚才那个案列用的
因为是静态加载
这种灵活性太低,依赖性比较高

方式2-driver利用反射实现动态加载

在这里插入图片描述
可以利用反射进行动态加载driver类
更加灵活
减少依赖性

方式3-DriverManger

-
把原本的driver对象作为参数传给DriverManger对象
也能获取对应的连接
在这里插入图片描述

方式4-省略DriverManger的注册驱动!!!

用的最多

这个其实就是上面那个的省略版本
省略的是我们注册驱动的工作-没有new driver
在这里插入图片描述
在这里插入图片描述
主要是Class.forName(Driver类)看它的源码
在这里插入图片描述
如图,这个类里面有一段静态代码块,在类加载的时候
就已经自动注册就是DriverManger.registerDriver(new Driver());
所以我们不用自己去做了
注意
在这里插入图片描述
mysql5.1.6之后就算不写
Class.forName(Driver)也会自动注册,也能成功运行代码获取连接
不过还是建议写上

方式5-运用配置文件更加灵活

在这里插入图片描述

就是把原来写在程序中的url,user,driver路径和password放在配置文件中
从配置文件中读取,操作还是方式4,就是数据来源不同
配置文件
在这里插入图片描述
代码
在这里插入图片描述

小练习

在这里插入图片描述

package yuan.hsp.JDBC;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

import yuan.learn.basic.Multithreading.interrupt_;
@SuppressWarnings({"all"})
public class pra01 {
	public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException, SQLException {
		//获取资源和注册驱动
		Properties properties = new Properties();
		properties.load(new FileInputStream("src\\pra.properties"));
		Class.forName(properties.getProperty("driver"));
		String user = properties.getProperty("user");
		String password = properties.getProperty("password");
		String url = properties.getProperty("url");
		//得到连接
		Connection connection = DriverManager.getConnection(url, user, password);
		System.out.println(connection);
		//操作语句
		Statement createStatement = connection.createStatement();
		String crString="CREATE TABLE actor(\r\n"
				+ "	id INT PRIMARY KEY AUTO_INCREMENT,\r\n"
				+ "	`name` VARCHAR(32) NOT NULL DEFAULT '',\r\n"
				+ "	sex CHAR(1) NOT NULL DEFAULT '女',\r\n"
				+ "	borndate DATETIME,\r\n"
				+ "	phone VARCHAR(12)); ";
		createStatement.execute(crString);
		for(int i=0;i<5;i++) {
			createStatement.execute("insert into actor values(null,'小明','男','2000-1-1','123')");
		}
		createStatement.execute("update actor set `name`='小袁' WHERE id=1");
		createStatement.execute("delete from actor where id=3");
		//关闭
		createStatement.close();
		connection.close();
	}

}
user=root
password=123456
url=jdbc:mysql://localhost:3306/db02
driver=com.mysql.jdbc.Driver

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小袁拒绝摆烂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值