JDBC简介
Java数据库连接(Java Database Connectivity,JDBC),是一种用于执行SQL语句的Java API,它由一组用Java编程语言编写的类和接口组成。
JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
使用JDBC编写的程序能够自动地将SQL语句传送给相应的数据库管理系统。
JDBC 是个"低级"接口,也就是说,它用于直接调用 SQL 命令。在这方面它的功能极佳,并比其它的数据库连接 API 易于使用,但它同时也被设计为一种基础接口,在它之上可以建立高级接口和工具。高级接口是"对用户友好的"接口,它使用的是一种更易理解和更为方便的 API,这种API在幕后被转换为诸如 JDBC 这样的低级接口。
JDBC扩展了Java的功能,由于Java语言本身的特点,使得JDBC具有简单、健壮、安全、可移植、获取方便等优势。
开发第一个JDBC程序
package com.jyroy.test;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.jyroy.util.JDBCUtil;
import java.sql.Connection;
import java.sql.Driver;
public class MainTest {
public static void main(String[] args) {
Connection connection = null;
Statement st = null;
ResultSet rs = null;
try {
//1.注册驱动
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//2.建立连接
//方法一 参数一:协议+访问数据库,参数二:用户名,参数三:密码
connection = DriverManager.getConnection("jdbc:mysql://localhost/student", "root", "password");
//方法二
// DriverManager.getConnection("jdbc:msql://localhost/student?user=root&password=password");
//3.创建statement,跟数据库打交道一定需要这个对象
st = connection.createStatement();
//4.执行查询
String sql = "select * from stu";
rs = st.executeQuery(sql);
//5.遍历查询每一条记录
while(rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println("id = " + id + "; name = " + name + "; age = " + age);
}
//进行资源释放
connection.close();
st.close();
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
使用工具类#
借助工具类来方便JDBC的操作
获取数据库连接#
建立数据库连接的类,里面封装好实现数据库连接的函数,方便调用实现数据库连接
这里说两个问题:
一:
这里多用了一个 Class.forName(“com.mysql.jdbc.Driver”); 因为
在上面的例子中,Driver这个类里面有静态代码块(java.sql.DriverManager.registerDriver(new Driver())),我们在new的时候一开始就加载了Driver类,相当于注册了两次驱动,为了避免这个情况,使用Class.forName(“com.mysql.jdbc.Driver”);来进行驱动的注册。
二:
根据JDBC官方文档,在JDBC5之后,Class.forName(); 的注册驱动,官方已经帮我们实现了,我们不加载驱动(JDBC会自动识别使mysql还是oracl什么的,当然了,如果同时用了mysql和oracl就要写上了,这个时候就没法自动确定了),直接建立连接也是可以的,大家可以自己试一下把Class.forName();这句话注释掉,也是可以完美运行的!
package com.jyroy.DBUtil;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBUtil {
private static Connection connection=null;
static {
try {
//1.加载驱动程序
Class.forName("com.mysql.jdbc.Driver");
//2.获得数据库的连接
connection = DriverManager.getConnection("jdbc:mysql://localhost/student", "root", "password");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
//将获得的数据库与java的链接返回(返回的类型为Connection)
public static Connection getConnection(){
return connection;
}
}