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();
}
}
就酱.