Oracle 11g Express Java JDBC;数据库工作区

时间:2014-04-29 21:48:12

标签: java jdbc oracle11g

我在访问数据库所在的Oracle 11g Express Workspace时遇到了一些困难。

我可以通过JDBC Driver注册我的Class.forName("jdbc.oracle.driver.OracleDriver")并通过Connection con = DriverManager.getConnection("jdbc:oracle:thin:" + username + "/" + password + "@localhost:1521:xe")成功连接,但无法进入包含我创建的数据库的工作区。

任何通过Statement smt = Connection.createStatement()创建数据库的尝试都会产生java.lang.UnsupportedOperationException

我甚至不确定我是否连接到正确的地方。我知道当我查看Oracle Database 11.2 XE参数时,它将db_name列为xe,我可以通过sys as sysdba并使用我为Oracle 11g Express建立的密码连接到它数据库,但是当我创建数据库并使用ddldml语句来填充它时,我无法进入工作空间。

也许我根本不知道该做什么,因为我是JDBC新手。我检查了我的TNSNAMES.ORA文件,确实有一个XE条目代表我的Oracle 11g Express以及代表Oracle数据库的其他条目。我想我在那里我只是不知道怎样做才能进入我创建的XE数据库。

我用来执行SQL语句的代码如下:

    Statement smt = null;


    try {
        smt = connection.createStatement();

        String command = "CREATE table x(y varchar(2))";

        smt.executeLargeUpdate(command);

    } catch (SQLException e) {
        // TODO Auto-generated catch block
        System.out.println(e.getMessage() + e.getCause());
    }

2 个答案:

答案 0 :(得分:1)

您需要类路径上的ojbdc6.jar或等效项。这也可能是其他一些问题,因此我将详细介绍一个有效的例子,希望能突出问题。

我使用以下配置和组件:

我执行以下步骤以从java类生成与oracle xe数据库的连接:

为Windows安装程序运行Oracle XE 32位,提供密码'密码'。然后运行services.msc以确认TNS列表器和XE服务都在运行。

enter image description here

然后在eclipse中创建一个新的java项目。将ojbc6.jar作为外部jar添加到构建路径中。

enter image description here

然后我运行以下类(右键单击 - >运行为 - > java应用程序)来创建表:

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


public class MyOracleTest {

    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        Class.forName("oracle.jdbc.OracleDriver");
        String username = "sys as sysdba";
        String password = "password";
        Connection conn = null;
        Statement st = null;
        try{
            conn = DriverManager.getConnection("jdbc:oracle:thin:" + username + "/" + password + "@localhost:1521:xe");
            st = conn.createStatement();
            String command = "CREATE table x(y varchar(2))";
            st.executeUpdate(command);
        }finally{
        if(st != null){
            st.close();
        }
        if(conn != null){
            conn.close();
        }
        }
    }

然后我使用sqlplus验证表的存在:

enter image description here

答案 1 :(得分:1)

要访问工作空间中的对象,您必须编写指定对象名称的SQL语句,其工作空间名称为“workspacename.objectname”。

例如。

如果您已创建工作区并将其命名为“XESPACE”并在工作区内创建了一个表“STUDENT”,那么要从JDBC访问STUDENT表,请遵循以下代码。

步骤1:将JDBC驱动程序注册为 Class.forName(“oracle.jdbc.driver.OracleDriver”)

第2步:使用 DriverManager.getConnection(“jdbc:oracle:thin:@ 127.0.0.1:1521:XE”,“用户名”,“密码”打开连接“)
        其中127.0.0.1代表localhost。

第3步:现在访问工作区内的表,按如下方式编写sql查询 “从XESPACE.STUDENT中选择*