1.概念:
JDBC(Java DataBase Connectivity)就是,Java数据库连接,是一种用于执行SQL语句的Java API,它是由一组用Java编程语言编写的类和接口组成。简单说就是封装了java语言操作不同数据库(例如:mysql,oracle、sqlServer等数据库)的接口,各个数据库厂商实现这个接口。因此java语言可以通过JDBC操作各个数据库。
2.JDBC的工作原理
SUN提供一套访问数据库的规范(就是一组接口),并提供连接数据库的协议标准。各个数据库厂商会提供一套API用来访问自己公司的数据库服务器,且API遵循SUN的规范。
JDBC是里面封装着操作各数据库的接口,而JDBC驱动才是接口的实现,没有驱动无法完成数据库连接!每个数据库厂商都有自己的驱动,用来连接自己公司的数据库。
3.JDBC的API
1.DriverManager类 作用:管理各种不同的JDBC驱动
DriverManager是我们说的驱动管理器,它有一个可以获取连接的方法getConnection()。
2.Connection接口:负责连接数据库并担任传送数据的任务
3.Statement接口:由 Connection 产生、负责发送执行SQL语句
Statement对象中提供了executeQuery方法来执行查询操作,这个方法会返回查询结果集ResultSet类对象,其中包含SQL语句的查询结果
4.ResultSet接口:负责保存Statement执行后所产生的查询结果
ResultSet对象包含了执行查询后满足条件的所有行,提供了对应的访问方法,有一组对应的getXxx方法获取指定列的值
4.JDBC使用步骤
4.1流程图:
4.2详细步骤
1.准备数据库驱动包(网上一搜有很多)
2.JDBC所需的参数(username,password,url,driver)
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/数据库名?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
username=root
password=root
一般情况只写(driver,url,username,passsword)
3.加载JDBC驱动:
class.forName(driver);
4.建立数据库连接
Connection connection = DriverManager.getConnection(url, username, password);
5.创建操作命令
Statement statement=connection.createStatement();
一般不建议使用Statement对象,这个对象用于提交静态sql语句。有sql注入漏洞,建议使用Statement 的子接口PreparedStatement
6.执行SQl语句
ResultSet resultSet=statement.executeQuery("select company_name from user_info ");
7.处理结果集
while(resultSet.next())
{
String categoryName=resultSet.getString("company_name");
System.out.println(categoryName);
}一般列是什么数据类,则应该使用对应类型的getXxx方法,实际上使用getString可以获取任意类型的列中的数据
8.释放资源
//关闭结果集 if (resultSet !=null) { try { resultSet.close(); } catch (SQLException e) { e.printStackTrace(); } } //关闭命令 if (statement!=null) { try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } } //关闭连接命令 if (connection!=null) { try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } }
4.3实例:
import java.sql.*;
public class jdbctest {
public static void main(String[] args) throws Exception {
jd();
}
public static void jd()throws Exception, SQLException, InstantiationException, IllegalAccessException
{
//加载数据库驱动包
Class clas= Class.forName("com.mysql.jdbc.Driver");
Driver driver= (Driver) clas.newInstance();
//注册驱动
DriverManager.registerDriver(driver);
System.out.println("数据库驱动加载成功");
//建立数据库链接
Connection connection= DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/data_platform?user=data_platform&password=68063bdc0cbcd52b&useUnicode=true&characterEncoding=UTF-8");
//创建操作命令
Statement statement=connection.createStatement();
//执行SQL语句
ResultSet resultSet=statement.executeQuery("select company_name from user_info ");
//处理结果集
while(resultSet.next())
{
String categoryName=resultSet.getString("company_name");
System.out.println(String.format("data_platform:company_name=%s",categoryName));
}
//关闭结果集
if (resultSet !=null)
{
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
//关闭命令
if (statement!=null)
{
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
//关闭连接命令
if (connection!=null)
{
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
结果: