【问题标题】:Oracle 11g Express Java JDBC; Database WorkspaceOracle 11g Express Java JDBC;数据库工作区
【发布时间】:2014-06-16 01:20:15
【问题描述】:

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

我可以通过Class.forName("jdbc.oracle.driver.OracleDriver") 注册我的JDBC Driver 并通过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 文件,确实有一个代表我的 Oracle 11g Express 的 XE 条目以及代表 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());
    }

【问题讨论】:

  • 从 oracle 9i 开始,该驱动程序已被弃用,您是否尝试过使用 Class.forName("oracle.jdbc.OracleDriver")?见以下链接:tomcat.apache.org/tomcat-5.5-doc/…
  • 刚刚把驱动注册字符串改成oracle.jdbc.OracleDriver就可以成功注册数据库驱动了。我仍然需要了解为什么我连接到我的数据库但无法执行 SQL。
  • 你能贴出你用来执行 SQL 的代码吗?
  • @GoldenJam 发表在问题描述中。
  • 嗯,好的,应该是executeUpdate 而不是executeLargeUpdate。我打算使用正确的行为,但对 Eclipse 的自动完成感到草率。但是,我仍然不知道如何进入我通过 Oracle 11g Express 创建的数据库。现在我刚刚连接到xe 并且可以运行 SQL 命令。

标签: java jdbc oracle11g


【解决方案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",
            "Username", "Password" 打开连接)

其中 127.0.0.1 代表本地主机。

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

【讨论】:

    【解决方案2】:

    您需要类路径中的 ojbdc6.jar 或等效文件。它也可能是许多其他问题,所以我将详细介绍一个工作示例,希望它能突出问题。

    我正在使用以下配置和组件:

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

    为 Windows 安装程序运行 Oracle XE 32 位,提供密码“password”。然后运行 ​​services.msc 以确认 TNS 侦听器和 XE 服务都在运行。

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

    然后我运行下面的类(右键->运行为->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 验证表的存在:

    【讨论】:

      猜你喜欢
      • 2011-04-24
      • 2017-01-31
      • 1970-01-01
      • 2014-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-11
      相关资源
      最近更新 更多