• 【Java】利用JDBC访问MySQL数据库


    一、什么是JDBC?什么是数据库驱动(程序)?

    JDBC全称Java Database Connectivity,即Java数据库连接,它定义了Java语言访问各种数据库的统一标准(API)。这么说可能还是有些抽象。设想一种情况,假如没有JDBC,我们如何访问各种数据库呢?由于各个企业根据自身条件和需求,选择的数据库可能是多种多样的(MySQL、Oracle,SQL Server等),并且不幸的是,想要操作这些不同的数据库,我们势必要编写不同的数据库访问代码。显然这会带来很多的不便,例如更换底层数据库实现的操作会渗透到数据访问层的代码。

    在这个背景下,JDBC就推出了。JDBC是Sun公司制定的一套统一的数据库访问API。也就是不论你数据库如何选择、更换,我都可以用同一套API来访问,这就屏蔽了底层的数据库实现。然而,注意JDBC作为一个标准,它提供的仅仅是接口。它只会告诉你应该做什么,但是不会告诉你怎么做。

    那么数据访问层的差异化体现在哪里呢?那就是数据库驱动程序了。数据库驱动程序和数据库厂商提供的而不是Sun公司提供的。举个栗子,MySQL数据库,为了推广其产品,兼容到各种高级语言。那么我会根据Sun公司提供的JDBC标准,编写具体的实现,这个具体的实现就是数据库驱动程序了。当然为了兼容其他的语言,MySQL必须发布多款针对不同语言的数据库驱动程序。

    其实只要记得JDBC是Sun公司制定的,而数据库驱动程序是数据库厂商提供的就能明白其中关系了。接下来看看JDBC和数据库驱动程序在应用中的定位:

     容易知道,JDBC相当于抽象了一层,屏蔽了底层具体的数据库实现。

    二、一个简单的JDBC示例

    a.下载和安装MySQL数据库,这个网上有很多教程,按照那个来就行了。

    b.建立数据库和表。可以通过一些可视化工具或是命令行进行,同样参见自行百度。

    c.编写数据访问代码,注意我这里还没有引入MySQL数据库驱动程序的jar包。也就是我使用的是JDBC的标准API,都是依赖于抽象,还没有引入具体的实现。

    <span style="font-size:14px;">
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
     
    /**
     * Created by wwt on 2016/10/26.
     */
    public class JDBC {
     
        public static void main(String args[]){
     
            //1.加载数据库驱动
            try {
                Class.forName("com.mysql.jdbc.Driver");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
     
            try(
                //2.获取Connection对象
                Connection connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/你的数据库名","你的用户名","你的密码");
                //3.获取Statement对象
                Statement statement=connection.createStatement();
            ){
                //4.执行sql语句,自行根据需要编写
                ResultSet resultSet=statement.executeQuery("select * from students");
                //5.操作结果集
                while(resultSet.next()){
                    System.out.printf("%s,%s,%s,%s,%s
    ",
                                        resultSet.getInt(1), resultSet.getString(2), resultSet.getInt(3), resultSet.getString(4), resultSet.getString(5));
                }
            }catch(Exception e){
                e.printStackTrace();
            }
        }
     
    }</span>

    d.尝试运行,会发现跑不起来。这是因为你还没有引入MySQL的JDBC驱动程序。这时你利用反射是拿不到具体的类的。因此这一步我们要做的就是引入jar包。

    URL:http://www.mysql.com/products/connector/

     

    从这张图我们也可以看出,数据库驱动的确是数据库厂商根据不同语言的标准开发的。点击Download下载到本地解压。添加到项目中。

    e.重新运行,能够正常访问数据库。


    小结一下JDBC的使用流程:

    • 加载数据库驱动程序
    • 通过DriverManager获取Connection对象
    • 获取Statement对象
    • 执行SQL语句
    • 操作结果集ResultSet
    • 关闭资源,示例中采用了自动资源的try语句(ResultSet、Statement、Connection)

    转自:https://blog.csdn.net/sinat_34596644/article/details/52958734

  • 相关阅读:
    leetcode 673. 最长递增子序列的个数 java
    leetcode 148. 排序链表 java
    leetcode 98. 验证二叉搜索树 java
    leetcode 29. 两数相除 java
    leetcode 234. 回文链表 java
    Valid Palindrome LeetCode Java
    Single Number II LeetCode Java
    Single Number LeetCode java
    Search in Rotated Sorted Array II LeetCode Java
    Search in Rotated Sorted Array leetcode java
  • 原文地址:https://www.cnblogs.com/vickylinj/p/14555500.html
Copyright © 2020-2023  润新知