Java连接本地MySQL数据库

准备工具

1、MySQL(V8.0.20)

2、JDBC驱动(V8.0.19)

3、IDEA

创建数据库和数据表

1、在MySQL中创建一个名为“test”的测试数据库,SQL语句如下:

CREATE DATABASE `test` CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

2、在test数据表中创建一个名为“t_user”的数据表,表中有以下四个字段:
uidunameusexuage,分别表示为序号、姓名、性别和年龄,SQL语句如下:

CREATE TABLE `t_user` (
  `uid` int NOT NULL,
  `uname` varchar(20) COLLATE utf8mb4_general_ci NOT NULL,
  `usex` varchar(5) COLLATE utf8mb4_general_ci NOT NULL,
  `uage` int NOT NULL,
  PRIMARY KEY (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

3、数据库、数据表可以直接使用SQL语句直接创建,也可以使用客户端工具去创建。

创建项目

1、在IDEA中创建一个普通的java项目,在项目目录下创建一个一个名为“lib”的文件夹,在该文件夹下放置jdbc驱动的jar包。创建“connect包” — “mysql包”,在包内创建连接的测试类,项目结构如下图:

2、将lib文件夹下的jdbc驱动的jar包添加到项目的依赖中,操作如下视频:

3、前期准备工作完成后,现在开始编写代码测试连接数据库。需要注意的是,在此阶段需要用到java.sql包内的Connection接口DriverManager类,在导入时不要导入错了包。

相关代码如下:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 * 连接MySQL数据库
 *
 * @author 谈笑、
 * @dateTime 2020/10/6 14:44
 */
public class JdbcConnectTest {

	// 配置数据库连接信息

	// JDBC驱动类,可以不用手动加载。
	private static String driver = "com.mysql.cj.jdbc.Driver";

	// MySQL数据库连接地址,其中test是本次连接的数据库
	private static String url = "jdbc:mysql://localhost/test";

	// MySQL用户
	private static String user = "root";

	// 用户密码
	private static String password = "123456";


	public static void main(String[] args) throws ClassNotFoundException, SQLException {

		// 加载JDBC驱动
		Class.forName(JdbcConnectTest.driver);

		// 连接MySQL数据库,获取到数据库连接对象。
		Connection con = DriverManager.getConnection(JdbcConnectTest.url, JdbcConnectTest.user, JdbcConnectTest.password);

		// 输出连接对象信息
		System.out.println(con);

		// 断开连接,释放资源。
		con.close();

	}

}

4、当输出了数据库连接对象后,则表示此次连接数据库成功,结果如图:


增、删、改、查

上面只是简单的连接了数据库,现在开始对数据库中的数据表内的数据进行操作,这里我们就对之前创建的“test”数据库中的“t_user”数据表来进行操作。

此次操作需要使用java.sql包中的Connection接口DriverManager类PreparedStatement接口,这里暂不使用Statement接口

1、插入数据

SQL语句:INSERT INTO t_user (uid, uname, usex, uage) VALUES (?, ?, ?, ?)
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

/**
 * 插入数据
 *
 * @author 谈笑、
 * @dateTime 2020/10/6 15:54
 */
public class InsertData {

	// 配置数据库连接信息

	// JDBC驱动类,可以不用手动加载。
	private static String driver = "com.mysql.cj.jdbc.Driver";

	// MySQL数据库连接地址,其中test是本次连接的数据库
	private static String url = "jdbc:mysql://localhost/test";

	// MySQL用户
	private static String user = "root";

	// 用户密码
	private static String password = "123456";


	public static void main(String[] args) throws ClassNotFoundException, SQLException {

		// 加载JDBC驱动
		Class.forName(InsertData.driver);

		// 连接MySQL数据库,获取到数据库连接对象。
		Connection con = DriverManager.getConnection(InsertData.url, InsertData.user, InsertData.password);

		// 定义执行的SQL语句,具体值使用占位符占位。
		String sql = "INSERT INTO t_user (uid, uname, usex, uage) VALUES (?, ?, ?, ?)";

		// 预编译SQL语句
		PreparedStatement pre = con.prepareStatement(sql);

		// 设置每一个占位符的值
		pre.setInt(1, 1);
		pre.setString(2, "测试君");
		pre.setString(3, "女");
		pre.setInt(4, 20);

		// 执行SQL语句,获取到数据插入的结果。
		int result = pre.executeUpdate();

		System.out.println("数据插入结果:" + result);

		// 断开连接,释放资源,先使用的后关闭。
		pre.close();
		con.close();

	}

}


2、修改数据

SQL语句:UPDATE t_user SET uid = ?, uname = ?, usex = ?, uage = ? WHERE uid = ?
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

/**
 * 修改数据
 *
 * @author 谈笑、
 * @dateTime 2020/10/6 15:59
 */
public class UpdateData {

	// 配置数据库连接信息

	// JDBC驱动类,可以不用手动加载。
	private static String driver = "com.mysql.cj.jdbc.Driver";

	// MySQL数据库连接地址,其中test是本次连接的数据库
	private static String url = "jdbc:mysql://localhost/test";

	// MySQL用户
	private static String user = "root";

	// 用户密码
	private static String password = "123456";


	public static void main(String[] args) throws ClassNotFoundException, SQLException {

		// 加载JDBC驱动
		Class.forName(UpdateData.driver);

		// 连接MySQL数据库,获取到数据库连接对象。
		Connection con = DriverManager.getConnection(UpdateData.url, UpdateData.user, UpdateData.password);

		// 定义执行的SQL语句,具体值使用占位符占位。
		String sql = "UPDATE t_user SET uid = ?, uname = ?, usex = ?, uage = ? WHERE uid = ?";

		// 预编译SQL语句
		PreparedStatement pre = con.prepareStatement(sql);

		// 设置每一个占位符的值
		pre.setInt(1, 2);
		pre.setString(2, "开发君");
		pre.setString(3, "男");
		pre.setInt(4, 20);
		pre.setInt(5, 1);

		// 执行SQL语句,获取到数据插入的结果。
		int result = pre.executeUpdate();

		System.out.println("数据修改结果:" + result);

		// 断开连接,释放资源,先使用的后关闭。
		pre.close();
		con.close();

	}

}



3、删除数据

SQL语句:DELETE FROM t_user WHERE uid = ?
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

/**
 * 删除数据
 *
 * @author 谈笑、
 * @dateTime 2020/10/6 16:11
 */
public class DeleteData {

	// 配置数据库连接信息

	// JDBC驱动类,可以不用手动加载。
	private static String driver = "com.mysql.cj.jdbc.Driver";

	// MySQL数据库连接地址,其中test是本次连接的数据库
	private static String url = "jdbc:mysql://localhost/test";

	// MySQL用户
	private static String user = "root";

	// 用户密码
	private static String password = "123456";


	public static void main(String[] args) throws ClassNotFoundException, SQLException {

		// 加载JDBC驱动
		Class.forName(DeleteData.driver);

		// 连接MySQL数据库,获取到数据库连接对象。
		Connection con = DriverManager.getConnection(DeleteData.url, DeleteData.user, DeleteData.password);

		// 定义执行的SQL语句,具体值使用占位符占位。
		String sql = "DELETE FROM t_user WHERE uid = ?";

		// 预编译SQL语句
		PreparedStatement pre = con.prepareStatement(sql);

		// 设置每一个占位符的值
		pre.setInt(1, 1);

		// 执行SQL语句,获取到数据插入的结果。
		int result = pre.executeUpdate();

		System.out.println("数据删除结果:" + result);

		// 断开连接,释放资源,先使用的后关闭。
		pre.close();
		con.close();

	}

}



4、查询数据

查询数据需要用到ResultSet接口用来获取到查询数据的结果集

SQL语句:SELECT * FROM t_user WHERE uid = ?
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.ResultSet;
/**
 * 查询数据
 *
 * @author 谈笑、
 * @dateTime 2020/10/6 16:24
 */
public class SelectData {

	// 配置数据库连接信息

	// JDBC驱动类,可以不用手动加载。
	private static String driver = "com.mysql.cj.jdbc.Driver";

	// MySQL数据库连接地址,其中test是本次连接的数据库
	private static String url = "jdbc:mysql://localhost/test";

	// MySQL用户
	private static String user = "root";

	// 用户密码
	private static String password = "123456";


	public static void main(String[] args) throws ClassNotFoundException, SQLException {

		// 加载JDBC驱动
		Class.forName(SelectData.driver);

		// 连接MySQL数据库,获取到数据库连接对象。
		Connection con = DriverManager.getConnection(SelectData.url, SelectData.user, SelectData.password);

		// 定义执行的SQL语句,具体值使用占位符占位。
		String sql = "SELECT * FROM t_user WHERE uid = ?";

		// 预编译SQL语句
		PreparedStatement pre = con.prepareStatement(sql);

		// 设置每一个占位符的值
		pre.setInt(1, 1);

		// 执行SQL语句,获取到数据查询的结果。
		ResultSet res = pre.executeQuery();

		// 输出结果集内的数据
		while (res.next()) {
			System.out.println(res.getInt("uid"));
			System.out.println(res.getString("uname"));
			System.out.println(res.getString("usex"));
			System.out.println(res.getInt("uage"));
		}

		// 断开连接,释放资源,先使用的后关闭。
		pre.close();
		con.close();
	}

}

注意事项

1、如果插入数据表中的数据是乱码,就需要在数据库连接地址后加上:
?useUnicode=true&characterEncoding=utf8,如果还是乱码的话,则需要检查数据库的编码去灵活应对。

相关文件

JDBC.zip

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇