如何快速理解JDBC

简单的理解JDBC用法

  • 大家好!
    • JDBC简介
    • 如何使用JDBC
    • JDBC完成增删改
    • JDBC完成查询语句
    • 总结

大家好!

这是我第一次写博客,其实之前也很想写一些东西,可是发现很多东西都不知道,在自学一段时间之后呢,发现有些Java的东西还是很好理解的。 我自己虽然也是一个小白,但是我明白那种自己敲代码的时候出错却找不到错误的感觉,所以我也想分享一下自己对JDBC的理解。嗯…大家觉得有点用的话点个赞呗!

JDBC简介

好了也不多说,先来介绍下JDBC吧!什么是JDBC?如果你的英文不错的话,其实很好理解,JDBC(Java DateBase Connectivity ),也就是java数据库连接。虽然我们现在正常的开发基本上用不到了,但是我们也是应该知道如何使用,至少在面试的时候我还是碰到过此类的问题。面试官问我JDBC实现的流程是什么?用JDBC实现一个查询语句?我当时就蒙了,其实我也不明白为什么面试要问那些东西(自我觉得用不到)…但是没办法,自己回去之后还不是继续学这个…好了好了…我好像又扯远了。

如何使用JDBC

JDBC的使用其实很简单,我把它大致分为了三大步:

  1. 第一步:加载驱动类
  2. 第二步:使用url,username,password 得到连接对象
  3. 第三步:使用DriverManger类中的getConnection得到Connection对象

说起来好像很简单的样子,其实真的很简单。这些方法对于初学者来说却是不容易记,下面我们来细分这三步
第一步:加载驱动类--------什么是驱动类?其实就是一个接口标准,跟大家讲个故事吧!事情是这样的,因为每个每个数据库的厂商都大不相同,而要记住每个厂商的加载驱动类的方式,其实不太现实(虽然现在网上一查一大把)。所以SUN公司召集了互联网的巨头,商量一个事,他说:“以后我来提供接口,你们按这个标准来实现,听见没?”。嗯…我夸大了,但是事情差不多是这样的。我得说说怎么加载驱动类了,首先,我用的是Eclipse连接的数据库,Oracle数据库不好用(要钱的,破解版的不想用)…
要加载驱动类,你得先导入一个jar包,用于连接数据库的,网上有很多,我用的是这个版本的。为什么用这个,我后面会说的。
在这里插入图片描述

导入jar包之后,就可以开始配置了,以后碰到加载驱动类,记住先把四大参数写出来:

  1. 第一:DriverClassName:com.mysql.jdbc.Driver 不要问我为什么是这个,这个是Mysql厂商规定的,是标准,其他数据库就不是这样的了。
  2. 第二:url: jdbc:mysql://localhost:3306/firstsql 也就是路径,细细的分析下,jdbc:mysql 这是标准,然后冒号//localhost:3306 是ip地址以及mysql的默认端口号,我连接的是本地数据库,所以是localhost(本地的意思)。最后也就是加上你的数据库名字,要连接哪个数据库就写哪个。在这里我多说一句,如果你用的是高版本的JDK以及高版本的jar包,一定要带上分区时间,如果不懂的话,可以自行百度看看。这是一个坑,我掉进去过,毕竟有些人就是喜欢用最新的东西。
  3. 第三:username :这个没什么好说的,就是你数据库的用户名,一般都是root…
  4. 第四:password:这也没什么说的,就是你数据库的密码,别问我,我也不知道你设置的什么。

嗯…四大参数就这么多,简单来说,第一个就是一个标准,每个数据库都不一样,这个不用纠结,第二个就是路径,把每一小步弄懂什么意思就行了,最后就是数据库的用户名和密码。如果理解四大参数,恭喜你,成功了一半了。接下来,我们就要加载驱动了,加载驱动直接运用反射机制就行了。下面是源代码:

import java.sql.Connection;
import java.sql.DriverManager;
public class Demo1 {
    public static void main(String[] args)  throws Exception{
        /* jdbc四大配置参数:
         * 1.driverClassName:  com.mysql.jdbc.Driver
         * 2.url:  jdbc:mysql://localhost:3306/firstsql    
         * 3.username: root
         * 4.password: 123
         * 使用JDBC步骤:
         * 1.加载驱动类
         * 2.使用url,username,password 得到连接对象
         * 3.使用DriverManger类中的getConnection得到Connection对象
         * */
        Class.forName("com.mysql.jdbc.Driver");//加载驱动
        String  url="jdbc:mysql://localhost:3306/firstsql";
        String username="root";
        String password="123";
        Connection co =  DriverManager.getConnection(url,username,password);
        System.out.println(co);   //结果为:com.mysql.jdbc.JDBC4Connection@5fcd892a
    }
}

看!如上代码,JDBC的使用就是这么简单,记好几大步骤就行,英语好的人应该理解快些,加载驱动之后你需要得到Connection对象,那么就用DriverManger的getConnection( )这个方法获取,DriverManger的中文意思就是驱动管理嘛!怎么样,是不是很简单。其实 Class.forName(“com.mysql.jdbc.Driver”) 这一行代码不写也可以运行,但是仅限于jdbc4.0之后。因为所有的java.sql.Driver实现类,都提供了static块,块内的代码就是把自己注册到DriverManger中!jdbc4.0之后,每个驱动jar包中,在META-INF/services目录下提供了一个名为java.sql.Driver的文件。
下面来看看怎么使用JDBC完成增删查改吧!

JDBC完成增删改

这里把增删改放在一起,因为差别不大。对比使用JDBC,多了一个用Connection对象获取Statement对象,具体的使用还是看看源代码吧!如果不懂我说的意思,可以看看注释,注释写的很清楚:

package www.jdbc.demo;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import org.junit.Test;
public class Demo2 {
       /*一:得到数据库:
        * 1.准备四大参数
        * 2.加载驱动类
        * 3.得到Connection对象
        *
              * 二:对数据库进行增删改
        * 1.通过Connection对象创建Statement
        *   ->Statement语句的发送器,它的功能就是向数据库发送sql语句!
        * 2.调用它的 int executeUpdate(String  sql),它可以发送DML,DDL,int返回值就是表示影响几行
        *
        * */
    @Test   
    public void test() throws Exception{
        String  DriverClassName="com.mysql.jdbc.Driver";
        /*这是一种jdbc的协议格式
         * jdbc:厂商名称:子协议(由厂商自己来规定)
                      * 对于mysql而言,子协议结构://主机:端口号/数据库名称
         * */
        //一:得到数据库
        String  url="jdbc:mysql://localhost:3306/firstsql";
        String username="root";
        String password="123";
        Class.forName(DriverClassName);
        Connection con =  DriverManager.getConnection(url,username,password);
        
        //对数据库进行增删改查
        Statement statement =  con.createStatement();  //通过Connection得到Statement对象
        //String sql="insert into stu  values('S006','zhaoliu','22','boy')";  //使用Statement对象发送sql增加语句
        //String sql="update stu set  name='huqi',age='20' where number='S006'" ;//修改语句
        String sql="delete from stu where  number='S006'";
        int n = statement.executeUpdate(sql);
        System.out.println(n);  
       }
}

这样的话就完成了增删改的操作了,返回的只是影响的行数,增加和修改的sql语句我都注释掉了,所以我估计直接粘贴复制的话应该是错的,所以要注意哦!

JDBC完成查询语句

还是那句话,要使用JDBC,就必须准备四大参数,前面的步骤不变:

  1. 第一步:加载驱动类
  2. 第二步:使用url,username,password 得到连接对象
  3. 第三步:使用DriverManger类中的getConnection得到Connection对象
  4. 第四步:用Connection对象得到Statement对象
  5. 第五步:用Statement执行查询select语句,得到结果集ResultSet对象
  6. 第六步:解析结果集ResultSet对象

看起来复杂吗?多了两个步骤,是因为我分得比较细而已,实际上每个步骤也就一行代码。还是那句话,先搞清楚单词的意思,Statement有 报表的意思,那么就是用Connection对象获取报表对象,然后就可以用报表对象来发送sql查询语句了,得到的结果呢,是一张表,所以才要解析成数据嘛!如果我没写清楚,可以去看看java帮助文档,建议去看英文版的,多看看没坏处。下面来看看源代码:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import org.junit.Test;
    @Test
    public void test2() throws Exception{
        /*
         * 一:得到Connection对象
         * 二:得到Statement对象,发送select语句
         * 三:对查询返回的“表格”进行解析
         * */
        String  DriverClass="com.mysql.jdbc.Driver";
        String  url="jdbc:mysql://localhost:3306/firstsql";
        String user="root";
        String password="123";
        Class.forName(DriverClass);
        Connection con =  DriverManager.getConnection(url,user,password);
        Statement state = con.createStatement();
        /*
         * 调用Statement的ResultSet  rs=executeQuery(String querysql) 获得结果集
         * */
        ResultSet rs =  state.executeQuery("select * from stu");
        
        /*
         * 解析ResultSet
         * 1.把行光标移动到第一行,可以调用next()方法完成
         * */
        while (rs.next()) {  //把光标向下移动一行,并判断下一行是否存在!
            String number=rs.getString(1); //通过列标号来获取该列的值
            String name=rs.getString("name");  //通过列名来获取该列的值
            int age=rs.getInt(3);
            String sex=rs.getString("sex");
            System.out.println("编号:"+number+"、姓名:"+name+"、年龄:"+age+"、性别:"+sex);
            System.out.println("-------------------------------------------------------");
        }
       /*最后记得关闭资源(倒关)
        * rs.close();
        * state.close();
        * con.close(); 这个东西必须要关闭,不关就死!
        * */
    }

输出结果集的方式还有一种,那种情况就是你不知道有几列,如下:

        int  count=rs.getMetaData().getColumnCount();  //获取结果集列的数量
        while(rs.next()) {   //遍历行
            for(int x=1;x<=count;x++)  //遍历列
            {
                System.out.print(rs.getString(x));
                if(x<count)
                    System.out.print(", ");
            }
            System.out.println();
        }

这样就可以使用JDBC完成对数据库的增删查改啦!怎么样,是不是很简单,对于初学者来说,至少对于我来说,刚开始是因为方法名字记不住,其实你只需要把它翻译成中文理解就可以了。好了,第一次写博客就写这么多吧!下次我们在来谈谈PreparedStatement吧!最后来总结一下吧!

总结

一、使用JDBC:
jdbc四大配置参数:

  1. driverClassName: com.mysql.jdbc.Driver

  2. url: jdbc:mysql://localhost:3306/你数据库的名字

  3. username: 你数据库的名字

  4. password: 你数据库的密码

      使用JDBC步骤:
     1.加载驱动类
     2.使用url,username,password 得到连接对象
     3.使用DriverManger类中的getConnection得到Connection对象
    

二、使用JDBC完成增删改:
第一步:得到数据库:

  1. 准备四大参数

  2. 加载驱动类

  3. 得到Connection对象

第二步:对数据库进行增删改

  1. 通过Connection对象创建Statement
    ->Statement语句的发送器,它的功能就是向数据库发送sql语句!

  2. 调用它的 int executeUpdate(String sql),它可以发送DML,DDL,int返回值就是表示影响几行

三、使用JDBC完成查询(前面说的比较清楚,就偷个懒…):

  1. 得到Connection对象

  2. 得到Statement对象,发送select语句

  3. 对查询返回的“表格”进行解析

好啦!就到这里了,小白的第一次博客,可能有地方有错误或者没讲清楚,发现的大佬请指出…如果还有不懂得地方,可以私信或者留言,知无不言,言无不尽…

如何快速理解JDBC_第1张图片

虽然不是什么好东西,毕竟是自己一个字一个字敲出来的,1


  1. 没有经过同意别转载哦 ↩︎

你可能感兴趣的:(JDBC,java,jdbc)