Oracle是一款功能强大的数据库管理系统,而JDBC则是Java程序与数据库进行通信的重要工具之一。JDBC连接Oracle数据库可以使用两种不同的方式:第一种是使用JDBC-ODBC桥,第二种是使用Oracle提供的JDBC驱动程序。
对于第一种方式,需要先在本地计算机上配置ODBC数据源,然后通过JDBC-ODBC桥程序将Java应用程序与Oracle数据库连接起来。
//JDBC-ODBC桥连接Oracle的示例代码 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection conn = DriverManager.getConnection( "jdbc:odbc:Driver={Microsoft ODBC for Oracle};Server=localhost;" + "Port=1521;Uid=myUsername;Pwd=myPassword;" );
然而,JDBC-ODBC桥已被Java官方声明为已经过时。目前,大多数开发者使用Oracle提供的JDBC驱动程序来连接Oracle数据库。
Oracle官方提供的JDBC驱动程序位于ojdbc6.jar和ojdbc7.jar中。据Oracle官方文档,建议尽可能使用最新的ojdbc版本。
//使用Oracle官方提供的JDBC驱动程序连接Oracle的示例代码 Class.forName("oracle.jdbc.driver.OracleDriver"); Connection conn = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:ORCL", "myUsername", "myPassword" );
在JDBC连接Oracle数据库时,还需要使用Java的PreparedStatement和ResultSet接口来执行SQL语句并获取查询结果。
//使用PreparedStatement执行参数化查询的示例代码 String sql = "SELECT NAME, AGE FROM PERSON WHERE ID = ?"; PreparedStatement stmt = conn.prepareStatement(sql); stmt.setInt(1, 123); //将第1个参数赋值为123 ResultSet rs = stmt.executeQuery(); //执行查询语句并返回结果集 while (rs.next()) { String name = rs.getString("NAME"); int age = rs.getInt("AGE"); System.out.println(name + "," + age); }
在以上代码中,PreparedStatement对象stmt中的问号(?)表示一个占位符,可在后面的代码中使用setXXX方法为其赋值。PreparedStatement的参数化查询可以有效防止SQL注入攻击。
通过以上方法,我们可以轻松连接Oracle数据库,并对其中的数据进行操作。当然,连接数据库是一项涉及到安全、稳定性等方面的重要工作,建议开发者在编写时谨慎操作。