zoukankan      html  css  js  c++  java
  • JDBC连接Oracle数据库的问题

    场景:最近做一个java web项目,使用jdbc连接Oracle数据库,遇到了两个问题。

    问题1:jdbc连接不上Ubuntu Oracle服务器?

    后来发现这个问题的原因是由于连接字符串写错了,修正以后如下所示:

        public static Connection getConn() {
            Connection conn = null;
     
            try {
     
                // oracle
                // 1.加载驱动
                Class.forName("oracle.jdbc.driver.OracleDriver"); // 需要下载oracle
                                                                    // JDBC的驱动包
                // 2.得到链接
                String url = "jdbc:oracle:thin:user@//IP/orcl"; // user是用户名,IP是服务器地址,orcl是数据库的名称
                String user = "ji"; // 你ORACLE数据中一个用户名称
                String password = "ji"; // 对应上面用户名称的密码
                conn = DriverManager.getConnection(url, user, password); // 连接
     
                System.out.println(conn);
            } catch (Exception e) {
                e.printStackTrace();
            }
     
            return conn;
        }

    问题2:服务器连接成功后,从服务器上取不出数据?

    刚接触Oracle数据库的应用,小白一枚,若是大师,请忽略。

    (1)操作自信

    先描述一下本人的做法:

    服务器数据库为空,本地用oracle sql developer连接,连接后创建了一张表TABLE_USER,接着用INSERT语句添加了一条测试数据,为了测试插入数据是否成功,又用SELECT语句查询了一番,如下图所示:

    初始时,数据表为空:

    QQ截图20161107170106

    插入一条数据:INSERT INTO TABLE_USER(ID,USERNAME,PWD,STORE_ID) VALUES(1,'a','a',100)

    再次查看数据表:(可以看到数据已经插入到数据表)

    QQ截图20161107170412

    为了保险起见,再用SELECT语句验证一番:SELECT * FROM TABLE_USER  如下图所示:

    QQ截图20161107170704

    经过上述步骤,确信数据已经准备好,可以进行Java代码读数据测试了。

    (2)代码自信

    java代码读取测试表数据,代码如下:

    public static ResultSet getRs(Connection con, String sql, Object[] param) {
            Connection conn = con;
            PreparedStatement pstmt = null;
            ResultSet rs = null;
     
            try {
                pstmt = conn.prepareStatement(sql);
                if (param != null) {
                    for (int i = 0; i < param.length; i++) {
                        pstmt.setObject(i + 1, param[i]);
                    }
                }
                rs = pstmt.executeQuery();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return rs;
        }
     
    public static List<Account> findAccount(String sql, Object[] param) {
            Connection con = BaseDao.getConn();
            ResultSet rs;
            rs = BaseDao.getRss(con, sql, param);
            List<Account> list = new ArrayList<Account>();
     
            try {
                while (rs.next()) {
                    Account ac = new Account();
                    String accountEmail = rs.getString("USERNAME");
                    ac.setAccountEmail(accountEmail);
                    list.add(ac);
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    con.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            
            return list;
        }

    代码执行时,在rs.next()处一直出错,原因是rs中没有数据。

    于是乎不停的检查代码是否出错,一路调试,改变代码写法,重新在sql developer上再插入数据……无数次的修改,无济于事!!!

    (3)挥泪如雨

    搜索引擎搜了一遍又一遍,帖子看了一篇又一篇,方法试了一个又一个,却依然没有解决这个问题……

    折腾了两天,暂时放弃了……

    (4)柳暗花明

    偶然一次服务器关机了,然后重启了,我再次去SELECT数据时,突然发现我的数据表是空的,瞬间明白了,什么叫COMMIT。

    我竟不知道sql developer插入数据是在本地,若不提交服务器上是没有的。

    下面就看一下这个千呼万唤始出来COMMIT:

    just insert

    QQ截图20161107175459

    insert & commit

    QQ截图20161107175852

    就是这个commit按钮才能将数据提交到服务器。

    (5)重要的事情说三遍

    insert、update、delete语句一定要commit

    insert、update、delete语句一定要commit

    insert、update、delete语句一定要commit

  • 相关阅读:
    PHPMailer发送邮件失败:SMTP connect failed
    QQ邮箱开启SMTP服务的步骤
    php中PHPMailer发送带附件的电子邮件方法
    怎么获取smtp服务器用户帐号和密码
    How To Install Flash Player In Ubuntu 10.04 Lucid Lynx,install firefox flash plugin addon for ubuntu
    Rails 3.1 execjs and Could not find a JavaScript runtime
    railser
    Harmony: JavaScript And A DOM Environment In Ruby
    郭德纲继10月1日发微博感叹“暗箭起同行”,疑似暗讽姜昆“江郎才尽”后
    算命先生也用电脑了
  • 原文地址:https://www.cnblogs.com/xiaopanlyu/p/6039937.html
Copyright © 2011-2022 走看看