JAVA 访问MySQL数据库(使用方法及测试)

Posted magic__Coder

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA 访问MySQL数据库(使用方法及测试)相关的知识,希望对你有一定的参考价值。

最近我们的JAVA课程讲到数据库,老师一直强调搭建数据库环境(JDBC)的重要性,刚好我的电脑前段时间重装过,也可以趁着这个机会再来回顾一遍JDBC的搭建。

说明:本文使用的JDBC框架是基于JAVA SE 1.8 & mysql & Eclipse

工具下载:

MySQL V5.5(x64) 64位
MySQL V5.5(x86) 32位
要根据你电脑的情况选择相应的MySQL版本。我的电脑是64位,所以本篇文章是使用64位讲解的,如果有同学在使用32位版本的时候出现问题的可以随时联系我。

JDBC驱动(MySQL)

MySql 可视化工具 Front

一.安装配置MySQL

1.首先打开运行mysql-5.5.29-winx64.msi(就是上面的MySQL V5.5),你会进入到安装界面:

2.接下来。。。next->next。。。一直点击next,当你看到这样的界面:

这个是选择MySQL的安装目录。我的习惯是开发工具一般都选择默认的路径。当然你想使用其他路径也行,不过还是要提醒一点,路径不要包含中文
继续next。

这个是MySQL服务的端口号,我们最好不要修改,不过要记住这个值3306
然后next。。。欢迎你来到坑前!(我没让你踩呢,不急)

这个界面是设置我们MySQL系统的字符集。默认是让我们选择字符集”Latin1”,我就问你你知道这个是什么字符集吗。。。那你不要怪我孤陋寡闻,我第一次就是直接默认过去,最后发现,我的数据库不能使用中文!会出现乱码。然后也是折腾了好久才解决。

我们何不一开始就把问题解决呢对吧。这里我们选择第三项,然后选择字符集”gbk”,这个不用解释了吧。。。见下图:

继续next。看到设置管理员账号信息界面了吧:

选中第一个,然后输入密码(建议记性不好的同学使用密码”123456”。。。=。=)。设置好密码之后,你登陆MySQL的账号就是:
userName:root
password:***(你的密码)*

接下来嘛。。。等。。。wait。。。

不过相信我这个过程不会持续很久。Done:

3.接下来,检查下MySQL是否正确安装:
“我的电脑”->”管理”->”服务”。查看MySQL服务是否启动:

如果你发现你的MySQL尚未启动,可以在”运行”中使用”net start mysql”启动服务。然后在任务管理器中查看MySQL的运行状态:

二.使用MySQL数据库

我们已经成功安装好了MySQL数据库,那接下来就来热热身如何?
要使用MySQL数据库第一步当然是要进行身份验证,进入命令行界面,输入下面的指令(如果你使安装的时候使用的是默认的安装路径,一般是这个目录,如果使用了自定义目录就进入相应的目录就好了),进入MySQL安装目录下的bin文件夹(存放MySQL的开发工具):

cd C:\\Program Files\\MySQL\\MySQL Server 5.5\\bin

接下来进行身份验证,指令如下:

mysql -u你的用户名 -p你的密码

如果登陆成功,会看到如下这样的界面:

好了,现在可以使用MySQL数据库了。
接下来进行如下操作:

1.创建数据库TestJDBC:CREATE DATABASE TestJDBC;
2.使用TestJDBC数据库:USE TestJDBC;
3.创建UserInfo数据表(包含属性userName(char(10))、password(varchar(15))):CREATE TABLE UserInfo(userName char(10), password varchar(15));
4.插入数据:
INSERT INTO UserInfo VALUES('小炫', '111111');
INSERT INTO UserInfo VALUES('小铭杰JJ', '222222');
INSERT INTO UserInfo VALUES('小航', '333333');

不知道你有没有留意到我们的SQL语句都是以”;”结尾的,这显然不是SQL语法,我们在用DOS下操作MySQL时要求每一条语句后要带”;”。

操作过程如下(前方高能!!!)

CREATE DATABASE TestJDBC;

USE TestJDBC;

CREATE TABLE UserInfo(userName char(10), password varchar(15));

DESC UserInfo;  (查看表结构)

INSERT INTO UserInfo VALUES('小炫', '111111');
INSERT INTO UserInfo VALUES('小铭杰JJ', '222222');
INSERT INTO UserInfo VALUES('小航', '333333');

现在,我们创建了一个TestJDBC数据库,里面有一张数据表,里面包含三条数据:

SELECT * FROM UserInfo

三.使用JAVA连接、操作数据库

准备工作都搞定了,接下来进入正题啦。回到我们的老本行:使用JAVA操作数据库。
首先我们用一张图看清楚JDBC:

Java 数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC是面向关系型数据库的。简单地说,就是用于执行SQL语句的一类Java API,通过JDBC使得我们可以直接使用Java编程来对关系数据库进行操作。通过封装,可以使开发人员使用纯Java API完成SQL的执行。

我们现在对照下上图,至今我们所做的工作已经把最底层的数据库搭建好了,要在JAVA程序中使用数据库,还需要:
* JDBC驱动器
* JDBC API
* JAVA 程序(这个是废话吗 -.-|||)

开始的开始,我们先在eclipse下创建一个JAVA项目(这个。。。不需要截图了吧。。。)

JDBC驱动器

就是我们之前下载好的JDBC驱动(MySQL):mysql-connector-java-5.1.7-bin.jar。
其实这个是一个由MySQL数据库提供的用来给JAVA连接MySQL数据库的第三方库,我们只要把这个库导入到我们的工程中去就好了。
1.新建用户环境变量:

变量名:CLASSPATH
变量值:;目录:mysql-connector-java-5.1.7-bin.jar

我是把jar文件直接放在c盘下,你当然可以放在其他地方,但还是那句,不要放在路径含有中文字符的目录。

2.把jar导入JAVA工程:
“工程名”->”Build Path”->Configure Build Path

“Add Library”->选中jar文件

添加成功之后,你会在你的项目视图中看到这个jar:

JDBC API

关于JDBC API嘛。上课老师已经讲得很清楚了。我这里就随便复习下。
要使用JDBC,有几个重要的类需要知道:

//重要的类:
java.sql.Connection;        //数据库连接实例
java.sql.DriverManager;     //数据库驱动管理类,调用其静态方法getConnection并传入数据库的URL获得数据库连接实例
java.sql.Statement;         //操作数据库要用到的类,主要用于执行SQL语句
java.sql.ResultSet;         //数据库查询结果集

JAVA程序

下面以MySQL为例,简单讲解下JAVA程序操作数据库的方法。

使用JDBC的步骤如下:
说明:
***JAVA工程已导入JDBC驱动器(jar);
考虑到数据库安全,我把我数据库的登陆信息封装起来放到了Values.java下:*

Values.java:

public class Values
{
    public static String DRIVER_MYSQL = "com.mysql.jdbc.Driver";    //MySQL JDBC驱动字符串
    public static String URL = "jdbc:mysql://localhost:3306/数据库名?"
            + "user=用户名&password=密码&useUnicode=true&characterEncoding=UTF8";//数据库Url,用来标识要连接的数据库,其中数据库名、用户名、密码是根据你自己的数据库情况设定
}

1.在JAVA程序中加载JDBC驱动

Class.forName(Values.DRIVER_MYSQL);

2.创建数据库连接对象

Connection connection = DriverManager.getConnection(Values.URL);

3.创建Statement对象

Statement statement = connection.createStatement();

4.调用Statement对象相应的方法操作数据库

下面是我用于测试数据的Demo:
TestJDBC.java:

public class TestJDBC
{
    private Statement statement;

    public TestJDBC() {
        try
        {
            Class.forName(Values.DRIVER_MYSQL);     //加载JDBC驱动
            System.out.println("Driver Load Success.");

            Connection connection = DriverManager.getConnection(Values.URL);    //创建数据库连接对象
            statement = connection.createStatement();       //创建Statement对象
        } catch (Exception e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    /*
     * 根据sql查询数据库,返回一个结果集
     * 输    入:SQL语句
     * 返回值:ResultSet 查询结果
     */
    public ResultSet query(String sql) {
        ResultSet result = null;

        try
        {
            result = statement.executeQuery(sql);
        } catch (SQLException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return result;
    }

    /*
     * 打印UserInfo表的数据
     * 输    入:结果集(数据表)
     * 返回值:空
     */
    public void printUserInfo(ResultSet result) {
        try
        {
            while(result.next()) {
                System.out.println("userNname:" + result.getString(1) 
                        + ", password:" + result.getString(2));
            }
        } catch (SQLException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    /*
     * 执行数据操作
     * 输    入:SQL语句
     * 返回值:空
     */
    public void executeSql(String sql) {
        try
        {
            statement.execute(sql);
        } catch (SQLException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static void main(String[] args)
    {
        // TODO Auto-generated method stub

        String sql = "SELECT * FROM UserInfo";
        TestJDBC db = new TestJDBC();
        ResultSet result = db.query(sql);
        db.printUserInfo(result);
    }

}

看看上面我们做了什么,首先我们把操作JDBC的准备工作放在了构造方法中,一旦我们创建了TestJDBC对象,就获得了数据库连接和一个对应的Statement对象。然后是在类中定义了三个方法:
* ResultSet query(String sql)
* void executeSql(String sql)
* void printUserInfo(ResultSet result)

这几个方法都是封装了JDBC API之后用来操作数据库用的,具体的功能在代码上已经注释好。在主函数中,我们首先创建了一个TestJDBC对象,之后执行查询语句,获得UserInfo表的所有数据并打印出来。运行程序,得到下面的结果:

现在我们在主函数中加入插入数据的代码:

public static void main(String[] args)
    {
        // TODO Auto-generated method stub

        String sql = "SELECT * FROM UserInfo";
        TestJDBC db = new TestJDBC();
        db.executeSql("INSERT INTO UserInfo VALUES('小明', '666666')");   //插入一条数据
        ResultSet result = db.query(sql);
        db.printUserInfo(result);
    }

运行程序,得到下面的结果:

说明我们插入数据成功!

四.MySQL可视化工具MySQL-Front:使用图形界面操作MySQL

前面我们一直是在指令操作MySQL,对于单单的插入删除查询数据的操作还是可以接受的,但如果要我们使用指令来用T-SQL编写SQL程序。。。我的天!调试会死人的吧。所以我们还是要掌握下MySQL-Front的使用方法的,我确信你会更倾向于图形操作。
首先是安装MySQL-Front,这个就更简单了,直接下一步,下一步。。。

安装好之后运行MySQL-Front,要先进行一些配置,这里就不是可以随便改的了,这些配置要根据我们的MySQL数据库来配置,如果我们没有另外定义Host和端口号的话,你只要这样设置就好了:

数据库呢,就选择我们之前建好的数据库就好了,当然在里面你也可以新建数据库的。

打开,进入我们的MySQL数据库。打开”testjdbc”我们可以看到我们之前创建的数据库,

查看数据表的结构


查看数据表当前数据


现在我们来执行一条插入语句:

INSERT INTO UserInfo VALUES('小B', '555555')

点击运行,接下来再看下数据表数据:


新的数据已经插入到数据表(可能你不会一下子就看到新的数据,这个时候我们只要刷新一下。什么!还没看到!那肯定是你的SQL语句有错了。)

最后我们回到之前的JAVA Demo,运行程序,结果如下:

天啊!不知不觉就完成了JDBC的搭建和测试了!
YEAH!是不是很nice!

Demo下载地址:JdbcForMySQLDemo

以上是关于JAVA 访问MySQL数据库(使用方法及测试)的主要内容,如果未能解决你的问题,请参考以下文章

JAVA内存泄露分析及解决

性能测试三十六:内存溢出和JVM常见参数及JVM参数调优

linux下mysql开启远程访问权限及防火墙开放3306端口

正式环境数据迁移到测试环境及测试环境LAMP搭建

软件测试拓展及视频教程

kotlin + springboot整合mybatis操作mysql数据库及单元测试