读书人

找不到原因请高手指教,该如何处理

发布时间: 2012-05-09 12:13:59 作者: rapoo

找不到原因请高手指教

我链接数据库的代码如下:
package connection;

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

public class ConnectionManager
{
private static Connection conn;
public static Connection getConnection()
{


try
{
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();

}
catch (InstantiationException e)
{

e.printStackTrace();
}
catch (IllegalAccessException e)
{
e.printStackTrace();

}
catch (ClassNotFoundException e)
{

e.printStackTrace();
}
//加载驱动
String url="jdbc:oracle:thin:@localhost:1521:mldn"; //1521是端口 orcl是数据库名称
String user="mldn";String password="oracleadmin"; //用户名 密码
try
{
Connection conn= DriverManager.getConnection(url,user,password);
} catch (SQLException e)
{

e.printStackTrace();
} //创建链接



return conn;
}

public static void destory()
{
try
{
conn.close();//关闭数据库

}catch(SQLException e)
{

e.printStackTrace();

}


}












}

查询代码:
package connection;

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

public class ResultSetTest
{
public static void main(String[]args)
{
Connection conn = ConnectionManager.getConnection();
Statement st=null;
try
{
st= conn.createStatement();
//执行查询操作并将结果存入ResultSet中
ResultSet rs=st.executeQuery("select * from emp");
//判断rs是否有下一笔记录
while(rs.next())
{
String name = rs.getString("ename");

System.out.println("雇员的姓名是:" + name);

}

}
catch(SQLException e)
{

e.printStackTrace();

}
finally
{
try
{
st.close();
conn.close();

}
catch(SQLException e)
{
e.printStackTrace();

}


}








}




}

启动后总是报这样的错误,不知道原因,请牛人,高手指教!多谢多谢!

java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
The Connection descriptor used by the client was:
localhost:1521:mldn

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:260)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:386)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:413)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:164)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:34)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:752)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at connection.ConnectionManager.getConnection(ConnectionManager.java:39)
at connection.ResultSetTest.main(ResultSetTest.java:12)
Exception in thread "main" java.lang.NullPointerException
at connection.ResultSetTest.main(ResultSetTest.java:39)


[解决办法]
try
{
Connection conn= DriverManager.getConnection(url,user,password);


} catch (SQLException e)
{

e.printStackTrace();
} //创建链接



return conn;
}

conn 已经定义了 就不要重新定义了吧?
改成这样看看
conn= DriverManager.getConnection(url,user,password);

[解决办法]
貌似你的实例名错了吧
去数据库查下
select * from v$instance
[解决办法]
监听器文件中GLOBAL_DBNAME,SID_NAME 是mldn吗?

[解决办法]
Connection conn = ConnectionManager.getConnection();
这句话 conn 是个空吧!

[解决办法]
mldn你的 oracle中有这个数据库么 ?

你到服务中找找有没有OracleServicemldn这个服务
[解决办法]
The Connection descriptor used by the client was:
localhost:1521:mldn
数据库名字不对啊 。。。
[解决办法]
明显实例名不对嘛
[解决办法]
The Connection descriptor used by the client was……解决方法!
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
The Connection descriptor used by the client was:
localhost:1521:orcl



改了数据源然后就发生上面的错误,真是郁闷到了极点!

多次尝试无效后,我导入了一个oracle自带的包:classes12.jar

然后问题就奇迹般解决了

读书人网 >J2EE开发

热点推荐