Java原生代码连接MySQL数据库

        本章我们介绍,

        如何用java原生代码实现连接MySQL数据库并实现基本的增,删,改,查操作。

        为了便于演示,首先我们使用Navicat Premium新建一个user表并添加如下数据:

Java原生代码连接MySQL数据库_第1张图片​​​​​​​

        我们需要导入连接MySQL所需要的jar包: jdbc驱动包

        jdbc驱动包有多个版本,请根据自己的项目需要选择适合的版本(点击跳转至官网下载):

        jdbc驱动包官网下载       

        根据自己的电脑对应的系统下载:

Java原生代码连接MySQL数据库_第2张图片

        以Mac为例,解压下载文件,找到下图中的圈红的jar包:   

      Java原生代码连接MySQL数据库_第3张图片

        即为连接MySQL所需的jdbc驱动包,接着在自己的项目中添加此驱动包

        添加完成后,我们来编写一个简单的查询操作:

package com.connect_mysql.example;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class DButil {
    public static void main(String[] args) {
        //声明Connection对象
        Connection con;//驱动程序名
        String driver = "com.mysql.jdbc.Driver";
        //URL指向要访问的数据库名--sixibiheye,(自行更改成自己的库名)
        String url = "jdbc:mysql://localhost:3306/sixibiheye";
        //MySQL配置时的用户名(自行更改成自己的用户名)
        String user = "everyone";
        //MySQL配置时的密码(自行更改成自己的密码)
        String password = "123456";
        //遍历查询结果集
        try {
            //加载驱动程序
            Class.forName(driver);
            //1.getConnection()方法,连接MySQL数据库!!
            con = DriverManager.getConnection(url,user,password);
            if(!con.isClosed())
                System.out.println("Succeeded connecting to the Database!");
            //2.创建statement类对象,用来执行SQL语句!!
            Statement statement = con.createStatement();
            //要执行的SQL语句
            String sql = "select username,sex from user;";
            //3.ResultSet类,用来存放获取的结果集!!
            ResultSet rs = statement.executeQuery(sql);
            System.out.println("-----------------");
            System.out.println("执行结果如下所示:");
            System.out.println("-----------------");
            System.out.println("姓名" + "\t" + "性别");
            System.out.println("-----------------");

            String name = null;
            String sex = null;
            while(rs.next()){
                //获取stuname这列数据
                name = rs.getString("username");
                //获取stuid这列数据
                sex = rs.getString("sex");

                //输出结果
                System.out.println(name + "\t" + sex);
            }
            rs.close();
            con.close();
        } catch(ClassNotFoundException e) {
            //数据库驱动类异常处理
            System.out.println("Sorry,can`t find the Driver!");
            e.printStackTrace();
        } catch(Exception e) {
            //数据库连接失败异常处理
            e.printStackTrace();
        }// TODO: handle exception
    }
}

        对于上面的查询操作,使用到的是Statement对象executeQuery(String sql)方法,其返回一个ResultSet对象(结果集),可以通过调用其getString("字段名")方法来获取数据,其next()方法表示指针指向下一行,如果有数据就返回true,此外还有first()指向第一行数据last()指向最后一行数据等等。

        运行之后,会得到如下结果:

Java原生代码连接MySQL数据库_第4张图片

        接着,我们来实现添加数据的操作: 

package com.connect_mysql.example;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class DButil {
    public static void main(String[] args) {
        //声明Connection对象
        Connection con;//驱动程序名
        String driver = "com.mysql.jdbc.Driver";
        //URL指向要访问的数据库名--sixibiheye,(自行更改成自己的库名)
        String url = "jdbc:mysql://localhost:3306/sixibiheye";
        //MySQL配置时的用户名(自行更改成自己的用户名)
        String user = "everyone";
        //MySQL配置时的密码(自行更改成自己的密码)
        String password = "123456";
        //遍历查询结果集
        try {
            //加载驱动程序
            Class.forName(driver);
            //1.getConnection()方法,连接MySQL数据库!!
            con = DriverManager.getConnection(url,user,password);
            if(!con.isClosed())
                System.out.println("Succeeded connecting to the Database!");
            //2.创建statement类对象,用来执行SQL语句!!
            Statement statement = con.createStatement();
            //要执行的SQL语句
            String sql = "insert into user(id,username,sex) values(5,'HaHa','boy');";

            //executeUpdate(String sql)的返回值是一个int,指受影响的行数。
            int number = statement.executeUpdate(sql);
            System.out.println("插入成功!受影响的行数:" + number);

            con.close();
        } catch(ClassNotFoundException e) {
            //数据库驱动类异常处理
            System.out.println("Sorry,can`t find the Driver!");
            e.printStackTrace();
        } catch(Exception e) {
            //数据库连接失败异常处理
            e.printStackTrace();
        }// TODO: handle exception

    }

}

        上述插入操作中,使用了Statement对象的executeUpdate(String sql)方法来执行插入操作。其返回值为一个int型数据,表示的是受影响的行数(即更新计数)

        运行之后,得到如下结果:

Java原生代码连接MySQL数据库_第5张图片

        在Navicat Premium里我们能看到新增的数据:

Java原生代码连接MySQL数据库_第6张图片

        对于删除更新操作,与上面的插入操作基本相同,就不具体演示了。小伙伴们可以自己动手试一试。

        最后,附上executeQuery(String sql),executeUpdate(String sql),execute(String sql)三者的区别:

        1. executeQuery(String sql):

                用于产生单个结果集的语句,典型的便是SELECT语句。这是执行SQL语句使用得最多的方法,主要用来执行SELECT语句。其返回的是一个ResultSet对象(结果集),可以通过调用其getString("字段名")方法来获取数据,调用其next()方法使指针指向下一行(如果有数据就返回true,调用其first()方法指向第一行数据last()方法指向最后一行数据

        2. executeUpdate(String sql):

                用于执行SQL语句中的DDL(数据定义语言)语句,比如INSERT UPDATE DETELE CREATE TABLE DROP TABLE等等,其返回值为一个int型数据,表示的是受影响的行数(即更新计数),对于CREATE TABLE DROP TABLE不影响行的操作,返回值总为0)。

        3. execute(String sql):

                如果说executeQuery返回的是单个结果集,则execute(String sql)将会产生多个结果集,但其返回值是一个boolean类型,如果执行后有结果集,返回true,否则返回false。可以通过getResultSet()方法来获得第一个结果集。如果要获得第二个结果集,需先调用getMoreResults()方法,再调用getResultSet()方法。如果已知某次执行返回两个更新计数,则应先调用getUpdateCount()方法,再依次调用getMoreResults()方法 , getResultSet()方法。

                对于不知道返回结果的语句,情况则更为复杂。因此,在大多的应用中,很少使用execute(String sql)方法

        尽管在实际的开发中,不会使用如此原生的方式来连接数据库,但了解最原始的连接方式,对理解许多框架连接MySQL的方式会很有帮助。

        最后喜欢的小伙伴们点个赞鼓励支持一下吧~

你可能感兴趣的:(Java进阶,mysql,数据库,java,jdbc,sql)