动力节点笔记java
- import java.sql.*;
- //采用PreparedStatement根据条件查询
- public class QueryTest05 {
- public static void main(String[] args) {
- if (args.length == 0) {
- throw new IllegalArgumentException("参数非法,正确使用为: Java QueryTest05 + 参数");
- }
- Connection conn = null;
- PreparedStatement pstmt = null;
- ResultSet rs = null;
- try {
- //第一步,加载数据库驱动,不一样的数据库驱动程序不同
- Class.forName("oracle.jdbc.driver.OracleDriver");
- //第二部,获得数据库链接
- String dburl = "jdbc:oracle:thin:@localhost:1521:orcl";
- //String dburl = "jdbc:oracle:thin:@192.168.21.1:1521:orcl";
- //String dburl = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
- String userName = "system";
- String password = "wanwan";
- conn = DriverManager.getConnection(dburl, userName, password);
- //System.out.println(conn);
- //第三步,获得PreparedStatement,执行sql
- //采用PreparedStatement不建议采用拼串的方式
- //由于拼串每次的SQL语句不同,这样就没有利用PreparedStatement的优势
- //仍然每次都编译,和Statement没什么差异
- //String sql = "select * from tb_student where sex like '" + args[0] + "'";
- //pstmt = conn.prepareStatement(sql);
- //建议采用占位符的方式
- //这样每次SQL语句是同样的,数据库就不会再编译
- //这样就利用了PreparedStatement的优势,显著地提升性能
- //了解Statement和PreparedStatement的区别
- String sql = "select * from tb_student where sex like ?";
- pstmt = conn.prepareStatement(sql);
- //注意:此处不要加单引号
- pstmt.setString(1, args[0]);
- //第四部,取得结果集
- //将条件作为sql语句的一部分进行拼接
- //注意字符串必须采用单引号引发来
- rs = pstmt.executeQuery();
- //System.out.println("sql" + sql);
- while (rs.next()) {
- int id = rs.getInt("id");
- String name = rs.getString("name");
- System.out.println(id + " , " + name);
- }
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- } catch (SQLException e) {
- e.printStackTrace();
- } finally {
- //注意关闭原则:从里到外
- try {
- if (rs != null) {
- rs.close();
- }
- if (pstmt != null) {
- pstmt.close();
- }
- if (conn != null) {
- conn.close();
- }
- } catch(SQLException e) {
- }
- }
- }
- }