仅供学习参考,自我复习使用。
一、JDBC简介
Java DataBase Connectivity: Java 数据库连接,是Sun公司提供的一套与平台无关的用于执行SQL语句的标准javaAPI,可以方便实现多种关系型数据库的统一操作。
二、为什么使用JDBC
Java提供访问数据库规范称为JDBC,而生产厂商提供规范的实现类称为驱动。每个数据库厂商都需要提供自己的驱动,用来连接自己公司的数据库。
试想假如没有JDBC接口规范,以我们常见的mysql,oracle为例,mysql厂商自己写一套实现类(驱动),oracle自己写一套实现类(驱动),同样的插入操作你叫add,我叫insert,那么这无疑对程序员来说是一个灾难,因为我们需要耗费更多时间学习两套方法,有了JDBC规范,各大厂商按照统一标准写实现类,对于java程序员来说我们只需要掌握JDBC接口中的方法调用即可,通过一套方法可以操作多种数据库。
三、JDBC基础使用
以mysql数据库为例,新建maven工程导入添加驱动依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.30</version>
</dependency>
使用大体分五步:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
*测试新建表
*注意导包都是java.sql包下的
*/
public class Demo1 {
public static void main(String[] args) {
Connection conn = null;
Statement sta = null;
User user = new User();
try {
// 1.注册驱动
Class.forName("com.mysql.jdbc.Driver");//此处会有ClassNotFoundException
System.out.println("注册成功");
/**
* 连接数据库 url:"jdbc:mysql://IP地址:port端口/数据库名称"
* DriverManager.getConnection(连接数据库 url, 账号, 密码);
*/
//2.获取连接对象
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo2", "root", "123456");
System.out.println("连接成功");
/**
* 编写sql语句,并且执行 获得statement对象--执行sql语句
*/
//3.创建sql语句执行对象
sta = conn.createStatement();
System.out.println(sta);
//创建一个表
String ddl = "create table t1(id int,name varchar(10))";
/**
* excute() 可以执行 ddl dml dql dcl tcl都可以 常用语ddl dcl 返回boolean
*/
//4.执行sql
sta.execute(ddl);
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
//5.关闭资源
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
输出:
注册成功
连接成功
com.mysql.jdbc.StatementImpl@5e681e45
Statement sql执行对象
方法 | 介绍 |
---|---|
execute() | 可以执行 ddl dml dql dcl tcl都可以 常用语ddl dcl 返回boolean,但是推荐使用ddl 语言:如create,drop,alter |
excutUpdate() | 常用语dml语句,即增删改 返回int值 表示dml操作影响了几行 |
executQuery() | 常用语dql 返回ResultSet 查询的结果集就存在其中 |
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
*测试插入数据dml
*注意导包都是java.sql包下的
*/
public class Demo03 {
public static void main(String[] args) {
Connection conn = null;
Statement sta = null;
User user = new User();
try {
// 1.注册驱动
Class.forName("com.mysql.jdbc.Driver");//此处会有ClassNotFoundException
System.out.println("注册成功");
/**
* 连接数据库 url:"jdbc:mysql://IP地址:port端口/数据库名称"
* DriverManager.getConnection(连接数据库 url, 账号, 密码);
*/
//2.获取连接对象
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo2", "root", "123456");
System.out.println("连接成功");
/**
* 编写sql语句,并且执行 获得statement对象--执行sql语句
*/
//3.创建sql语句执行对象
sta = conn.createStatement();
//4.执行sql
String dml = "insert into t1 values(2,'李四')";
int result = sta.executeUpdate(dml);
System.out.println("影响行数:" + result);
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
//5.关闭资源
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
输出:
注册成功
连接成功
影响行数:1
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
*测试查询dql
*注意导包都是java.sql包下的
*/
public class Demo4 {
public static void main(String[] args) {
Connection conn = null;
Statement sta = null;
User user = new User();
try {
// 1.注册驱动
Class.forName("com.mysql.jdbc.Driver");//此处会有ClassNotFoundException
System.out.println("注册成功");
/**
* 连接数据库 url:"jdbc:mysql://IP地址:port端口/数据库名称"
* DriverManager.getConnection(连接数据库 url, 账号, 密码);
*/
//2.获取连接对象
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo2", "root", "123456");
System.out.println("连接成功");
/**
* 编写sql语句,并且执行 获得statement对象--执行sql语句
*/
//3.创建sql语句执行对象
sta = conn.createStatement();
//4.执行sql语句
String dql = "select * from t1";
//返回结果集对象ResultSet
ResultSet rs = sta.executeQuery(dql);
// 处理查询结果,遍历
while (rs.next()) {// 游标
// 要知道库中列名和数据类型
// 参数为列名,方法为相应数据类型的getXXX()方法
int id = rs.getInt("id");
String name = rs.getString("name");
System.out.println("id=" + id + "," + "name=" + name);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
//5.关闭资源
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
注册成功
连接成功
id=1,name=张三
id=2,name=李四
在这里推荐一篇文章ResultSet用法集锦