从无到有,简述JDBC连接基本步骤
程序员文章站
2024-03-17 17:53:22
...
JDBC是什么?
1.JDBC是java database connectivity(java语言连接数据库)的缩写
2.JDBC的本质是什么?
JDBC是SUN公司制定的一套接口(Interface)
Java.sql.*;
接口都有自己的调用者和实现者
在接下来的过程中 “我” 是调用者,不同数据库的公司是“实现者”,不同的数据库公司提供不同的jar包(因为不同的数据库底层实现原理不一样),根据要连接的数据库选择不同的jar包。Jar包里放的是一大堆class文件,这些class文件就是对Interface接口的实现类。等下我们就要用到这些实现类
操作步骤
Mysql数据库的jar包(后面的数字是版本号):mysql-connector-java-5.1.37
连接不同的数据库使用不同的jar包
下面以连接mysql数据库为例:
1.注册驱动
两种方式注册驱动
在连接数据库之前我,我们先要注册驱动,目的是声明连接的是哪一个数据库
//加载类,目的是声明当前使用的是哪个数据库jar包
Class.forName("com.mysql.jdbc.Driver");//使用Class.forName加载类
Driver driver = new com.mysql.jdbc.Driver();
DriverManager.registerDriver(driver);//registerDrive需要抛出异常
2.建立连接
对数据库进行连接
以下三个代码块等价
//database为要连接的数据库名称,user为用户名,password为密码
//jdbc:mysql://localhost:3306/database为url
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/database","user","password");
String url = "jdbc:mysql://localhost:3306/database";
String user = "root";
String password = "root";
Connection conn = DriverManager.getConnection(url,user,password);//注意括号里的user和password没有了引号""
//从属性资源文件中读取数据库配置信息
//使用ResourceBundle,将url、user和password写到properties文件中,便于修改
ResourceBundle rb = ResourceBundle.getBundle("jdbc");
String driver = rb.getString("driver");
String url = rb.getString("url");
String user = rb.getString("user");
String password = rb.getString("password");
Connection conn = DriverManager.getConnection(url,user,password);//注意括号里的user和password没有了引号""
3.获取对象
获取数据库操作对象(Statement专门执行sql语句的)
Statement stmt = conn.creatStatemnt();
4.执行sql语句
//执行查询语句
stmt.executeQuery("select * from t_user");
5.处理查询结果集
//用next()方法将数据一行一行的取出来,每一行中不同列中的数据给变量赋值再输出
//使用while循环,next()方法的返回变量是boolean,如果有数据则返回true,
//当改行有数据时,就会一直循环,直到数据为null;循环停止,这样表中的数据就全取出来了
while (rs.next()) {
int empno = rs.getInt("empno");//这里的数据类型与数据库表中的数据类型一致
String ename = rs.getString("ename");
double sal = rs.getDouble("sal");
System.out.println(empno + "," + ename + "," + (sal + 200));
}
6.释放资源
//释放资源顺序与创建顺序相反
if( rs != null){
try{
rs.close();
} catch (SQLException e) {
e.printStackTrace;
}
}
if( stmt != null){
try{
stmt.close();
} catch (SQLException e) {
e.printStackTrace;
}
}
if( conn != null){
try{
conn.close();
} catch (SQLException e) {
e.printStackTrace;
}
}
完整代码
jdbc.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/ems_thymeleaf
user=root
password=root
Test.java
import java.sql.*;
import java.util.ResourceBundle;
public class Test {
public static void main(String[] args) {
Connection conn = null;//这里必须先给变量赋值初始化
Statement stmt = null;
ResultSet rs = null;
try {
ResourceBundle rb = ResourceBundle.getBundle("jdbc");
String driver = rb.getString("driver");
String url = rb.getString("url");
String user = rb.getString("user");
String password = rb.getString("password");
//注册驱动
Class.forName(driver);
//建立连接
conn = DriverManager.getConnection(url, user, password);
//获取对象
stmt = conn.createStatement();
//执行sql语句
rs = stmt.executeQuery("select * from t_user");
//处理查询结果集
while (rs.next()) {
int empno = rs.getInt("empno");//这里的数据类型与数据库表中的数据类型一致
String ename = rs.getString("ename");
double sal = rs.getDouble("sal");
System.out.println(empno + "," + ename + "," + (sal + 200));
}
} catch (Exception e) {
e.printStackTrace();
}finally {
//释放资源
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
上一篇: -JS- 一些练习题的合集
下一篇: 算法之KMP算法