欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

从无到有,简述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具体使用方法

//从属性资源文件中读取数据库配置信息
//使用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()的方法作用及应用

//用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连接基本步骤
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();
                }
            }


        }
    }
}