java和Oracle 11g连接举例【Z】

先把oracle服务打开,这家伙太吃内存了!

java和Oracle 11g连接举例【Z】

然后打开客户端的 SQL Developer new 一个 connection ,名字叫 test ,提示输入用户名和密码的时候输入安装时候默认的密码,我这是 system 123456

 

java和Oracle 11g连接举例【Z】

这只是一个连接(Connection),里面原本就有很多示例的数据库实例,在 other users 里面,新建一个 user (个人认为感觉就像是新建一个数据库或者是解决方案),我新建一个 anran ,里面存储过程,函数什么的,自动的一应俱全。

 

java和Oracle 11g连接举例【Z】

新建了一个 table ,名字叫 test ,有一列叫 ID

然后就是用 jdbc 连接数据库啦。 jdbc driver 可以在 oracle 11g 安装目录中找到,例如我的路径是 D:\oracle11g\product\11.1.0\db_1\jdbc\lib ,里面有 4 jar 包,根据本机上装的 jdk 的版本不同来选择, oracle 官方网站上 是这么说的:

ojdbc5.jar (1,890,499 bytes) - Classes for use with JDK 1.5. It contains the JDBC driver classes, except classes for NLS support in Oracle Object and Collection types.

ojdbc5_g.jar (2,942,818 bytes) - Same as ojdbc5.jar, except that classes were compiled with "javac -g" and contain tracing code.


ojdbc6.jar (1,988,051 bytes) - Classes for use with JDK 1.6. It contains the JDBC driver classes except classes for NLS support in Oracle Object and Collection types.

ojdbc6_g.jar (3,217,836 bytes) - Same as ojdbc6.jar except compiled with "javac -g" and contains tracing code.

这里我选的是 ojdbc6 ,因为我装的是 jdk1.6 ,而且我只是基本用途,用不着 ojdbc6_g.jar ,节省大小。

代码如下:

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


public class ConnectionTest {

static Connection conn;
static Statement stm;
static ResultSet rs;
static String driver="oracle.jdbc.driver.OracleDriver";
static String url="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
public static void main(String[] args) {
   try {

   DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
// // 这里与 平时的Class.forName("...")不同但是本质上是一样的,在api里面实际上都是上面的 registerDriver 方法

注:一般都还是用Class.forName("..."),假如不行而错误提示刚好是这一行的话,不妨试试看上面的那个方法。具体什么原因我也不清楚,只是自己之前用Class.forName("...")不行而在网上找了用 DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());却可以了。。

   conn=DriverManager.getConnection(url, "anran", "123456");
    stm=conn.createStatement();
    stm.executeUpdate("insert into test values("+3453+")");
    rs=stm.executeQuery("select * from test");
    while (rs.next()) {
    System.out.println(rs.getInt("ID"));
   
    }
    conn.close();
    } catch (SQLException e) {

    e.printStackTrace();
    }
}

}

我运行了两次,那么表里面应该有两行 3453 的数据,这是 sql plus 的结果:

 

java和Oracle 11g连接举例【Z】