问题描述
做项目中遇到一个很奇怪的问题。 同一部分内容。需要查询某一个外部指定用户密码的oracle的指定表的记录。 public static List getDbConnByDbID(EntityDAO dao,String strdbid)throws Exception{ Connection conn=null; List ls = new ArrayList(); DbSource db = (DbSource)DbSource.getDbSourceBydbid(dao,strdbid); if (db != null) { String DbSourceName = CommonTools.getStrToGb2312(db.getM_strDbSourceName());//数据源名字 String DbSID = CommonTools.getStrToGb2312(db.getM_strDbSid());//数据服务器名字 String DbDataType = CommonTools.getStrToGb2312(db.getM_strDbType());//数据库类型 String DbDatabaseHost = CommonTools.getStrToGb2312(db.getM_strDbHost());//数据库服务器地址 String DbDatabasePort = CommonTools.getStrToGb2312(db.getM_strDbPort());//数据库端口. String DbUserName = CommonTools.getStrToGb2312(db.getM_strDbUserName());//用户名 String DbPassword = CommonTools.getStrToGb2312(db.getM_strDbPassword());//密码 if (DbDataType.equals("Oracle")) { String url = "jdbc:oracle:thin:@" + DbDatabaseHost + ":" + DbDatabasePort + ":" + DbSID; DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); conn = DriverManager.getConnection(url, DbUserName, DbPassword); if (conn != null) { ls = getAllTables(conn); } else { System.out.print("无Oracle数据库连接"); } } if(DbDataType.equals("SqlServer2005")){ Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); String URL = "jdbc:sqlserver://"+DbDatabaseHost+":"+DbDatabasePort+";DatabaseName="+DbSID; conn = DriverManager.getConnection(URL, DbUserName, DbPassword); if (conn != null) { ls = getAllTables(conn); }else { System.out.print("无SqlServer2005数据库连接"); } } if(DbDataType.equals("SqlServer2000")){ Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); String URL = "jdbc:sqlserver://"+DbDatabaseHost+":"+DbDatabasePort+";DatabaseName="+DbSID; conn = DriverManager.getConnection(URL, DbUserName, DbPassword); if (conn != null) { ls = getAllTables(conn); }else { System.out.print("无SqlServer2000数据库连接"); } } if(DbDataType.equals("MySql")){ String url = "jdbc:mysql://"+DbDatabaseHost+":"+DbDatabasePort+"/"+DbSID; Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(url,DbUserName,DbPassword); if (conn != null) { ls = getAllTables(conn); }else { System.out.print("无MySql数据库连接"); } } } return ls;}调试的过程中,在conn = DriverManager.getConnection(url, DbUserName, DbPassword); 的时候就错误提示了。 错误提示如下:ava.sql.SQLException: Io 异常: The Network Adapter could not establish the connectionat oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:439)at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)at java.sql.DriverManager.getConnection(DriverManager.java:525)at java.sql.DriverManager.getConnection(DriverManager.java:171)at com.catalogEx.dbmanage.action.DataSource.DbSourceQueryTables.getDbConnByDbID(DbSourceQueryTables.java:85)at com.catalogEx.dbmanage.action.DataSource.DbSourceQueryTables.catalogExec(DbSourceQueryTables.java:45)at com.catalogEx.dbmanage.action.ActionService.performAction(ActionService.java:50)at com.catalogEx.dbmanage.service.DbManageService.service(DbManageService.java:93)at javax.servlet.http.HttpServlet.service(HttpServlet.java:103)at com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:96)at com.caucho.server.http.Invocation.service(Invocation.java:315)at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:246)at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:164)at com.caucho.server.TcpConnection.run(TcpConnection.java:139)at java.lang.Thread.run(Thread.java:595)可我本地用plusql是可以打开的。 表也是可以看到的。 jar包也是都有的。 想让大家帮忙看下哪里有问题。 另外说下,我之前用的是2000系统这代码实际上是运行过一段时间的。都是正常的。 最近因为要新加功能,机器又中了度换了个2003就成这了。 我重新编辑了后错误提示为he Network Adapter could not establish the connection 真的是问题补充:后来我把代码弄成了一个简单的测试程序try{ Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@172.16.1.99:1251:chen", "dbmanage", "dbmanage");}catch(Exception ex){Logger.info("ex="+ex.getMessage());}提示错误为:Io 异常: The Network Adapter could not establish the connection
解决方案
端口默认是1521吧,不是1251
解决方案二:
升级一下oracle驱动呢
解决方案三:
是否需要更新jdbc的驱动 ??