String dbdriver = "oracle.jdbc.driver.OracleDriver"; String dburl = "jdbc:oracle:thin:@localhost:1521:orcl"; String dbuser = "scott"; String dbpassword = "tiger"; try{ //加载驱动程序 Class.forName(dbdriver); //创建连接 Connection conn = DriverManager.getConnection(dburl,dbuser,dbpassword); //创建操作对象 Statement stmt = conn.createStatement(); //执行查询 ResultSet rs = stmt.executeQuery("SELECT * FROM employees"); //处理结果集 while(rs.next()){ System.out.println(rs.getString("employee_name")); } }catch(Exception e){ e.printstacktrace(); }以上代码首先指定了数据库驱动程序的名称、数据库的URL以及数据库连接的用户名和密码,然后使用Class.forName()方法加载驱动程序。接着,创建一个Connection对象来表示数据库连接,然后创建一个Statement对象用于执行SQL查询,并使用executeQuery()方法执行查询。最后,使用next()方法遍历结果集。 二、使用PreparedStatement 在前面的例子中,我们使用Statement对象执行SQL查询。使用Statement对象,SQL查询语句需要从Java代码中动态构造,这样会有sql注入的风险。为了避免这种风险,可以使用PreparedStatement对象。 PreparedStatement对象可以在创建时预编译sql语句,从而防止sql注入。以下是一个使用PreparedStatement对象执行查询的例子:
String dbdriver = "oracle.jdbc.driver.OracleDriver"; String dburl = "jdbc:oracle:thin:@localhost:1521:orcl"; String dbuser = "scott"; String dbpassword = "tiger"; try{ //加载驱动程序 Class.forName(dbdriver); //创建连接 Connection conn = DriverManager.getConnection (dburl,dbpassword); //创建操作对象 PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM employees WHERE salary > ?"); //设置参数 pstmt.setDouble(1,5000); //执行查询 ResultSet rs = pstmt.executeQuery(); //处理结果集 while(rs.next()){ System.out.println(rs.getString("employee_name")); } }catch(Exception e){ e.printstacktrace(); }以上代码将创建一个PreparedStatement对象,通过setXXX()方法设置参数,并使用executeQuery()方法执行查询。这样,在设置参数时,就可以避免sql注入的风险。如果参数设置不当,将会产生sql异常,这将有助于预防恶意攻击。 三、使用CallableStatement CallableStatement对象可以被用于调用数据库存储过程。以下是一个使用CallableStatement对象调用存储过程的例子:
String dbdriver = "oracle.jdbc.driver.OracleDriver"; String dburl = "jdbc:oracle:thin:@localhost:1521:orcl"; String dbuser = "scott"; String dbpassword = "tiger"; try{ //加载驱动程序 Class.forName(dbdriver); //创建连接 Connection conn = DriverManager.getConnection(dburl,dbpassword); //创建操作对象 CallableStatement cstmt = conn.prepareCall("{call get_employee_name(?,?)}"); //设置参数 cstmt.setInt(1,100); //注册输出参数 cstmt.registerOutParameter(2,Types.VARCHAR); //执行存储过程 cstmt.execute(); //获取输出参数 String employeeName = cstmt.getString(2); System.out.println(employeeName); }catch(Exception e){ e.printstacktrace(); }以上代码将创建一个CallableStatement对象,通过setXXX()方法设置输入参数和registerOutParameter()方法注册输出参数。然后,使用execute()方法执行存储过程。最后,使用getXXX()方法获取输出参数的值。 总结 本文介绍了Java调用Oracle数据库的方法。连接Oracle数据库,可以使用JDBC API,使用PreparedStatement对象可以有效地预防sql注入的风险,使用CallableStatement对象可以调用存储过程。当很多人学习Java时,Oracle数据库的使用都是必须学习的内容,同时,这些技术也可以应用于其他类型的数据库,这些基本概念和技术都是非常重要的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。