以前用jdbc写oracle的数据库程序时,都得先在sqlplus下先建立表空间、创建用户和密码、赋权限。现在我要想在代码里实现创建表空间的功能,想到用用statement对象去执行建表空间语句就可以了,但这时想到:没有在sql下创建表空间和用户,就不能用Class.forName("oracle.jdbc.driver.OracleDriver");和DriverManager.getConnection()来得到数据库连接,就更不能产生statement对象来执行sql语句了。
网上找了个用jdbc动态生成oracle表空间的帖子,作者这样得到数据库连接的:conn = DriverManager.getConnection(UserUtil.getInstance().getUrl(),UserUtil.getInstance().getUsername(), UserUtil.getInstance().getPassword());哪位大哥可以教下我UserUtil.getInstance().getXXX()这几个地方的原理,为什么不在sqlplus下建表空间但可以这样来得到数据库的连接呢?先谢谢!

解决方案 »

  1.   

    要建表空间也是用sys登录吧?
    那怎么会取不到连接哪?
      

  2.   

    大哥意思是在DriverManager.getConnection()中用sys里得到连接嘛?
      

  3.   

    小妹妹听哥的绝对没错。。
    Class.forName("oracle.jdbc.driver.OracleDriver");
    Connection con = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:你的数据库名称","你的数据库用户","数据库密码");
    Statement st = con.createStatement();记得导入ojdbc4.jar包
      

  4.   

    对啊 sys用户总是有自己的执行空间,而且,建空间这种动作也是系统用户执行的,这和你在sqlplus跑没什么区别吧
      

  5.   


    问题是,我想在代码里通过执行sql语句来建表空间(数据库)和用户+密码,这些都创建怎么能用Connection con = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:你的数据库名称","你的数据库用户","数据库密码");
    来得到连接呢???
      

  6.   

    你先告诉我为什么不能用DriverManager.getConnectio取得连接....
      

  7.   

    我对oracle不熟呢.之前我这样想:以前,写jdbc的程序时,都是先在sqlplus下建表空间,用户、密码,这些。之后在代码里通过DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl",用户,密码);来得到连接。
    现在,我想让代码自己生成表空间和用户+密码这些,想通过statement来执行sql来创建,这时发现因为没有表空间和用户、密码,所以不能用上述的方法得到连接,也不能执行下面的sql了。我之前就是这样想的。
      

  8.   

    就是在DriverManager.getConnection()中用sys和我的sys密码来得到连接嘛?