zoukankan      html  css  js  c++  java
  • JDBC的使用

    三、使用JDBC的步骤

      加载JDBC驱动程序 → 建立数据库连接Connection → 创建执行SQL的语句Statement → 处理执行结果ResultSet → 释放资源

    1.注册驱动 (只做一次)

      方式一:Class.forName(“com.MySQL.jdbc.Driver”);
      推荐这种方式,不会对具体的驱动类产生依赖。
      方式二:DriverManager.registerDriver(com.mysql.jdbc.Driver);
      会造成DriverManager中产生两个一样的驱动,并会对具体的驱动类产生依赖。

    2.建立连接

     Connection conn = DriverManager.getConnection(url, user, password); 

      URL用于标识数据库的位置,通过URL地址告诉JDBC程序连接哪个数据库,URL的写法为:

      

      其他参数如:useUnicode=true&characterEncoding=utf8

    3.创建执行SQL语句的statement

    复制代码
    1 //Statement  
    2 String id = "5";
    3 String sql = "delete from table where id=" +  id;
    4 Statement st = conn.createStatement();  
    5 st.executeQuery(sql);  
    6 //存在sql注入的危险
    7 //如果用户传入的id为“5 or 1=1”,那么将删除表中的所有记录
    复制代码
    1  //PreparedStatement 有效的防止sql注入(SQL语句在程序运行前已经进行了预编译,当运行时动态地把参数传给PreprareStatement时,即使参数里有敏感字符如 or '1=1'也数据库会作为一个参数一个字段的属性值来处理而不会作为一个SQL指令)
    2 String sql = “insert into user (name,pwd) values(?,?)”;  
    3 PreparedStatement ps = conn.preparedStatement(sql);  
    4 ps.setString(1, “col_value”);  //占位符顺序从1开始
    5 ps.setString(2, “123456”); //也可以使用setObject
    6 ps.executeQuery(); 

    4.处理执行结果(ResultSet)

    1 ResultSet rs = ps.executeQuery();  
    2 While(rs.next()){  
    3     rs.getString(“col_name”);  
    4     rs.getInt(1);  
    5     //…
    6 }  

    5.释放资源

    复制代码
     //数据库连接(Connection)非常耗资源,尽量晚创建,尽量早的释放
    //都要加try catch 以防前面关闭出错,后面的就不执行了
    1 try { 2 if (rs != null) { 3 rs.close(); 4 } 5 } catch (SQLException e) { 6 e.printStackTrace(); 7 } finally { 8 try { 9 if (st != null) { 10 st.close(); 11 } 12 } catch (SQLException e) { 13 e.printStackTrace(); 14 } finally { 15 try { 16 if (conn != null) { 17 conn.close(); 18 } 19 } catch (SQLException e) { 20 e.printStackTrace(); 21 } 22 } 23 }
    复制代码
  • 相关阅读:
    delphi 时间格式操作
    Sleep函数的真正用意
    delphi公共函数 UMyPubFuncFroc--版权所有 (C) 2008 勇者工作室
    delphi override、overload、reintroduce的区别-0613.txt
    8、显示程序占用内存多少.txt
    可逆加密解密单元文件和调用方法
    Delphi7 客户端调用WebService(天气预报)
    操作TAB文件和TStringGrid赋值;
    3、利用SuperObject 循环处理Json深层次的值
    4、delphi record数组复制
  • 原文地址:https://www.cnblogs.com/Y-mmeng/p/10686065.html
Copyright © 2011-2022 走看看