zoukankan      html  css  js  c++  java
  • 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()

  • 相关阅读:
    【HDOJ】1558 Segment set
    【HDOJ】2395 Alarm Clock
    【HDOJ】4278 Faulty Odomete
    【HDOJ】2571 命运
    【HDOJ】2150 Pipe
    【HDOJ】1277 全文检索
    【HDOJ】1134 Game of Connections
    【HDOJ】5131 Song Jiang's rank list
    【HDOJ】2772 Matchsticks
    【HDOJ】2577 How to Type
  • 原文地址:https://www.cnblogs.com/anlin981121/p/11369808.html
Copyright © 2011-2022 走看看