Java JDBC for Oracle注意事项两三点

来源:互联网 发布:北京神州新桥科技知乎 编辑:程序博客网 时间:2024/04/29 22:55

  Java JDBC for Oracle注意事项两三点

        近日在进行数据库数据的导入工作,由于导入逻辑相对复杂,最后还是决定放弃SQL/Procedure,改用程序完成。其实,相信大家对Java JDBC连接已经非常熟悉了,只需要几行语句就可以完成连接,代码如下:

       Class.forName("oracle.jdbc.driver.OracleDriver");       String url = "jdbc:oracle:thin:@连接地址";       String userName = "用户名";       String password = "密码";       Connection conn = DriverManager.getConnection(url, userName, password);       Statement smt = conn.createStatement();       Statement smta = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,                             ResultSet.CONCUR_READ_ONLY);
        查看Statement  createStatement(int resultSetType,   int resultSetConcurrency)中有两个参数,我们第一个要注意的是Statement中的连接方式,也就是resultSetType参数的作用。默认的连接方式是ResultSet.TYPE_FORWARD_ONLY方式,也就是说这种方式仅仅允许结果集的游标向下滚动,查询结果集中数据。如果我们需要重复遍历结果集,这种方式就不行了。另外两种模式:

        1)ResultSet.TYPE_SCROLL_INSENSITIVE 结果集游标可上下移动,当数据库变化,当前结果集不变。
        2)ResultSet.TYPE_SCROLL_SENSITIVE返回可滚动的结果集,当数据库变化时,当前结果集同步改变。

        createStatement方法的另一个参数,resultSetConcurrency则规定了Statement的同步方式,ResultSet.CONCUR_READ_ONLY 不能用结果集更新数据库中的表。ResultSet.CONCUR_UPDATETABLE能用结果集更新数据库中的表。
        第二个我们需要注意的地方,当我们进行数据的操作时(增删改查),开发人员往往习惯于写这样的SQL语句:select *from TableA; 注意这个“;”,在Statement语句中不应该出现,否则会抛出异常:java.sql.SQLException:ORA-00911: invalid character。
        第三个,是一个标准Java的小地方,在数据导入中,我们常常将一个字段的字符串用分隔符连接起来,但是导入时需要拆分。例如:A/B/C/。大家可以看看如下三段代码,结果已经用注释标注了:

       String a = " A/B/C/";         String[] arr = null;       arr = a.split("/");       System.out.println("arr lenght = "+arr.length);  //3       a = " A/B/C";        arr = a.split("/");       System.out.println("arr lenght = "+arr.length);  //3       a = " A";        arr = a.split("/");       System.out.println("arr lenght = "+arr.length);  //1
        从这三段代码,我们可以看出,不管需要被分割的字符串是否包含被分隔符,以及被一否以被分隔符结尾,都不影响我们预期的“分割”结果。

原创粉丝点击