JDBC

JDBC

概念:

  Java数据库连接,Java语言操作数据库

jdbc的本质:是官方提供的一套操作所有关系型数据库的规则,即接口。让数据库去实现这套接口提供的tar包。我们可以使用这套接口(jdbc)编程,真正执行的代码是驱动tar包中的实现类。

快速入门:

*步骤:

    1、导入tar包

    2、注册驱动

    3、获取数据库连接对象Connection

    4、定义sql语句

    5、获取执行sql语句 的对象Statement

    6、执行sql语句 接收返回结果

    7、处理结果

    8、释放资源

JDBC各个类详解:

DriverManager:驱动管理对象

  功能:1、注册驱动:告诉程序该使用哪个数据库驱动jar

      代码一般写:Class.forName("com.mysql.jdbc.Driver");Driver里面有一个静态代码块封装的是DeiverManager的注册驱动的方法

     2、获取数据库连接:getConnection(url,user,password)

       参数:url:指定连接的路径

          user:用户名     password:密码

       url的格式:jdbc:mysql://IP地址(域名):端口号/数据库名  ,如果是本机ip和端口号可以省略

Connection:数据库连接对象

  功能:1、获取执行sql对象

        statement createStatement()

        perparedstatement perparedstatement(string sql)

     2、管理事务

        开启事务:setAutoCommit(boolean autoCommit)调用该方法开启事务为false,即开启事务

        提交事务:commit()

        回滚事务:rollback()

statement:执行sql的对象

  功能:

    执行sql语句:

      boolean excute(string sql)可以执行任意sql语句(了解)

      int excuteUpdate(string sql)可以执行DML(insert into,update,delete)和DDL(create,alter,drop)的语句

        返回值:int表示影响的行数,可以通过这个影响的行数判断DML是否执行成功,如果返回值>0,说明执行成功,反之,则失败。

      resultset excuteQuery(string sql)执行DQL(select)的语句,返回一个结果集

resultset:结果集对象,查询封装结果

  *next()游标向下移动了一位

  *getXxx(参数)获取数据

    *Xxx表示数据类型。如:getInt()  getString()

    参数:int string

      1、int表示列的编号从1开始,如getString(1);

      2、string()表示列名称,如getString(“id”);

    注意:使用步骤

        1、游标向下移动一行

        2、判断是否有数据

        3、获取数据

            while(rs.next()) {
                
//                int id = rs.getInt(1);
//                String name = rs.getString(2);
//                String sex = rs.getString(3);
                int id = rs.getInt("sid");
                String name = rs.getString("sname");
                String sex = rs.getString("sex");
                System.out.println(id+"...."+name+"....."+sex);
            }

preparedstatement:执行sql的对象

  1、sql注入问题:在拼接sql时有一些sql的特殊关键字参与字符串拼接,会造成安全性问题。

    如:用户随便输入密码 ‘a’ or ‘a’=a;会出现select * from user where uname='ss' and password =a or a= a;

  2、解决sql注入问题:使用preparedstatement对象来解决

    预编译的sql:参数使用?作用占位符

  3、步骤

      1、导入tar包

    2、注册驱动

    3、获取数据库连接对象Connection

    4、定义sql语句

      *注意:定义sql使用?作为占位符,如select * from user where uname  = ? and password = ?;

    5、获取执行sql语句 的对象perpardstatement     ,prepardstatement    Connection.Prepardstatement(string  sql)

    6、给?赋值

      *setXxx(参数1,参数2)xxx是数据类型

        *参数1表示第几个占位符,从1开始;参数2表示占位符的值

    7、执行sql语句 接收返回结果   ; 接收返回是不需要传参数  

    8、处理结果

    9、释放资源

  4、注意后期会使用prepardstatement来完成增删改查的操作,

      1、可以防止sql注入

      2、效率更高

jdbc空值事务的操作:

1、概念:一个包含多个步骤的业务操作,如果这个业务操作被事务管理,则多个步骤要不同时成功,要不同时失败。

2、操作:

  开启事务

  提交事务

  回滚事务

3、使用connection对象来管理事务:

  开启事务:setAutoCommit(参数一):开启事务的方法。

    参数一:boolean

    true(默认值):自动提交数据

    false:手动提交数据

  提交事务:commit()

  回滚事务:rollback()

原文地址:https://www.cnblogs.com/anlin981121/p/11369808.html