夕辞

JAVA jdbc连接Mysql数据库 | 夕辞夕辞

JAVA jdbc连接Mysql数据库

学习JAVA最初,我们就需要学习JAVA如何连接数据库,除去后面Mybatis、Hibernate等框架的封装,最初要学习的是最简单的JDBC连接Mysql数据库的方法,在这里详细说明下。

首先,贴一下完整的代码,然后再详细解释:

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

public class JdbcTest {

    public static String URL = "jdbc:mysql://localhost:3306/work?autoReconnect=true&useUnicode=true&characterEncoding=utf-8";
    public static String USERNAME = "work";
    public static String PASSWORD = "work";
    public static String DEMO_SQL = "select name from work where id = 1";

    public static void main(String[] args) {
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
            statement = connection.createStatement();
            resultSet = statement.executeQuery(DEMO_SQL);
            while (resultSet.next()) {
                String name = resultSet.getString("name");
                System.out.println(name);
            }
        } catch (Exception e) {
            System.err.println(e);
        } finally {
            try {
                if (null != resultSet) {
                    resultSet.close();
                }
                if (null != statement) {
                    statement.close();
                }
                if (null != connection) {
                    connection.close();
                }
            } catch (Exception e) {
                System.err.println(e);
            }
        }
    }
}

以上就是一个简单的连接Mysql数据库的例子。

然后贴一下本地Mysql相关信息:

用户名:work

密码:work

数据库实例:work

数据库表名:work(包含ID和NAME两个字段,只有一个ID=1的数据)

 

接下来我们讲解下,最上面是一些静态字符串的定义,下面就直接饮用,所以我们直接从main函数开始。

第一步:加载驱动类,因为我们连接的是Mysql数据库,所以要加载Mysql相关的驱动类:

Class.forName("com.mysql.jdbc.Driver");

在这里我们需要引用相关jar包的,如果是直接饮用jar包,可以下载mysql-connector-java-**.jar相关版本,这个网上都可以搜索得到。
如果是maven项目,可以通过增加以下xml引入:

<dependency>
 <groupId>mysql</groupId>
 <artifactId>mysql-connector-java</artifactId>
 <version>5.1.37</version>
</dependency>

第二步:获取连接,在对数据库执行操作之前,需要获取对数据库的连接:

connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);

在这里有三个参数,url、user、password,user和password就不多说了,分别说要操作数据库的用户名和密码,下面对url讲解下。
例如上面的url:[jdbc:mysql://localhost:3306/work?autoReconnect=true&useUnicode=true&characterEncoding=utf-8],这个url包含多个信息。

[jdbc:]:就是Java Data Base Connectivity的意思;
[mysql:]:指我们连接的数据库类型,如果是oracle数据库,就是oracle了;
[//]:系统预留分隔符,代表后面就是连接的具体信息;
[localhost:]:数据库IP地址,因为我是本地,所以就是localhost或者127.0.0.1,可以为IP或者域名;
[3306]:数据库监听端口,一般默认mysql安装后是3306,也可通过修改my.cnf修改端口号;
[work]:数据库实例,一个用户下面可能有多个数据库实例,这里要填写你需要连接的数据库实例名;
[?]:默认分隔符,代表后面是对数据库的附加参数,比如以上例子代表自动连接,而且用unicode编码,编码方式为UTF-8

到这里如果信息填写正确且数据库正常,我们就拿到了数据库的连接了。

 

第三步:获取执行SQL语句对象,也就是Statement:

statement = connection.createStatement();

Statement的意思是:一个执行静态SQL语句然后返回执行结果的对象。

 

第四步:执行SQL,获取返回结果:

resultSet = statement.executeQuery(DEMO_SQL);

这里可能注意到了,我用的是executeQuery方法,返回的是ResultSet对象,其实不止这一个方法,还有execute()、executeUpdate()等方法。
除了executeQuery是需要查询数据之外,其他方法都是对数据库的更新,所以返回boolean或者int,boolean代表执行是否成功,int返回该条SQL在数据库中影响的行数。
因为我们要查询数据库中某个字段的值,所以我们用executeQuery,执行后我们就拿到我们的ResultSet对象了。

 

第五步:解析ResultSet数据,获取Name值:

resultSet = statement.executeQuery(DEMO_SQL);
while (resultSet.next()) {
    String name = resultSet.getString("name");
    System.out.println(name);
}

resultSet.next()代表遍历查询的结果,JAVA原本解释是将指针从当前的位置向后移动一行,也即是我们的遍历。
然后方法内我们可以调用result.getString(这了是列名)获取name的值,这是是列名name,我们也可以传入1,代表字段索引值。
假如我们查询了3个字段,那1、2、3分别代表我们查询的3个字段在当前行的结果。最后我们就打印出来name的值。

第六步:关闭相关对象连接。
JAVA对于最终必须执行的代码,最好放到finally代码块里,不管try里面的代码是否执行成功,都要释放资源或者做一些回收工作。

最后贴出我们的执行结果:

以上就是一个简单的连接数据库并且查询数据的例子了,如果有其他不懂的,欢迎留言探讨。

回到顶部