JDBC连接Oracle数据库

  前面记得有过博客简单的介绍过JDBC和ODBC的区别,在Java开发中经常用到JDBC连接数据库,下面通过实例介绍如何实现:

连接

<span style="font-family:KaiTi_GB2312;font-size:18px;">public class DbUtil {
    public static Connection getConnection(){
        Connection conn=null;
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");//找到oracle驱动器所在的类
            String url="jdbc:oracle:thin:@localhost:1521:bjpowernode"; //URL地址
            String username="drp";
            String password="drp";
            conn=DriverManager.getConnection(url, username, password);  

        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return conn;
    }
    <pre name="code" class="java">
    public static void close(PreparedStatement pstmt){
        if(pstmt !=null){
            try {
                pstmt.close();
            } catch (SQLException e) {  

                e.printStackTrace();
            }
        }
    }  

    public static void close(ResultSet rs){
        if(rs !=null){
            try {
                rs.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }  </span>

添加

<span style="font-family:KaiTi_GB2312;font-size:18px;">public void addUser(User user){
        String sql="insert into t_user(user_id,user_name,PASSWORD,CONTACT_TEL,EMAIL,CREATE_DATE)values(?,?,?,?,?,?)"; //?为参数占位符
        Connection conn=null;
        PreparedStatement pstmt=null; //通常利用PreparedStatement进行操作,性能得到优化
        try{
            conn=DbUtil.getConnection();
            pstmt=conn.prepareStatement(sql);
            pstmt.setString(1, user.getUserId());
            pstmt.setString(2,user.getUserName());
            pstmt.setString(3, user.getPassword());
            pstmt.setString(4, user.getContactTel());
            pstmt.setString(5,user.getEmail());
            //pstmt.setTimestamp(6,new Timestamp(System.currentTimeMillis()));
            pstmt.setTimestamp(6, new Timestamp(new Date().getTime()));//获取当前系统时间
            pstmt.executeUpdate();//执行增删改操作  

        }catch(SQLException e){
            e.printStackTrace();
        }finally{
            DbUtil.close(conn);
            DbUtil.close(pstmt);  

        }  

    } </span>

查询

<span style="font-family:KaiTi_GB2312;font-size:18px;">public User findUserById(String userId){
        String sql = "select user_id, user_name, password, contact_tel, email, create_date from t_user where user_id=?";
        Connection conn=null;
        PreparedStatement pstmt=null;
        ResultSet rs=null;//定义存放查询结果的结果集
        User user=null;
        try{
            conn=DbUtil.getConnection();
            pstmt=conn.prepareStatement(sql);
            pstmt.setString(1,userId);
            rs=pstmt.executeQuery();//执行查询操作
            if(rs.next()){
                user=new User();
                user.setUserId(rs.getString("user_Id"));
                user.setUserName(rs.getString("user_name"));
                user.setPassword(rs.getString("password"));
                user.setContactTel(rs.getString("contact_Tel"));
                user.setEmail(rs.getString("email"));
                user.setCreateDate(rs.getTimestamp("create_date"));
            }
        }catch(SQLException e){
            e.printStackTrace();
        }finally{
            //按顺序进行关闭
            DbUtil.close(rs);
            DbUtil.close(pstmt);
            DbUtil.close(conn);  

        }
        return user;
    }  </span>

总结

1、PreparedStatement与Statement的简单区别

Statement为一条SQL语句生成执行计划,如果参数值不同,会生成不同的sql语句,执行对应参数值个数的次数。如果只有一条SQL语句执行时,最好采用Statement进行。
PreparedStatement使用绑定变量重用执行计划,不同的参数值对应的查询语句,只会生成一个sql语句,大大提高了执行的效率。是预编译的。在大批量语句操作时,提高了效率,同时可采用'?'来代表参数,可以防止SQL注入,安全性更高。

2、与之前的知识进行联系

目前接触到的额JDBC中的连接对象有Connection这个与之前ODBC的Connection作用相同,为数据库连接对象,而PraparedStatement与Statement与ODBC中的command对象类似,都是用来执行SQL语句的。查询方法中用到的ResultSet则与之前用到的DataSet或者DataTable功能类似,这样一联系,似乎这个连接和使用过程变得简单的许多吧!

时间: 2024-08-02 05:12:47

JDBC连接Oracle数据库的相关文章

JDBC连接Oracle数据库出现Io 异常

环境:Oracle11g + MyEclipse 6.5 + JDK1.6 问题:JDBC连接Oracle数据库出现以下错误: java.sql.SQLRecoverableException: Io 异常: The Network Adapter could not establish the connection at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:101) at oracle.

JDBC连接Oracle数据库常见问题及解决方法

oracle|解决|数据|数据库|问题 Jbuilder正确连接 oracle 9i需要注意的几个问题 oracle8以上的应该都使用classes12.jar文件作为jdbc驱动: 正确设置windows的classpath和jbuilder中的enterprise setup .configure libraries,将casses12.jar路径正确添加到上述需要设置的地方: 进入database pilot,在database pilot中,file---new 在driver列表中如果

JDBC连接Oracle数据库常见问题及解决方法_JSP编程

注:本文是斑竹从JDBC & Transaction版摘录广大站友的提问以及各种解答整理而来,如果您认为本文的内容已触犯了您的权益,请联系管理员进行修改. Jbuilder正确连接 oracle 9i需要注意的几个问题 oracle8以上的应该都使用classes12.jar文件作为jdbc驱动: 正确设置windows的classpath和jbuilder中的enterprise setup .configure libraries,将casses12.jar路径正确添加到上述需要设置的地方:

通过JDBC连接oracle数据库的十大技巧

oracle|技巧|数据|数据库 Java数据库连接(JDBC)API是一系列能够让Java编程人员访问数据库的接口,各个开发商的接口并不完全相同.在使用多年的Oracle公司的JDBC后,我积累了许多技巧,这些技巧能够使我们更好地发挥系统的性能和实现更多的功能. 1.在客户端软件开发中使用Thin驱动程序 在开发Java软件方面,Oracle的数据库提供了四种类型的驱动程序,二种用于应用软件.applets.servlets等客户端软件,另外二种用于数据库中的Java存储过程等服务器端软件.在

用JDBC连接Oracle数据库(问题得以解决,特此总结一下,欢迎兄弟们指出不足)

通常有四种连接方式可供选择,这里我只采用了其中两种我采用win98下的tomcat服务器是winnt的,安装的Oracle我的类路径是:D: omcatwebappsROOTWEB-INFclassesyourpackagejsp路径:D: omcatwebappsROOT调用路径:http://127.0.0.1:8080/connOracle.jsp(你的实在不行,可以试试我的路径^_^)1,使用JDBC_ODBC桥连接   首先记得在系统数据源里建立一个ODBC连接哦^_^,(可以采用PB

通过JDBC连接oracle数据库的十大技巧_Java编程

文章来源:数据库论坛 作者:jackma Java数据库连接(JDBC)API是一系列能够让Java编程人员访问数据库的接口,各个开发商的接口并不完全相同.在使用多年的Oracle公司的JDBC后,我积累了许多技巧,这些技巧能够使我们更好地发挥系统的性能和实现更多的功能. 1.在客户端软件开发中使用Thin驱动程序 在开发Java软件方面,Oracle的数据库提供了四种类型的驱动程序,二种用于应用软件.applets.servlets等客户端软件,另外二种用于数据库中的Java存储过程等服务器端

Java jdbc连接oracle数据库 出现网络适配器无法建立连接异常

问题描述 importjava.sql.*;publicclassTestJDBC{publicstaticvoidmain(String[]args)throwsException{//TODOAuto-generatedmethodstubClass.forName("oracle.jdbc.driver.OracleDriver");Connectionconn=DriverManager.getConnection("jdbc:oracle:thin:@169.254

oracle 11g-【求助】java使用jdbc连接Oracle 11g ex版本数据库时的问题

问题描述 [求助]java使用jdbc连接Oracle 11g ex版本数据库时的问题 我下载Oracle数据库连接驱动类与SqlConnectText.java在同一目录下,是ojdbc6.jar 数据库版本是Oracle11g Express版本,SID是xe JDK是1.6版本的 然后端口1521正在被监听 这是Java类代码 import java.sql.*; public class SqlConnectTest { private static String dbUrl = "jd

JDBC连接各种数据库经验技巧集萃

技巧|数据|数据库 Java数据库连接(JDBC)由一组用 Java 编程语言编写的类和接口组成.JDBC 为工具/数据库开发人员提供了一个标准的 API,使他们能够用纯Java API 来编写数据库应用程序.然而各个开发商的接口并不完全相同,所以开发环境的变化会带来一定的配置变化.本文主要集合了不同数据库的连接方式. 一.连接各种数据库方式速查表 下面罗列了各种数据库使用JDBC连接的方式,可以作为一个手册使用. 1.Oracle8/8i/9i数据库(thin模式) Class.forName