如何使用JDBC连接oracle数据库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用JDBC连接oracle数据库相关的知识,希望对你有一定的参考价值。

楼主您好

1.在动手先代码之前,我们先把环境配置妥善。先从安装了Oracle的数据库服务器中,找到
Oracle安装目录,然后将该目录下的jdbc\lib\classes12.jar文件拷贝到WEB发布服务器的某个目录。假设就直接放在C:\根目录下吧,然后把该路径添加到„系统--高级--环境变量‟
中变量名为„CLASSPATH‟的值中,如:
D:\Program Files\SQLLIB\java\db2java.zip;D:\Program
Files\SQLLIB\java\runtime.zip;c:classes12.jar;
也就是让java能够找到这个包。

2
1.注册加载驱动
驱动名:DRIVER="oracle.jdbc.driver.OracleDriver";
Class.forName("驱动类名");

3
2.获得连接
数据库地址: URL="jdbc:oracle:thin:@127.0.0.1:1521:ORCL";
Connection conn = DriverManager.getConnection(数据库地址,用户名,密码);
System.out.println("连接成功");

4
3.创建Statement对象
Statement
类的主要是用于执行静态 SQL 语句并返回它所生成结果的对象。通过Connection 对象的
createStatement()方法可以创建一个Statement对象。例如:Statement statament =
connection.createStatement(); 具体示例创建Statement对象
Statement statamentmysql =connectMySQL.createStatement();
参考技术A ConnectionFactory类:
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import org.apache.log4j.Logger;
public class ConnectionFactory

private Connection connection = null;
private String url = "jdbc:oracle:thin:@localhost:1521:ORACLE";

/**
* 创建连接
* @return
*/
public Connection createConnection()
try
Class.forName("oracle.jdbc.driver.OracleDriver");
connection = DriverManager.getConnection(url, "scott", "tiger");
return connection;
catch (ClassNotFoundException e)
Logger.getLogger(this.getClass()).error(e.getMessage());
return null;
catch (SQLException e)
Logger.getLogger(this.getClass()).error(e.getMessage());
return null;


/**
* 释放连接
*/
public void releaseConnection()
if (connection!=null)
try
connection.close();
catch (SQLException e)
Logger.getLogger(this.getClass()).error(e.getMessage());



测试类:Test.java
package jdbc;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Test
private static ConnectionFactory cFactory = new ConnectionFactory();
static ResultSet rs = null;
static Connection connection = null;
static Statement statement = null;
/**
* @param args
*/
public static void main(String[] args)
try
// Statement statement = cFactory.createConnection().createStatement();
// ResultSet rs = statement.executeQuery("select * from test");
/*上面注释掉的程序是之前写的,可是查询不出数据,rs.next()方法一直是false,后来百度后,使用PrepareStatement替代Statement,解决了问题*/
PreparedStatement pState = cFactory.createConnection().prepareStatement("select * from test");
ResultSet rs = pState.executeQuery();
while(rs.next())
String id = rs.getString("id");
String name = rs.getString("name"); //【等同写法:String name = rs.getString(2);此时name要对应数据库中的第二列】
String age = rs.getString("age");
String sex = rs.getString("sex");
System.out.println("id="+id+";name="+name+";age="+age+";sex="+sex);

catch (SQLException e)
e.printStackTrace();


参考技术B 你是要代码,还是讲解过程?

如何确定给定 JDBC 连接的数据库类型?

【中文标题】如何确定给定 JDBC 连接的数据库类型?【英文标题】:How to determine database type for a given JDBC connection? 【发布时间】:2010-09-20 05:34:54 【问题描述】:

我需要处理返回三个数据库(Oracle、sybase、MS-Server)的存储过程/函数的结果集。过程/函数通常相同,但调用在 Oracle 中略有不同。

statement.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);
...
statement.execute(); 
ResultSet rs = (ResultSet)statement.getObject(1);

JDBC 没有提供通用的方法来处理这个问题,所以我需要在我的代码中区分不同类型的 DB。我得到了连接,但不知道确定数据库是否是 oracle 的最佳方法。我可以使用驱动程序名称,但宁愿找到更简洁的方法。

【问题讨论】:

【参考方案1】:

我怀疑你会想要使用 DatabaseMetaData 类。 DatabaseMetaData.getDatabaseProductName 很可能就足够了,但如果您的代码依赖于您正在使用的特定数据库的特定版本,您可能还想使用 getDatabaseProductVersion 方法。

【讨论】:

Microsoft SQL Server 为产品名称提供“Microsoft SQL Server”。 PostgreSQL 给出“PostgreSQL” MySQL 给出“MySQL”,HSQLDB 给出“HSQL 数据库引擎”。 Derby 提供“Apache Derby” 这个答案中列出了大多数其他值:***.com/questions/9320200/…【参考方案2】:

可以使用org.apache.ddlutils,类Platformutils:

databaseName = new PlatformUtils().determineDatabaseType(dataSource)

【讨论】:

以上是关于如何使用JDBC连接oracle数据库的主要内容,如果未能解决你的问题,请参考以下文章

JDBC连接ORACLE

使用 oracle jdbc 连接时如何获取数据库模式名称?

jdbc连接oracle

如何将 JDBC 连接到 tns oracle

java使用jdbc连接oracle数据库怎么关闭连接

AWS Glue:如何使用 JDBC 连接 oracle db