黑帽联盟

 找回密码
 会员注册
查看: 1763|回复: 2
打印 上一主题 下一主题

[其它求助] 求解决 提示是数据库问题

[复制链接]

2

主题

0

听众

24

积分

黑帽菜鸟

Rank: 1

  • TA的每日心情
    郁闷
    2018-8-21 10:39
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    package util;

    import java.io.IOException;
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.util.Properties;

    import org.apache.commons.dbcp.BasicDataSource;

    /**
    * 该类引入了连接池来管理连接,
    * 连接池代替了DriverManager。
    * 它是DBTool的升级版。
    */
    public class DBUtil {
           
            private static BasicDataSource ds;
           
            static {
                    //1.只读取一次连接参数
                    Properties p = new Properties();
                    try {
                            p.load(DBUtil.class.getClassLoader()
                                    .getResourceAsStream("db.properties"));
                    } catch (IOException e) {
                            e.printStackTrace();
                            throw new RuntimeException("读取配置文件失败",e);
                    }
                    String driver = p.getProperty("driver");
                    String url = p.getProperty("url");
                    String user = p.getProperty("user");
                    String pwd = p.getProperty("pwd");
                    String initSize = p.getProperty("initSize");
                    String maxSize = p.getProperty("maxSize");
                    //2.只创建一个连接池
                    ds = new BasicDataSource();
                    //3.将连接参数设置给连接池
                    ds.setDriverClassName(driver);
                    ds.setUrl(url);
                    ds.setUsername(user);
                    ds.setPassword(pwd);
                    ds.setInitialSize(new Integer(initSize));
                    ds.setMaxActive(new Integer(maxSize));
            }
           
            public static Connection getConnection()
                    throws SQLException {
                    return ds.getConnection();
            }
           
            /**
             * 由连接池创建的连接,其close()被连接池改为
             * 归还的作用,而不是真正关闭连接。并且归还时,
             * 该连接内的数据被清空,状态重置为空闲态。
             */
            public static void close(Connection conn) {
                    if(conn != null) {
                            try {
                                    conn.close();
                            } catch (SQLException e) {
                                    e.printStackTrace();
                                    throw new RuntimeException("归还连接失败",e);
                            }
                    }
            }

            public static void main(String[] args)
                            throws SQLException {
                    Connection conn =
                            DBUtil.getConnection();
                    System.out.println(conn);
                    DBUtil.close(conn);
            }
           
    }








    以下是报错求解决 提示是说数据库连接不上
    Exception in thread "main" org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (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:1521rcl
    )
            at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549)
            at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1388)
            at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
            at util.DBUtil.getConnection(DBUtil.java:48)
            at util.DBUtil.main(DBUtil.java:70)
    Caused by: 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:1521rcl

            at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
            at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:261)
            at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
            at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:441)
            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 org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
            at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)
            at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)
            at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545)
            ... 4 more


    帖子永久地址: 

    黑帽联盟 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与黑帽联盟享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和黑帽联盟的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、黑帽联盟管理员和版主有权不事先通知发贴者而删除本文

    yun 黑帽联盟官方人员 

    920

    主题

    37

    听众

    1364

    积分

    超级版主

    Rank: 8Rank: 8

  • TA的每日心情
    奋斗
    2019-10-18 11:20
  • 签到天数: 678 天

    [LV.9]以坛为家II

    sid无法识别,默认的数据库是orcl,你链接的数据库是orcl吗?如果不是,修改下你数据库的名称,找到以下目录,/oracle/product/10.2.0/db_1/network/admin,修改listener.ora,在里面的sid括号里面修改,或者直接添加一个sid,希望可以帮到你

    点评

    yunxin  好的 谢谢大神 我试下  详情 回复 发表于 2016-11-22 23:22
    回复

    使用道具 举报

    2

    主题

    0

    听众

    24

    积分

    黑帽菜鸟

    Rank: 1

  • TA的每日心情
    郁闷
    2018-8-21 10:39
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    yun 发表于 2016-11-22 22:54
    sid无法识别,默认的数据库是orcl,你链接的数据库是orcl吗?如果不是,修改下你数据库的名称,找到以下目录 ...

    好的  谢谢大神  我试下
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 会员注册

    发布主题 !fastreply! 收藏帖子 返回列表 搜索
    回顶部