JAVA通幽(七)JDBC操作

版权声明:程序猴jwang版权所有 https://blog.csdn.net/qq_21046965/article/details/83239034

前言

       本章讲解利用java连接数据库,操纵数据库表。相信大家读到这里应该很兴奋了吧。读了那么久java,sql等等,到现在终于把他们两个结合起来了。可以说本章是web开发尤其是后台结构开发至关重要的一环。

步骤

1.什么是JDBC

我们知道,一个数据库厂商生产出一种数据库,那么数据库需要应用到各个程序之中。其中oracle,mysql等数据库厂商专门为java链接数据库提供了开放的接口,并将它们包装为jar包,也就是我们日常称之为驱动的东东。这使得java语言可以通过该接口直接操纵数据库表,无需得知底层的实现方式。当然,你也不可能知道,毕竟有些数据库如oracle是闭源的。

2.通过JDBC实现查询ORACLE表

  • 创建Java项目,创建连接类,我这里命名为DBConnectTest.java

  • 导入Oracle的JDBC驱动包

该驱动包位于oracle安装路径下的(形如D:\app\jwang\product\11.2.0\dbhome_1\jdbc\lib)jdbc中的lib下

当然了,没有安装数据库服务器(如连接远程数据库) 的同学,可以从官网下载jdbc驱动程序:

网址:https://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html

 将拿到的jdbc驱动包引入到你的项目中:

选择指定的jdbc驱动确定即可引入

  • 编写代码实现查询scott用户下的emp表(增删改等均以此类推,读者自行摸索)

回顾一下emp表中的结构:
 

示例代码如下:

package com.jwang.conn;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DBConnectTest {
	private static final String DB_DRIVER = "oracle.jdbc.driver.OracleDriver";
	private static final String DB_URL = "jdbc:oracle:thin:@localhost:1521:orcl";
	private static final String DB_USER = "scott";
	private static final String DB_PASS = "tiger";
	
	public static void main(String[] args) {
		Connection conn = null;
		PreparedStatement psts = null;
		ResultSet rs = null;
		try {
			//1)、加载oracle驱动类
			Class.forName(DB_DRIVER);
			//2)、创建Connection对象
			conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASS);
			//3)、创建sql语句
			String sql = "select * from emp";
			//4)、获取PrepareStatement对象,预编译sql
			psts = conn.prepareStatement(sql);
			//5)、执行sql,获得ResultSet结果集
			rs = psts.executeQuery();
			//6)、循环遍历ResultSet结果集,输出结果
			System.out.println("员工编号\t员工姓名\t员工工作");
			while(rs.next()){
				System.out.println(rs.getInt(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			//关闭资源
			try {
				rs.close();
				psts.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}

 程序运行结果:

思考 

1.大家有没有想过,如果我这个连接数据库类是给许多个数据库来调用,这样写岂不是写死为连接oracle了?

程序改进:读取配置文件db.properties动态配置数据库连接

(1)src下新建配置文件db.properties,并写入相关内容

 db.properties存入如下语句

db_driver=oracle.jdbc.driver.OracleDriver
db_url=jdbc:oracle:thin:@localhost:1521:orcl
db_user=scott
db_pass=tiger

改进后的程序:

package com.jwang.conn;

import java.io.BufferedReader;
import java.io.FileReader;
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 DBConnectTest {
	
	public static void main(String[] args) {
		//定义属性类
		Properties properties = new Properties();
		Connection conn = null;
		PreparedStatement psts = null;
		ResultSet rs = null;
		try {
			//加载文件db.properties
			properties.load(new BufferedReader(new FileReader("src/db.properties")));
			//1)、加载oracle驱动类
			Class.forName(properties.getProperty("db_driver"));
			//2)、创建Connection对象
			conn = DriverManager.getConnection(properties.getProperty("db_url"), 
					properties.getProperty("db_user"), properties.getProperty("db_pass"));
			//3)、创建sql语句
			String sql = "select * from emp";
			//4)、获取PrepareStatement对象,预编译sql
			psts = conn.prepareStatement(sql);
			//5)、执行sql,获得ResultSet结果集
			rs = psts.executeQuery();
			//6)、循环遍历ResultSet结果集,输出结果
			System.out.println("员工编号\t员工姓名\t员工工作");
			while(rs.next()){
				System.out.println(rs.getInt(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			//关闭资源
			try {
				rs.close();
				psts.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}

这样做的好处在于,你以后更换数据库连接无需更改java代码,只需要更改配置文件就可以了,是不是很方便!

猜你喜欢

转载自blog.csdn.net/qq_21046965/article/details/83239034