前言
本章我们介绍,如何用java实现连接MySQL数据库
并实现基本的增,删,改,查
操作。
为了便于演示,首先我们使用Navicat Premium
新建一个user表
并添加如下数据:

导入jdbc驱动包
我们需要导入连接MySQL
所需要的jar包: jdbc驱动包
。 jdbc驱动包
有多个版本,请根据自己的项目需要选择适合的版本(点击跳转至官网下载):jdbc驱动包官网下载 。
根据自己的电脑对应的系统下载:

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

即为连接MySQL
所需的jdbc驱动包
,接着在自己的项目中添加此驱动包。
查询操作
添加完成后,我们来编写一个简单的查询操作
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| 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 con; String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost:3306/sixibiheye"; String user = "everyone"; String password = "123456"; try { Class.forName(driver); con = DriverManager.getConnection(url,user,password); if(!con.isClosed()) System.out.println("Succeeded connecting to the Database!"); Statement statement = con.createStatement(); String sql = "select username,sex from user;"; 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()){ name = rs.getString("username"); 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(); } } }
|
对于上面的查询操作,使用到的是Statement对象
的executeQuery(String sql)
方法,其返回一个ResultSet对象
(结果集),可以通过调用其getString("字段名")
方法来获取数据,其next()
方法表示指针指向下一行,如果有数据就返回true
,此外还有first()指向第一行数据
,last()指向最后一行数据
等等方法。
运行之后,会得到如下结果:

添加操作
接着,我们来实现添加数据
的操作:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| 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 con; String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost:3306/sixibiheye"; String user = "everyone"; String password = "123456"; try { Class.forName(driver); con = DriverManager.getConnection(url,user,password); if(!con.isClosed()) System.out.println("Succeeded connecting to the Database!"); Statement statement = con.createStatement(); String sql = "insert into user(id,username,sex) values(5,'HaHa','boy');";
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(); }
}
}
|
上述插入操作中,使用了Statement对象
的executeUpdate(String sql)
方法来执行插入操作。其返回值为一个int
型数据,表示的是受影响的行数
(即更新计数)。
运行之后,得到如下结果:

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

对于删除
和更新
操作,与上面的插入操作基本相同,就不具体演示了。小伙伴们可以自己动手试一试。
executeQuery(String sql),executeUpdate(String sql),execute(String sql)
最后,附上executeQuery(String sql),executeUpdate(String sql),execute(String sql)三者的区别:
- executeQuery(String sql):
用于产生单个结果集的语句,典型的便是SELECT语句
。这是执行SQL语句
使用得最多的方法,主要用来执行SELECT语句
。其返回的是一个ResultSet对象
(结果集),可以通过调用其getString("字段名")
方法来获取数据,调用其next()
方法使指针指向下一行(如果有数据就返回true
),调用其first()
方法指向第一行数据,last()
方法指向最后一行数据。
- executeUpdate(String sql):
用于执行SQL语句
中的DDL
(数据定义语言)语句,比如INSERT , UPDATE , DETELE , CREATE TABLE , DROP TABLE
等等,其返回值为一个int
型数据,表示的是受影响的行数
(即更新计数),对于CREATE TABLE , DROP TABLE
等不影响行的操作,返回值总为0
)。
- execute(String sql):
如果说executeQuery
返回的是单个结果集,则execute(String sql)
将会产生多个结果集,但其返回值是一个boolean
类型,如果执行后有结果集,返回true
,否则返回false
。可以通过getResultSet()
方法来获得第一个结果集。如果要获得第二个结果集,需先调用getMoreResults()
方法,再调用getResultSet()方法。如果已知某次执行返回两个更新计数,则应先调用getUpdateCount()
方法,再依次调用getMoreResults()
方法 , getResultSet()
方法。
对于不知道返回结果的语句,情况则更为复杂。因此,在大多的应用中,很少使用execute(String sql)
方法。
尽管在实际的开发中,不会使用如此原生的方式来连接数据库,但了解最原始的连接方式,对理解许多框架连接MySQL
的方式会很有帮助。