如何使用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数据库的主要内容,如果未能解决你的问题,请参考以下文章