java之jdbc_采用PreparedStatement根据条件查询

动力节点笔记java

 

  
  
  
  
  1. import java.sql.*;  
  2.  
  3. //采用PreparedStatement根据条件查询  
  4. public class QueryTest05 {  
  5.     public static void main(String[] args) {  
  6.         if (args.length == 0) {  
  7.             throw new IllegalArgumentException("参数非法,正确使用为: Java QueryTest05 + 参数");  
  8.         }  
  9.           
  10.         Connection conn = null;  
  11.         PreparedStatement pstmt = null;  
  12.         ResultSet rs = null;  
  13.         try {  
  14.             //第一步,加载数据库驱动,不一样的数据库驱动程序不同  
  15.             Class.forName("oracle.jdbc.driver.OracleDriver");  
  16.             //第二部,获得数据库链接  
  17.             String dburl = "jdbc:oracle:thin:@localhost:1521:orcl";  
  18.             //String dburl = "jdbc:oracle:thin:@192.168.21.1:1521:orcl";  
  19.             //String dburl = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";  
  20.             String userName = "system";  
  21.             String password = "wanwan";  
  22.             conn = DriverManager.getConnection(dburl, userName, password);  
  23.             //System.out.println(conn);  
  24.               
  25.             //第三步,获得PreparedStatement,执行sql  
  26.             //采用PreparedStatement不建议采用拼串的方式  
  27.             //由于拼串每次的SQL语句不同,这样就没有利用PreparedStatement的优势  
  28.             //仍然每次都编译,和Statement没什么差异  
  29.             //String sql = "select * from tb_student where sex like '" + args[0] + "'";  
  30.             //pstmt = conn.prepareStatement(sql);  
  31.               
  32.             //建议采用占位符的方式  
  33.             //这样每次SQL语句是同样的,数据库就不会再编译  
  34.             //这样就利用了PreparedStatement的优势,显著地提升性能  
  35.             //了解Statement和PreparedStatement的区别  
  36.             String sql = "select * from tb_student where sex like ?";  
  37.             pstmt = conn.prepareStatement(sql);  
  38.             //注意:此处不要加单引号  
  39.             pstmt.setString(1, args[0]);  
  40.             //第四部,取得结果集  
  41.             //将条件作为sql语句的一部分进行拼接  
  42.             //注意字符串必须采用单引号引发来  
  43.             rs = pstmt.executeQuery();  
  44.             //System.out.println("sql" + sql);  
  45.             while (rs.next()) {  
  46.                 int id = rs.getInt("id");  
  47.                 String name = rs.getString("name");  
  48.                 System.out.println(id + " , " + name);  
  49.             }   
  50.               
  51.               
  52.         } catch (ClassNotFoundException e) {  
  53.             e.printStackTrace();  
  54.         } catch (SQLException e) {  
  55.             e.printStackTrace();  
  56.         } finally {  
  57.             //注意关闭原则:从里到外  
  58.               
  59.               
  60.             try {  
  61.                 if (rs != null) {  
  62.                 rs.close();   
  63.                 }  
  64.                 if (pstmt != null) {  
  65.                     pstmt.close();    
  66.                 }  
  67.                 if (conn != null) {  
  68.                     conn.close();  
  69.                 }  
  70.             } catch(SQLException e) {  
  71.                           
  72.             }  
  73.               
  74.         }  
  75.     }     
  76. }  
相关文章
相关标签/搜索