JDBC与MySql:手把手教你JDBC入门

       之前写了一堆MySql数据库的操作方法,都是在cmd命令下操作的。那么我们在cmd窗口下增删改查对于我们实际开发也没什么卵用~因为我们写出来的程序总不可能需要保存数据的时候就打开cmd窗口插入几条数据,需要读取数据的时候就在cmd窗口查询一下,然后把结果复制到我们所写的程序中吧~显然数据库不是这么用的。
    正确的使用方法是直接用程序跟数据库沟通,而笔者本身是android开发的,所以这里就用java演示,如何用java跟mysql数据库连接!
    而java跟数据库连接我们会用到java的一种技术---JDBC:
    JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用 Java语言 编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
    
  MySql的开发人员根据这种基准开发出 connectors,也叫作数据库驱动。
如下图,我们是写应用程序的,而我们需要使用数据库就要直接接触这种数据库的驱动,要熟悉学习这种数据库的驱动。
而数据库那么多种,常用的也不少~对于我们开发者来说学习成本太大!


那么有了jdbc这种基准,或者说规范。如何数据库如何与java程序沟通不再是我们思考的问题,如何与java程序沟通这个问题就转移到数据库开发商,他们针对java写好驱动供我们下载放到程序里就好。而我们要做的就是掌握jdbc。就这样,掌握jdbc+数据库对应的驱动=掌握任何支持jdbc数据库的连接。
如下图:



JDBC驱动:
上文所提到的驱动就是一个jar包,下载地址一般会在该数据库的官网,比如我们这里所说的MySql,那么mysql的驱动就在mysql的官网可以下载到。

为了方便大家,在本文末尾也会提供一个mysql的驱动。大家可以下载使用。


JDBC的使用:
笔者还是使用上篇博文演示过的数据库mydb中的emp表演示,其中的数据以及表的结构如下所示:

+----+------+---------+--------+
| id | name | dept_id | salary |
+----+------+---------+--------+
|  1 | 曹操 |       1 |   2000 |
|  2 | 荀彧 |       2 |   2000 |
|  4 | 郭嘉 |       4 |   2000 |
|  5 | 荀攸 |    NULL |   2000 |
+----+------+---------+--------+

建议:如果读者的mysql还没有数据,请先创建一个数据库,然后创建一个表,然后往里面插入若干条数据作为演示
如有需要可查看本博客的前几篇文章,创建数据库,创建表,插入数据,查询数据等都有记录的;


接下来开始jdbc的使用介绍:
首先创建一个java项目,然后创建一个带有main方法的类。
下载mysql的jdbc驱动jar包(mysql官网可以下载,本文末尾也有提供);
放到项目的lib文件夹里面,用myeclipse创建的项目一般都有lib文件夹,而使用eclipse创建的java项目可能没有lib文件夹,没有的话我们自己创建一个文件夹命名为lib就可以了。然后把下载到的驱动jar包放到lib文件夹里就可以了。

当然,就这么放进去还没可以,还有右击该jar包----Build Path----Add to Build Path;

接下来就要在main方法里面操作了:
public static void main(String[] args) {
        Connection conn = null;
        Statement state = null;
        ResultSet set = null;
        try {
            //注册数据库驱动
            DriverManager.registerDriver(new Driver());
            //获取数据库连接   
             conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "");
            //获取传输器对象
             state= conn.createStatement();
            //利用传输器对象执行sql语句
             set=state.executeQuery("select * from emp");
            while(set.next()){
                System.out.println(set.getString("name"));
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            try {
                set.close();
                state.close();
                conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
    }



其中 conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "");
接受三个参数,第一个参数为数据库链接地址,开头的"jdbc:mysql://"是固定的而后面的localhost:3306是数据库所在的地址以及端口,由于笔者的mysql数据库就在本机所以写上localhost,而mysql的端口默认就是3306.后面的mydb是数据库的名称。
第二个参数就是用户名,默认也是root
第三个参数就是密码,笔者的数据库没有密码,所以直接写个双引号上去。

 set=state.executeQuery("select * from emp");
可以看到executeQuery接受的参数是一句sql语句,笔者把查询emp全表的数据写上去,所查询的结果会保存到ResultSet 里面。
而在后面可以看到使用一个while循环把说查询的结果遍历出来了。
要说一下ResultSet 的遍历:
可以这么理解,ResultSet 有一根指针,一开始是指着表头,每调用一次ResultSet .next就会把这个指针往下移动一行,并且判断有没有数据,如果这一行有数据的话则返回true,否则返回false。
然后读者可以发现ResultSet 有很多方法,这里先介绍ResultSet .getString(”“);里面接受一个字段名,就是获取当前ResultSet 所指的行所对应的字段的数据。


最后需要关闭ResultSet ,Statement ,Connection 。及时释放资源。


我们试一下运行,可以看到运行结果是这样的:

而我们再看一下数据库里面的数据是怎样的:
+----+------+---------+--------+
| id | name | dept_id | salary |
+----+------+---------+--------+
|  1 | 曹操 |       1 |   2000 |
|  2 | 荀彧 |       2 |   2000 |
|  4 | 郭嘉 |       4 |   2000 |
|  5 | 荀攸 |    NULL |   2000 |
+----+------+---------+--------+


正是正确地遍历出数据库mydb里emp表的name字段的数据。

本文到此结束,下篇将为大家介绍更多与jdbc相关的知识。


  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值