jdbc的使用

java学习必有jdbc,今天就来写个笔记梳理一下。

1.什么是jdbc呢

jdbc的全称java date base connectivity 也就是java数据库连接,它是一种可以执行SQL语句的Java  API,提供读写数据库操作。
JDBC开发的数据库应用可以跨平台运行,而且可以跨数据库。体现了Java“编写一次,处处运行”的平台无关性的理念。它可以为多种数据库提供统一的访问,是一种统一标准。通过JDBC可以连接Oracle、MySql、Sql Server数据库。

![jdbc](https://img-blog.csdnimg.cn/20200412123031395.png)

2.jdbc的基本工作

可以简单的分为三步
①建立与数据库的连接。
②执行SQL语句。
③获得SQL语句的执行结果。

3.驱动程序

上面已经介绍过JDBC开发的数据库应用可以跨平台运行,而且可以跨数据库。那么它是怎么知道是在哪种数据库平台上运行的呢。
其实是通过一个驱动程序。数据库驱动程序是JDBC程序和数据库之间的转换层,它负责将JDBC调用映射成特定的数据库调用。
大部分数据库系统,例如Orcale等,都有相应的JDBC驱动程序,当需要连接某个特定的数据库时,必须有相应的数据库驱动程序。

4.jdbc的常用类和接口

①DriverManager
用于管理JDBC驱动的服务类。
②Connection
代表数据库连接对象,每一个Connection代表一个物理连接会话。
③Statement
用于执行SQL语句的工具接口。
④PreparedStatement
预编译的Statement对象。(预编译可以防止万能密码,万能密码有兴趣的小伙伴可以自行搜索一下哦)。
⑤ResultSet
结果集对象。

5.jdbc编程步骤

①加载(注册)数据库驱动。(只加载一次就可以啦)
②通过DriverManager获取数据库连接。
③通过Connection对象创建Statement对象。
④使用Statement执行SQL语句。所有Statement都有三个方法来执行SQL语句。
⑤操作结果集。如果执行的SQL语句是查询语句,执行结果将返回一个ResultSet对象,该对象里保存了SQL语句查询的结果。程序可以通过操作该ResultSet对象来取出查询结果。
⑥关闭资源,一定要记得关闭资源哦。
下面就是工具类啦

如果有什么说的不对的地方或者错误,欢迎指正!



import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

public class JDBCUtil {
	private static final String URL;
	private static final String USER;
	private static final String PASSWORD;
	private static final String DRIVER;
	private static Connection conn = null;
	// Statement是用来执行sql语句的工具接口,PreparedStatement是预编译的Statement对象
	private static PreparedStatement ps = null;
	private static ResultSet rs = null;

	static {
		FileReader fr = null;
		Properties p = null;
		try {
			fr = new FileReader("/JDBC.properties");
			p = new Properties();
			p.load(fr);
			fr.close();
		} catch (Exception e) {
			e.printStackTrace();
		}

		DRIVER = p.getProperty("DRIVER");
		URL = p.getProperty("URL");
		USER = p.getProperty("USER");
		PASSWORD = p.getProperty("PASSWORD");

		try {
			// 注册驱动
			Class.forName(DRIVER);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}

	// 获得一个静态连接
	public static Connection getConnection() {
		try {
			//通过DriverManager获取数据库连接。
			conn = DriverManager.getConnection(URL, USER, PASSWORD);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return conn;
	}

	public static ResultSet executeQuery(String sql, String[] strs) {
		getConnection();

		try {
			// 创建statement对象并执行sql语句
			ps = conn.prepareStatement(sql);
			// 填充占位符
			if (strs != null) {
				for (int i = 0; i < strs.length; i++) {
					ps.setString(i + 1, strs[i]);
				}
			}
			// 操作结果集
			rs = ps.executeQuery();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		// 返回结构集
		return rs;
	}

	public static int executeUpdate(String sql, String[] strs) {
		getConnection();
		int in = 0;
		try {
			// 创建statement对象并执行sql语句
			ps = conn.prepareStatement(sql);
			// 填充占位符
			if (strs != null) {
				for (int i = 0; i < strs.length; i++) {
					ps.setString(i + 1, strs[i]);
				}
			}
			// 执行sql语句,in表示sql语句影响的行数
			in = ps.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			close(rs, ps, conn);
		}
		return in;

	}
	//关流
	private static void close(ResultSet rs, PreparedStatement ps, Connection conn) {
		try {
			if (rs != null) {
				rs.close();
			}
			if (ps != null) {
				ps.close();
			}
			if (conn != null) {
				conn.close();
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值