JDBC
1. JDBC介绍
Java Database Connectivity
Java规定的数据库连接接口,SUN公司提供的,为了简化程序员操作数据库的过程。
SUN公司要求数据库提供商,按照JDBC API接口规范,完成对应Java程序的数据连接操作,规范Jar包,并且提供对应的操作方法。
JDBC接口中核心的内容
java.sql.*
javax.sql.*
2. JDBC连接数据库所需的必要条件
cmd > mysql -hlocalhost -uroot -p123456
1. 明确连接使用的数据库是MySQL数据库
2. 明确当前数据库的主机地址,IP地址,域名,localhost表示本地
3. -uroot 用户名
4. -p123456 对应用户名密码
JDBC连接数据库也是需要这四个条件的
1. 确定连接的数据库所在网络地址和对应操作哪一个数据库
这里使用一个符合JDBC规范的URL
URL jdbc:mysql://localhost:3306/nzgp2001
2. 用户名 user root
3. 密码 password 123456
URL
含义
jdbc目前操作数据库的主协议
mysql子协议
localhost 数据库服务器所在的网路偶地址
3306 数据库默认端口号
nzgp2001 当前URL连接操作对应数据库是哪一个
JDBC是第三方提供的内容
获取对应的Jar
mysql-connector-java-5.1.47.jar
从官网获取对应的Jar包
mvnrepository Maven查询网址
3. JDBC连接MySQL数据库
3.1 操作流程
1. 导入Jar包
在项目根目录创建lib目录,放入对应jar包,引入依赖
2. 加载驱动
Java程序只是规定了接口规范,但是没有实现
数据库连接需要使用JDBC对应驱动
3. 准备必要参数连接数据库
4. 获取数据库连接
5. 关闭资源
3.2 数据库连接演示代码
package com. qfedu. a_jdbc;
import java. sql. Connection;
import java. sql. DriverManager;
import java. sql. SQLException;
public class Demo1 {
public static void main ( String[ ] args) throws ClassNotFoundException, SQLException {
Class. forName ( "com.mysql.jdbc.Driver" ) ;
String url = "jdbc:mysql://localhost:3306/nzgp2001?useSSL=true" ;
String user = "root" ;
String password = "123456" ;
Connection connection = DriverManager. getConnection ( url, user, password) ;
System. out. println ( connection) ;
connection. close ( ) ;
}
}
3.3 数据库驱动加载过程
public class Driver extends NonRegisteringDriver implements java. sql. Driver {
static {
try {
java. sql. DriverManager. registerDriver ( new Driver ( ) ) ;
} catch ( SQLException E) {
throw new RuntimeException ( "Can't register driver!" ) ;
}
}
public Driver ( ) throws SQLException {
}
}
4. JDBC核心API[能记住最好,记不住拉倒]
class java. sql. DriverManager 驱动管理类
-- | static java. sql. Connection getConnection ( String url, String user, String password) ;
interface java. sql. Connection 数据库连接接口
-- | java. sql. Statement createStatement ( ) ;
-- | java. sql. PreparedStatement prepareStatement ( String sql) ;
interface java. sql. Statement 数据库SQL语句搬运工对象
-- | int executeUpdate ( String sql) ;
-- | java. sql. ResultSet executeQuery ( String sql) ;
interface java. sql. PreparedStatement 数据库SQL语句【预处理】搬运工对象
PreparedStatement extends java. sql. Statement
-- | int executeUpdate ( ) ;
-- | java. sql. ResultSet executeQuery ( ) ;
-- | setXXX ( int index, XXX value)
interface java. sql. ResultSet 数据库结果集接口
-- | XXX getXXX ( int columnIndex) ;
-- | XXX getXXX ( String fieldName) ;
-- | boolean next ( ) ;
5. Statement操作SQL语句
5.1 Statement插入SQL数据操作
@Test
public void testInsert ( ) {
Statement statement = null;
Connection connection = null;
try {
Class. forName ( "com.mysql.jdbc.Driver" ) ;
String url = "jdbc:mysql://localhost:3306/nzgp2001?useSSL=true" ;
String user = "root" ;
String password = "123456" ;
connection = DriverManager. getConnection ( url, user, password) ;
statement = connection. createStatement ( ) ;
String sql = "insert into nzgp2001.user(userName, password) value ('老黑', '123456')" ;
int affectedRows = statement. executeUpdate ( sql) ;
System. out. println ( "affectedRows:" + affectedRows) ;
} catch ( ClassNotFoundException | SQLException e) {
e. printStackTrace ( ) ;
} finally {
try {
if ( statement != null) {
statement. close ( ) ;
}
if ( connection != null) {
connection. close ( ) ;
}
} catch ( SQLException e) {
e. printStackTrace ( ) ;
}
}
}
5.2 Statement修改SQL数据操作
@Test
public void testUpdate ( ) {
Statement statement = null;
Connection connection = null;
try {
Class. forName ( "com.mysql.jdbc.Driver" ) ;
String url = "jdbc:mysql://localhost:3306/nzgp2001?useSSL=true" ;
String user = "root" ;
String password = "123456" ;
connection = DriverManager. getConnection ( url, user, password) ;
statement = connection. createStatement ( ) ;
String sql = "update nzgp2001.user set userName ='航海中路彭于晏' where id = 1" ;
int affectedRows = statement. executeUpdate ( sql) ;
System. out. println ( "affectedRows:" + affectedRows) ;
} catch ( ClassNotFoundException | SQLException e) {
e. printStackTrace ( ) ;
} finally {
try {
if ( statement != null) {
statement. close ( ) ;
}
if ( connection != null) {
connection. close ( ) ;
}
} catch ( SQLException e) {
e. printStackTrace ( ) ;
}
}
}
5.3 Statement删除SQL数据操作
@Test
public void testDelete ( ) {
Statement statement = null;
Connection connection = null;
try {
Class. forName ( "com.mysql.jdbc.Driver" ) ;
String url = "jdbc:mysql://localhost:3306/nzgp2001?useSSL=true" ;
String user = "root" ;
String password = "123456" ;
connection = DriverManager. getConnection ( url, user, password) ;
statement = connection. createStatement ( ) ;
String sql = "delete from user where id > 2" ;
int affectedRows = statement. executeUpdate ( sql) ;
System. out. println ( "affectedRows:" + affectedRows) ;
} catch ( ClassNotFoundException | SQLException e) {
e. printStackTrace ( ) ;
} finally {
try {
if ( statement != null) {
statement. close ( ) ;
}
if ( connection != null) {
connection. close ( ) ;
}
} catch ( SQLException e) {
e. printStackTrace ( ) ;
}
}
}