2015-06-01 295 views
-1

我的要求是检查我们是否可以连接到没有通过java程序定义的模式的数据库并创建数据库。 这工作正常使用JDBC连接到数据库URL

Connection connection = 
      DriverManager.getConnection("jdbc:db2://wcspocca-db.cloudapp.net:50001/db2inst1","vmadmin","[email protected];"); 

数据库:DB2 模式:DB2INST1

Connection connection = 
      DriverManager.getConnection("jdbc:db2://wcspocca-db.cloudapp.net:50001/","vmadmin","[email protected];"); 

失败 为什么?

com.ibm.db2.jcc.am.mo: [jcc][10165][10045][4.7.85] Invalid database URL syntax: jdbc:db2://wcspocca-db.cloudapp.net:50001/. ERRORCODE=-4461, SQLSTATE=42815 
+0

所以DBName是强制性的。谢谢。 – shiva

+0

我们可以实现通过下面的java程序 1.连接到安装在主机上的远程数据库DB2 2.对数据库DB2 3.执行一些表的创建创建一个数据库模式“PROD” SQLS 机1: wcspocca-db.cloudapp.net。 (db2安装时没有创建任何数据库模式) 机器2 :(运行java程序,连接数据库安装在上面的远程机器上运行一些sqls) – shiva

回答

0

因为在第二个例子中没有指定数据库。您可以在DB2 JDBC documentation中找到要求:

>>-+-jdbc:db2:------+--//--server--+---------+--/--database-----> 
    +-jdbc:db2j:net:-+    '-:--port-' 
    '-jdbc:ids:------' 

>--+---------------------------+-------------------------------\>< 
    '-:--| connection-options |-' 

数据库参数不是可选的。

0

如何我通常使用java的是像下面连接到数据库:间距出来,让您阅读以下

//Wide Scope Variables 
static Connection conn = null; //right now this connection is off 
static String dbURL = "database url"; //I use SQL developer and your able to grab the connection url there 

static String user = "This can be empty and ask user for input of hard code the user name"; 

static String pass = "same as above"; 

文本在该方法中要检查驱动程序和连接我通常不喜欢这样

//Register the Driver 
    try 
    { 
     Class.forName("oracle.jdbc.driver.OracleDriver"); 
    } 
    catch(ClassNotFoundException e) 
    { 
     System.err.println(e.getMessage()); 
    } 

    //Set up connection 
    try 
    { 
     conn = DriverManager.getConnection(dbURL,user,password); 
     conn.clearWarnings(); 
     stmt = conn.createStatement(); 
    } 
    catch(SQLException e) 
    { 
     System.err.println(e.getMessage()); 
    } 

第一尝试捕捉代码注册驱动程序的SQL开发人员则第二尝试捕捉设置与数据库的连接。这帮助我节省了很多头痛,并且我发现它是使用java时最直接的路线。

0

仔细检查网址后端口号,如果你没有把你想连接的数据库名称,然后它将如何连接。它就像你正在给一个家庭地址,没有小区号码。