码迷,mamicode.com
首页 > 数据库 > 详细

JDBC

时间:2017-12-03 00:37:44      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:ble   sql   time   bool   静态代码块   面向接口   new   res   creat   

一、JDBC(Java Data Base Connectivity,java数据库连接,面向接口)
 概念:  JDBC:是java提供给开发人员的一套操作数据库的接口
   数据库驱动:就是实现该接口的实现类(实现接口重写方法)
 
 二、JDBC连接数据库步骤:
  注册驱动: 
   【反射加入内存】Class.forName("com.mysql.jdbc.Driver");
   
  获得连接: 
   DriverManager.getConnection(String url,String user,String password)
    【url:数据库地址 jdbc:mysql://连接主机IP:端口号//数据名字】
   栗子:
    Sting url = "jdbc:mysql://localhost:3306/mybase";
    String userame="root";
    String password="123";
    Connection con = DriverManager.getConnection(url,userame,password);
    
  获得语句执行平台:
   Statement stmt = con.createStatement();
   
  执行sql语句:
  ? int executeUpdate(String sql); --执行insert update delete语句.
?   ResultSet executeQuery(String sql); --执行select语句.
   boolean execute(String sql); --执行select返回true 执行其他的语句返回false 
   
  处理结果:  
   ResultSet getInt("列名")/getString("列名")/getDouble("列名")...
   pst.executeQuery();执行查询/pst.executeUpdate();执行增删改
   
  释放资源:
   stat.close()/stmt.close()/con.close() 一堆close

public static void main(String[] args) throws Exception{
        Class.forName("com.mysql.jdbc.Driver");
        //获取连接
        String url = "jdbc:mysql://localhost:3306/mybase";
        String username = "root";
        String password = "123";
        java.sql.Connection con = DriverManager.getConnection(url, username,password);
        //编写sql语句
        String sql = "UPDATE sort SET sname=?,sprice=? WHERE sid=?";
        //获取执行平台
        PreparedStatement pst = con.prepareStatement(sql);
        //执行修改内容
        pst.setString(1, "汽车美容");
        pst.setObject(2, 48888);
        pst.setObject(3, 1);
        //执行程序
        pst.executeUpdate();
        //释放资源
        pst.close();
        con.close();
    }

 

三、 sql注入:
  注入攻击:SELECT * FROM 用户表 WHERE NAME = ‘XXX’ AND PASSWORD =’ XXX’  OR ’a’=’a’;
  防止注入攻击:将Statement改为PreparedStatement
   【PerparedStatement pst = con.prepareStatement(sql);】
   
 预处理对象:
  Preparement pst = con.prepareStatement(sql);
  
 
 四、封装JDBC工具类
  创建静态连接方法:返回Connection
  创建静态关闭方法:无返回

//JDBCUtils工具类代码
            public class JDBCUtils {
          //无参构造方法
private JDBCUtils(){}
          //定义静态私有的变量
private static Connection con ; //静态代码块连接数据库 static{ try{ Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/mybase"; String username="root"; String password="123"; con = DriverManager.getConnection(url, username, password); }catch(Exception ex){ throw new RuntimeException(ex+"数据库连接失败"); } } /* * 定义静态方法,返回数据库的连接对象 */ public static Connection getConnection(){ return con; } //关闭资源的静态方法,方便调用 public static void close(Connection con,Statement stat){ if(stat!=null){ try{ stat.close(); }catch(SQLException ex){} } if(con!=null){ try{ con.close(); }catch(SQLException ex){} } } //关闭资源的静态方法,方便调用 public static void close(Connection con,Statement stat , ResultSet rs){ if(rs!=null){ try{ rs.close(); }catch(SQLException ex){} } if(stat!=null){ try{ stat.close(); }catch(SQLException ex){} } if(con!=null){ try{ con.close(); }catch(SQLException ex){} } } } //测试JDBCUtils工具类的代码 public class TestJDBCUtils { public static void main(String[] args)throws Exception { Connection con = JDBCUtils.getConnection(); PreparedStatement pst = con.prepareStatement("SELECT sname FROM sort"); ResultSet rs = pst.executeQuery(); while(rs.next()){ System.out.println(rs.getString("sname")); } JDBCUtils.close(con, pst, rs); } }

 


   

JDBC

标签:ble   sql   time   bool   静态代码块   面向接口   new   res   creat   

原文地址:http://www.cnblogs.com/qiuqiu001/p/7956411.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!