JDBC连接数据库

JDBC程序编写步骤

  • 注册驱动
  • 获取连接
  • 执行增删改查
  • 释放资源

演示步骤

准备工作:引入JDBC驱动程序
jar包集合下载:https://mvnrepository.com/artifact/mysql/mysql-connector-java
一、 在Java Project项目应用中添加数据库驱动jar:

(1)下载驱动包
如果下载的MySQL版本是8.0以上版本的需要下载8.0以上的驱动包

总之,就是尽量下载和MySQL对应版本的jar包。
在这里插入图片描述

(2)添加到项目的根目录下libs文件夹中(如果没有则自己手动创建)
在这里插入图片描述
(3)下载后将jar包导入,项目–>Build Path–>Add External Archievs
在这里插入图片描述会出现存放jar包的地方:
在这里插入图片描述

二、加载并注册驱动

因为 Driver 接口的驱动程序类都包含了静态代码块,在这个静态代码块中,会调用 DriverManager.registerDriver() 方法来注册自身的一个实例,所以可以换一种方式来加载驱动。(即只要想办法让驱动类的这段静态代码块执行即可注册驱动类,而要让这段静态代码块执行,只要让该类被类加载器加载即可)

调用 Class 类的静态方法 forName(),向其传递要加载的 JDBC 驱动的类名

//通过反射,加载与注册驱动类,解耦合(不直接依赖)
Class.forName("com.mysql.jdbc.Driver");
三、获取连接

可以通过 DriverManager 类建立到数据库的连接Connection:
DriverManager 试图从已注册的 JDBC 驱动程序集中选择一个适当的驱动程序。

  • public static Connection getConnection(String url)

  • public static Connection getConnection(String url,String user, String password)

  • public static Connection getConnection(String url,Properties
    info)其中Properties info通常至少应该包括 “user” 和 “password” 属性

MySQL的连接URL编写方式:
  • jdbc:mysql://主机名称:mysql服务端口号/数据库名称?参数=值&参数=值
  • jdbc:mysql://localhost:3306/testdb
  • jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=utf8(如果JDBC程序与服务器端的字符集不一致,会导致乱码,那么可以通过参数指定服务器端的字符集)
  • jdbc:mysql://localhost:3306/testdb?user=root&password=123456
//1、加载与注册驱动
		Class.forName("com.mysql.jdbc.Driver");
		
		//2、获取数据库连接
		String url = "jdbc:mysql://localhost:3306/test";
		// 第二个 root 为自己的数据库连接密码
		Connection conn = DriverManager.getConnection(url, "root", "root");
四、执行增删改

数据库连接被用于向数据库服务器发送命令和 SQL 语句,并接受数据库服务器返回的结果。

在 java.sql 包中有 3 个接口分别定义了对数据库的调用的不同方式:
  • Statement:用于执行静态 SQL 语句并返回它所生成结果的对象。
  • PrepatedStatement:SQL 语句被预编译并存储在此对象中,然后可以使用此对象多次高效地执行该语句。
  • CallableStatement:用于执行 SQL 存储过程。
Statement命令对象接口

executeUpdate(sql):执行增删改语句,返回受影响的行数
executeQuery(sql):执行查询语句,返回结果集
execute(sql):执行任意sql语句,返回boolean

prepareStatement预编译命令对象接口

executeUpdate( ):执行增删改语句,返回受影响的行数
executeQuery( ):执行查询语句,返回结果集
execute( ):执行任意sql语句,返回boolean
setObject(占位符索引,占位符的值):设置对应索引的占位符的值,类型为Object类型

ResultSet结果集对象接口

next() : 下移一行,返回当前行是否有值
previous():上移一行,返回当前行是否有值
getObject(列索引 | 列名):返回对应列的值,接受类型为Object

五、释放资源

Connection、Statement、ResultSet都是应用程序和数据库服务器的连接资源,使用后一定要关闭,可以在finally中关闭。

六、示例代码:

(一)初始代码:

package com.test.jdbc;

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

import com.mysql.cj.jdbc.Driver;

public class TestConnect01 {

	public static void main(String[] args) throws SQLException {
  
		// 1、加载驱动
		DriverManager.registerDriver(new Driver());
		System.out.println("创建driver成功");
		
		
		// 2、获取连接
		Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/girls?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8", "root", "www123456");

		System.out.println("连接成功");

		// 3、执行增删改查
		// 编写sql语句
		// 删除
//		String sql = "delete from beauty where id = 9";
		// 更新
//		String sql = "update beauty set name='张钰琪'  where id = 7";
		// 增加
		String sql = "insert into beauty values(null, '阚清子', '女', '1999-1-4', '120',null, 3)";

		// 获取执行sql语句的命令对象
		Statement statement = connection.createStatement();
		// 使用命令对象指向sql语句
		int update = statement.executeUpdate(sql);
		// 处理执行结果
		System.out.println(update > 0 ? "success" : "failure");

		// 4、关闭连接(后用先关)
		statement.close();
		connection.close();

	}

}
// 注:如果下载的MySQL版本为8.0以上,import com.mysql.cj.jdbc.Driver
// 不要忘记加.cj

(二)可以用另外一种方式:
可以在src目录下新建一个properties文件
在这里插入图片描述

user=root
password=123456
url=jdbc:mysql://localhost:3306/girls?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
#?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8
#?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
driver=com.mysql.cj.jdbc.Driver

再把 user, password, driver, url抽取出来,这样就可以避免一直写重复的代码了。

package com.test.jdbc;

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

public class TestJDBC {
	public static void main(String[] args) throws Exception {

		Properties info = new Properties();
		info.load(new FileInputStream("src\\jdbc.properties"));
		String user = info.getProperty("user");
		String password = info.getProperty("password");
		String driver = info.getProperty("driver");
		String url = info.getProperty("url");

		// 1、注册驱动
		Class.forName(driver);

		// 2、获取连接
		Connection connection = DriverManager.getConnection(url, user, password);
		System.out.println("连接成功");

		// 3、执行增删改查
		// 编写sql语句
		// 删除
		String sql = "delete from beauty where id = 9";

		// 获取执行sql语句的命令对象
		Statement statement = connection.createStatement();
		// 使用命令对象指向sql语句
		int update = statement.executeUpdate(sql);
		// 处理执行结果
		System.out.println(update > 0 ? "success" : "failure");

		// 4、关闭连接(后用先关)
		statement.close();
		connection.close();

	}

}

就酱.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值