【JDBC】通过JDBC的方法连接Oracle数据库并进行简单操作(含demo)+Class.forName("")与ojdbcX.jar的区别和联系

!!!!!不得不吐槽一句!使用校园网,大概率出现无法保存文章的情况!难道是Markdown编辑器下在编辑的文章不断自动保存,造成校园网过滤其IP?改天研究研究!

什么是JDBC?
JDBC又称Java DataBase Connectivity,顾名思义就是Java数据库连接。至于是什么,我们来将其使用一次就大概明白了。

下面以Oracle为例:

开始:
过程:
①载入JDBC驱动程序
②加载数据库驱动程序
③创建连接对象
④创建Statement对象
⑤Statement执行SQL语句
⑥逆向关闭连接

0.我们先在Eclipse建一个Java项目吧!
有些童鞋纠结创建什么项目,其实目前都可以,能编译执行Java文件即可。
熟知宇某截图

1.载入JDBC驱动程序
我这里使用的是Oracle数据库,所以在main函数中加载语句如下:
Class.forName("oracle.jdbc.driver.OracleDriver");
如果是MYSQL数据库,可以这样: Class.forName("com.mysql.jdbc.Driver");

2.加载数据库驱动程序
这里与第一步骤的加载不知道是不是同一个东西,等下操作到最后步骤的时候我们删掉其中一个试一下。
这里下载其中一个即可。
ojdbc6.jar驱动下载
ojdbc14.jar驱动下载
下载完,我们在项目中加载它:
“右击项目名称”→“构建路径”→“配置构建路径”→选项“库”→“添加外部JAR”→添加刚刚下载的 ojdbc6.jar包。如图:
在这里插入图片描述
在这里插入图片描述

3.创建连接对象
先使用DriverManager类声明一个Connection对象并连接:
Connection con = DriverManager.getConnection(jdbcUrl, user, password);
这里说一下什么是DriverManager:DriverManager专门用于检查在Java程序与JDBC驱动程序之间是否可以建立连接。

其中getConnection(jdbcUrl, user, password);的三个参数分别是URL地址、用户名、密码。
而URL地址较为特殊:协议名 + IP地址(域名) + 端口 + 数据库名称;
如Oracle的写法:jdbcUrl = "jdbc:oracle:thin:@localhost:1521:Szymou";

4.创建Statement对象
Statement对象通俗说就是可以执行sql语句。
如:
Statement createStatement = con.createStatement();
String sql = "select * from CLASSINFO";
ResultSet executeQuery = createStatement.executeQuery(sql);

5.Statement执行SQL语句
ResultSet executeQuery = createStatement.executeQuery(sql);
这里executeQuery 在sql语句执行过后赋有了相应操作的结果。
比如sql语句为select查询数据库语句,可以通过executeQuery.getString()等方法来提取结果。

6.逆向关闭连接(这里可能误,如有请留言告知!)
关闭executeQuery executeQuery.close();
关闭Statement createStatement.close();
关闭数据库 con.close();

代码如下:
Jdbc.java

package szymou;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

/**
 * @author szymou
 *
 */
public class Jdbc {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");//①载入JDBC驱动程序
			System.out.println("数据库驱动加载成功");
			//数据库用户名为nue,密码为1;你们的自己改
			Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:Szymou", "nue", "1");//③创建连接对象
			System.out.println("数据库连接成功");
			Statement createStatement = con.createStatement();//④创建Statement对象
			String sql = "select * from CLASSINFO";
			ResultSet executeQuery = createStatement.executeQuery(sql);//⑤Statement执行SQL语句

			while(executeQuery.next()) {
				String s1 = executeQuery.getString(1);
				String s2 = executeQuery.getString(2);
				String s3 = executeQuery.getString(3);
				String s4 = executeQuery.getString(4);
				String s5 = executeQuery.getString(5);
				String s6 = executeQuery.getString(6);
				System.out.print(s1 + " ");
				System.out.print(s2 + " ");
				System.out.print(s3 + " ");
				System.out.print(s4 + " ");
				System.out.print(s5 + " ");
				System.out.println(s6 + " ");
//				String classid = executeQuery.getString("classname");
//				System.out.println(classid);


				//⑥逆向关闭连接
				executeQuery.close();
				createStatement.close();
				con.close();
			}
		} catch (Exception e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
	}

}

本章节demo:JDBC_study.zip

下面是测试时间:

有些童鞋还记住我们还有个测试没做对吧?
第一步骤的Class.forName("oracle.jdbc.driver.OracleDriver");和第二步骤的项目加载入ojdbcX.jar有何关联?同一个东西吗?一头雾水。
第一次尝试:
在项目加载ojdbc6.jar!对,ojdbc6.jar
在代码注释掉Class.forName("oracle.jdbc.driver.OracleDriver");
运行一遍…发现还能执行。
在这里插入图片描述
第二次尝试:
在项目中卸掉ojdbc6.jar
恢复Class.forName("oracle.jdbc.driver.OracleDriver");
运行…提示错误
在这里插入图片描述

第三次尝试
在项目中加载ojdbc14.jar
恢复Class.forName("oracle.jdbc.driver.OracleDriver");
运行成功
在这里插入图片描述

第四次尝试:
在项目中加载ojdbc14.jar
在代码注释掉Class.forName("oracle.jdbc.driver.OracleDriver");
运行…提示错误
在这里插入图片描述

第五次尝试
在项目中卸掉ojdbc6.jar
在代码注释掉Class.forName("oracle.jdbc.driver.OracleDriver");
运行…却发现和第四次尝试一样的错误提示
在这里插入图片描述

第四次第五次的尝试可以猜测出:Class.forName("oracle.jdbc.driver.OracleDriver");是用于加载ojdbcX.jar文件的。

那为什么第一次第四次的都是加载ojdbcX.jar、注释Class.forName("");两者情况一致,怎么前者运行成功,而后者失败呢?这可以猜测出:
可能是ojdbc6.jar和ojdbc14.jar版本不一样,前者可以自动载入程序中,而后者出于安全性问题,去除了自动载入的方法。

  • DAO设计模式的使用

猜你喜欢

转载自blog.csdn.net/weixin_43548748/article/details/94640768