JDBC Java 连接 MySQL 数据库
MySQL 版本:Server version: 5.7.17-log MySQL Community Server (GPL)
用于测试的 MySQL 数据库:game
查看数据库中的表
mysql> SHOW TABLES;
+----------------+
| Tables_in_game |
+----------------+
| user |
+----------------+
1 row in set (0.00 sec)
查看表的定义
mysql> DESC user;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| id | int(8) | NO | PRI | NULL | auto_increment |
| username | varchar(16) | NO | | NULL | |
| password | varchar(16) | NO | | NULL | |
+----------+-------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
查看表中的数据
mysql> SELECT * FROM user;
+----+----------+----------+
| id | username | password |
+----+----------+----------+
| 1 | mk | 123 |
| 2 | seven | 456 |
+----+----------+----------+
2 rows in set (0.00 sec)
使用 Java 连接 MySQL 数据库,查询表中的数据。
Java 工程结构:

Demo.java 文件中的内容:
1 package com.mk;
2
3 import java.sql.Connection;
4 import java.sql.DriverManager;
5 import java.sql.PreparedStatement;
6 import java.sql.ResultSet;
7 import java.sql.SQLException;
8
9 public class Demo {
10
11 public static void main(String[] args) {
12 Connection connection = null;
13 PreparedStatement ps = null;
14 ResultSet rs = null;
15 try {
16 // 加载 MySQL JDBC 驱动类
17 Class.forName("com.mysql.jdbc.Driver");
18 // 建立连接(连接对象内部其实包含了Socket对象,是一个远程的连接,比较耗时!这是Connection对象管理的一个要点!)
19 // 真正开发中,为了提高效率,都会使用连接池来管理连接对象!
20 connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/game", "root", "123456");
21 // 查询语句
22 String sql = "SELECT * FROM user WHERE username=?"; // ? 占位符
23 // 使用 PreparedStatement,防止 SQL 注入
24 ps = connection.prepareStatement(sql);
25 // 设置占位符参数
26 ps.setString(1, "mk");
27 // 返回查询结果
28 rs = ps.executeQuery();
29 while (rs.next()) {
30 System.out.println("id: " + rs.getInt("id"));
31 System.out.println("username: " + rs.getString("username"));
32 System.out.println("password: " + rs.getString("password"));
33 }
34 } catch (ClassNotFoundException e) {
35 e.printStackTrace();
36 } catch (SQLException e) {
37 e.printStackTrace();
38 } finally {
39 if (rs != null) {
40 try {
41 rs.close();
42 } catch (SQLException e) {
43 e.printStackTrace();
44 }
45 }
46 if (ps != null) {
47 try {
48 ps.close();
49 } catch (SQLException e) {
50 e.printStackTrace();
51 }
52 }
53 if (connection != null) {
54 try {
55 connection.close();
56 } catch (SQLException e) {
57 e.printStackTrace();
58 }
59 }
60 }
61 }
62 }
查询结果通过控制台输出:
id: 1
username: mk
password: 123
相关参考:Java 从资源文件(.properties)中读取数据
改进一下上面的例子,将连接 MySQL 数据库的 url、user、password 等参数放置在一个资源文件中,通过 Java 程序读取资源文件,获取相关信息。这样可以提高程序的灵活性,如果 url、user、password 等参数发生变更,只需修改资源文件即可。
在 Java 工程目录 src 下,添加一个文件:db.properties

db.properties 文件中的内容:
mysqlDriver=com.mysql.jdbc.Driver
mysqlUrl=jdbc\:mysql\://localhost\:3306/game
mysqlUser=root
mysqlPassword=123456
修改 Demo.java 文件中的内容:
1 package com.mk;
2
3 import java.io.IOException;
4 import java.sql.Connection;
5 import java.sql.DriverManager;
6 import java.sql.PreparedStatement;
7 import java.sql.ResultSet;
8 import java.sql.SQLException;
9 import java.util.Properties;
10
11 public class Demo {
12 static Properties properties = null; // 用于读取和处理资源文件中的信息
13 static { // 类加载的时候被执行一次
14 properties = new Properties();
15 try {
16 properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties"));
17 // System.out.println(properties.getProperty("mysqlDriver")); // 根据提供的键找到值
18 // System.out.println(properties.getProperty("mysqlUrl"));
19 // System.out.println(properties.getProperty("mysqlUser"));
20 // System.out.println(properties.getProperty("mysqlPassword"));
21 } catch (IOException e) {
22 e.printStackTrace();
23 }
24 }
25
26 public static void main(String[] args) {
27 Connection connection = null;
28 PreparedStatement ps = null;
29 ResultSet rs = null;
30 try {
31 // 加载 MySQL JDBC 驱动类
32 Class.forName(properties.getProperty("mysqlDriver"));
33 // 建立连接(连接对象内部其实包含了Socket对象,是一个远程的连接,比较耗时!这是Connection对象管理的一个要点!)
34 // 真正开发中,为了提高效率,都会使用连接池来管理连接对象!
35 String mysqlUrl = properties.getProperty("mysqlUrl");
36 String mysqlUser = properties.getProperty("mysqlUser");
37 String mysqlPassword = properties.getProperty("mysqlPassword");
38 connection = DriverManager.getConnection(mysqlUrl, mysqlUser, mysqlPassword);
39 // 查询语句
40 String sql = "SELECT * FROM user WHERE username=?"; // ? 占位符
41 // 使用 PreparedStatement,防止 SQL 注入
42 ps = connection.prepareStatement(sql);
43 // 设置占位符参数
44 ps.setString(1, "mk");
45 // 返回查询结果
46 rs = ps.executeQuery();
47 while (rs.next()) {
48 System.out.println("id: " + rs.getInt("id"));
49 System.out.println("username: " + rs.getString("username"));
50 System.out.println("password: " + rs.getString("password"));
51 }
52 } catch (ClassNotFoundException e) {
53 e.printStackTrace();
54 } catch (SQLException e) {
55 e.printStackTrace();
56 } finally {
57 if (rs != null) {
58 try {
59 rs.close();
60 } catch (SQLException e) {
61 e.printStackTrace();
62 }
63 }
64 if (ps != null) {
65 try {
66 ps.close();
67 } catch (SQLException e) {
68 e.printStackTrace();
69 }
70 }
71 if (connection != null) {
72 try {
73 connection.close();
74 } catch (SQLException e) {
75 e.printStackTrace();
76 }
77 }
78 }
79 }
80 }
JDBC Java 连接 MySQL 数据库的更多相关文章
- java连接mysql数据库详细步骤解析
java连接mysql数据库详细步骤解析 第一步:下载一个JDBC驱动包,例如我用的是:mysql-connector-java-5.1.17-bin.jar 第二步:导入下载的J ...
- Ubuntu jsp平台使用JDBC来连接MySQL数据库
Ubuntu 7.04 搭建Ubuntu jsp平台开发环境MySQL+tomcat+apache+j2sdk1.6在所有安装开始前先在Terminal中输入 rpm -q -a查看是否安装过rpm ...
- Java连接MySQL数据库及简单操作代码
1.Java连接MySQL数据库 Java连接MySql需要下载JDBC驱动MySQL-connector-java-5.0.5.zip(举例,现有新版本).然后将其解压缩到任一目录.我是解压到D盘, ...
- 转载:Java连接MySQL 数据库的正确操作流程
转载网址:http://www.bitscn.com/pdb/mysql/201005/186551.html 以下的文章主要介绍的是Java连接MySQL 数据库(以MySQL数据库为例 ...
- Java连接MySQL数据库增删改查通用方法
版权声明:本文为博主原创文章,未经博主允许不得转载. Java连接MySQL数据库增删改查通用方法 运行环境:eclipse+MySQL 以前我们Java连接MySQL数据库都是一个数据库写一个类,类 ...
- Java进阶(二十五)Java连接mysql数据库(底层实现)
Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜 ...
- Java 连接 MySQL 数据库
最近想学习一下 Java 连接 MySQL 数据库,于是有了这样的一些问题&解决办法. 首先是解决 JDBC(Java Data Base Connectivity)驱动问题,因为默认安装的J ...
- java连接MySql数据库 zeroDateTimeBehavior
JAVA连接MySQL数据库,在操作值为0的timestamp类型时不能正确的处理,而是默认抛出一个异常, 就是所见的:java.sql.SQLException: Cannot convert va ...
- MySQL学习(一)——Java连接MySql数据库
MySQL学习(一)——Java连接MySql数据库 API详解: 获得语句执行 String sql = "Insert into category(cid, cname) values( ...
随机推荐
- Python 30道高频面试题及详细解答
开学啦,开学啦!周末坐地铁的时候看到很多同学推着行李箱,拎着大包小包的穿梭在人群中,哎新的一学期又开始啦,同时也意味着很多同学要准备毕业啦,尤其是准大四,准研三的同学. 今年的招聘行情并不乐观,小公司 ...
- laravel5Eloquent模型与数据表的创建
下面是有关管理员模型与表的创建 生成模型时同时生成数据库迁移文件 在生成的迁移文件中添加字段 运行命令行生成数据表 命令进行混合运用 生成工厂文件,数据填充文件 工厂模型代码 数据填充文件代码 数据填 ...
- 小花梨判连通 (bfs+思维+map统计数量)
如果两个集合存储颜色的情况相同,说明这两个在k个图中都是在一个集合的 学到的点:用map,将vector映射一个整数时,只有vector后面的邻接的数据都一样时,才认为两个vector一样 代码: # ...
- Vue中父组件使用子组件的emit事件,获取emit事件传出的值并添加父组件额外的参数进行操作
需求是这样的,需要输入这样一个列表的数据,可以手动添加行,每一行中客户编号跟客户姓名是自动关联的,就是说选取了客户姓名之后,客户编号是自动填充的,客户姓名是一个独立的组件,每一个下拉项都是一个大的对象 ...
- .NET CORE命令行
目录 0. 基础命令行 1. 基础命令 2. SDK命令 3. 使用命令行创建. net Core项目 shanzm-2020年9月7日 22:00:00 0. 基础命令行 D:默认路径跳转到D盘 c ...
- webservice的某些配置
ajax调用的时候配置 <system.webServer> <validation validateIntegratedModeConfiguration="false& ...
- python基础:用yagmail模块发邮件
一.yagmail模块安装 网上下载的yagmail模块安装以后,在使用过程中,如果附件有中文,会显示乱码. pip install yagmail-0.10.212-py2.py3-none-any ...
- Python爬虫学习第一记 (翻译小助手)
1 # Python爬虫学习第一记 8.24 (代码有点小,请放大看吧) 2 3 #实现有道翻译,模块一: $fanyi.py 4 5 import urllib.request 6 import u ...
- WinDbg排查CPU高的问题
一.概述 在Window服务器部署程序后,可能因为代码的不合理或者其他各种各样的问题,会导致CPU暴增,甚至达到100%等情况,严重危及到服务器的稳定以及系统稳定,但是一般来说对于已发布的程序,没法即 ...
- Java常见重构技巧 - 去除不必要的!=null判断空的5种方式,很少有人知道后两种
常见重构技巧 - 去除不必要的!= 项目中会存在大量判空代码,多么丑陋繁冗!如何避免这种情况?我们是否滥用了判空呢?@pdai 常见重构技巧 - 去除不必要的!= 场景一:null无意义之常规判断空 ...