JDBC 是用于在 Java 语言编程中与数据库连接的 API . JDBC 是一个规范,它提供了一整套接口,允许以一种可移植的访问底层数据库 API 。使用 JDBC驱动程序 来访问数据库,并用于存储数据到数据库中.
解释上面两幅图:
java应用程序通过JDBC API首先连接到JDBC Driver,这些JDBC驱动器都是由各大数据库厂家针对JDBC提供的,我们可以在网上下载jar包来使用,然后通过JDBC驱动器就能连接到我们的数据库了。
1.在项目当中创建一个文件夹为lib 2.把Mysql驱动包复制到该文件夹下 3.builder path 编译路径 复制代码
package con.meils.jdbc.conn;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionClass {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
// TODO Auto-generated method stub
// 1、加载驱动
// 把com.mysql.jdbc.Driver这份字节码加载进JVM
// 当一份字节码加载进JVM的时候,就会执行字节码文件中的静态代码块
// 这里加载该字节码之后会实例化一个驱动器
Class.forName("com.mysql.jdbc.Driver");
// 2、连接
String url = "jdbc:mysql://localhost:3306/mytest";
String username = "root";
String password = "zjj19970517";
Connection connection = DriverManager.getConnection(url, username, password);
// 3、验证连接
System.out.println(connection); // 如果有输出,表明连接成功
}
}
复制代码
package con.meils.jdbc.ddl;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class CreateTable {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
// 1/加载驱动
// 把com.mysql.jdbc.Driver这份字节码加载进JVM
// 当一份字节码加载进JVM的时候,就会执行字节码文件中的静态代码块
// 这里加载该字节码之后会实例化一个驱动器
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/jdbc_db";
String username = "root";
String password = "zjj19970517";
// 2/ 连接数据库
Connection connection = DriverManager.getConnection(url, username, password);
// 3/创建sql语句
String sql = "create table stu (id int , name varchar(20), age int)";
// 4/执行sql语句
Statement st = connection.createStatement();
int row = st.executeUpdate(sql);
// 5/释放
st.close();
connection.close();
}
}
复制代码
为什么要释放资源呢?
package con.meils.jdbc.dml;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class InsertClass {
public static void main(String[] args) {
// TODO Auto-generated method stub
// ================ 插入数据 ================
Connection conn = null;
Statement st = null;
try {
// 1、加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 2、创建连接
String url = "jdbc:mysql://localhost:3306/mytest";
String user = "root";
String password = "zjj19970517";
conn = DriverManager.getConnection(url, user, password);
// 3、创建sql语句
String sql = "insert into stu values(1, 'zjj', 20)";
st = conn.createStatement();
// 4、执行语句
int row = st.executeUpdate(sql);
System.out.println(row);
}catch (Exception e) {
e.printStackTrace();
} finally {
// 5、释放
if(st!=null) {
try {
st.close();
}catch (Exception e) {
e.printStackTrace();
}
}
if(conn!=null) {
try {
conn.close();
}catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
复制代码
package con.meils.jdbc.dql;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class QueryClass {
public static void main(String[] args) throws SQLException, ClassNotFoundException {
// TODO Auto-generated method stub
// ================ 查询数据 ================
// 1/加载驱动
// 把com.mysql.jdbc.Driver这份字节码加载进JVM
// 当一份字节码加载进JVM的时候,就会执行字节码文件中的静态代码块
// 这里加载该字节码之后会实例化一个驱动器
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/mytest";
String username = "root";
String password = "zjj19970517";
// 2/ 连接数据库
Connection connection = DriverManager.getConnection(url, username, password);
// 3/创建sql语句
String sql = "select count(*) as total from stu"; // 查询一共有几行数据
// 4/执行sql语句
Statement st = connection.createStatement();
ResultSet rs = st.executeQuery(sql);
if(rs.next()) {
int count = rs.getInt("total");
System.out.println(count); // 1
}
// 5/释放
st.close();
connection.close();
}
}
复制代码
数据类型对照表:
上面我们基本学会了如何与数据库打交道,但是这样使用存在许多的弊端,比如:每一步操作都进行一次数据库连接,造成浪费,所以我们在实际中要使用DAO思想来处理。
DAO(Data Access Object)数据存储对象,介于业务逻辑层和持久层之间,实现持久化数据访问。
不使用DAO的时候:
使用DAO的情况:
我们可以编写一个DAO接口,定义了常用的数据库操作方法,这时候我们同时会连接多个数据库,比如是mysql 和 oracle ,我们可以分别实现oracleDao和mysqlDao两个类,不同类里面定义不同的操作数据库的代码,实现的功能确实相同的。
所以面向接口编程是很重要的,也是一个很好的方式。