JDBC

*概念:

  Java Database Connectivity Java数据库连接 Java语言操作数据库


*JDBC本质:

  其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包,我们可以使用这套接口编程,真正实行的代码是驱动jar包中的实现类。

 

*JDBC中的对象:
  1.DriverManager:
    *加载驱动
    *获取数据库连接:
      Connection con = DriverManager.getConnection(String url,String user ,String password);
      url:jdbc:mysql://ip地址(域名):端口号/数据库名称


  2.Connection:
    *获取执行sql对象
      Statement st = con.createStatement()
      PreparedStatement = con.preparedStatement(String sql)

    *管理事务:
      *开启事务: setAutoCommit(boolean autoCommit)

      *提交事务:commit()

      *回滚事务:rollback()


  3.Statement:

    *执行sql的对象
      st.excuteUpdate(String sql):执行DML(增删改)语句、DDL语句(create、alter、drop)
        返回值:影响的行数,可以通过影响的行数判断DML语句是否执行成功。
      ResultSet st.excuteQuery(String sql):执行DQL(select)语句


  4.ResultSet:
结果集对象,封装查询结果,判断当前行是否有数据,如果有数据返回true,否则返回false

    *next():游标向下移动一行
    *getXxx():获取数据
      Xxx代表数据类型
      *参数:
        int--->列的编号,从1开始 例如 getInt(1);
        String --->列的名称 例如 getInt(id);
    *注意:
      *使用步骤:
        1.游标向下移动一行
        2.判断是否有数据
        3.获取数据


  5.PreparedStatement:执行sql的对象(推荐使用该方法)
    sql注入问题:在拼接sql时,有一些sql 的特殊关键字参与字符串的拼接。会造成安全性问题
      用户随便输入,输入密码:a' or 'a' = 'a
    解决sql注入问题:
使用PrepareStatement对象

    预编译的sql:参数使用?作为占位符
    使用setXxx()方法赋值。


*抽取JDBC工具类:JDBCUtils
  *目的:

    简化书写


  *分析:
    1.注册驱动
    2.抽取一个方法获取连接对象
    *需求:不想传参(麻烦),还得保证工具类的通用性
    *解决:配置文件
    3.抽取一个方法释放资源

*JDBC控制事务
  1.事务:参照Mysql基础与进阶篇事务内容


  2.操作:
    开启
    提交
    回滚


  3.使用Connection对象来管理对象
    *开启事务:setAutoCommit(boolean autoCommit):调用改方法设置参数为false,即为开启事务
    *在执行sql之前开启事务
    *提交事务:commit()
    *当所有事务都执行完提交事务
    *回滚事务:rollback()
    *在Catch中回滚事务

 

 

 

posted @ 2020-02-15 21:25  不是正经鱼  阅读(...)  评论(...编辑  收藏