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爬取B站视频弹幕分析并制作词云
1.分析网页 视频地址: www.bilibili.com/video/BV19E… 本身博主同时也是一名up主,虽然已经断更好久了,但是不妨碍我爬取弹幕信息来分析呀. 这次我选取的是自己 唯一的爆款 ...
- vue学习笔记一
vue 颠覆式的开发方式 解疑 为什么要学习vue? 降低项目的复杂度 就业需要 vue难不难? 特别简单 相比于React,vue有什么优势? 前端三大框架:Angular.React.Vue Vu ...
- [BUUOJ记录] [BSidesCF 2020]Had a bad day
主要考察文件包含以及php://filter伪协议的一个小trick.题目很简单,但是因为不知道这个trick卡了很久,记录一下 进入题目看到有两个按钮,没有其他信息: 点击按钮显示出来一张图片,然后 ...
- day46:jQuery
目录 1.jQuery初识 2.选择器 3.文本操作 4.class类值操作 5.css样式操作 6.值操作 7.注意点:button按钮提交form表单数据 8.jquery选择器补充 9.模态对话 ...
- 小白也能弄懂的卷积神经网络(Convolutional Neural Networks )
本系列主要是讲解卷积神经网络 - Convolutional Neural Networks 的系列知识,本系列主要帮助大家入门,我相信这是所有入门深度学习的初学者都必须学习的知识,这里会用更加直接和 ...
- ZT:如果有来生,要做一棵树
出处:https://zhidao.baidu.com/question/393644025.html 原以为是三毛所作,想不到还有争议. 如果有来生,要做一棵树, 站成永恒.没有悲欢的姿势, 一半在 ...
- Zookeeper启动流程分析
前言 之前的Zookeeper协议篇-Paxos算法与ZAB协议通过了解Paoxs算法开始,到Zab协议的两大特性:崩溃恢复和消息广播,学习了Zookeeper是如何通过Zab协议实现高可用,本篇主要 ...
- 利用预编译解决C/C++重复定义的错误 -2020.09.13
利用预编译解决C/C++重复定义的错误 -2020.09.13 我们现在有main.c和function.h两个文件 main.c #include <stdio.h> #include ...
- react项目结合echarts,百度地图实现热力图
一.最近在一个react项目(antd pro)中需要展示一个热力地图.需求是: 1.热力地图可缩放: 2.鼠标点击可以展示该点地理坐标,及热力值. 3.初始化时候自适应展示所有的热力点. 4.展示热 ...
- spring boot 源码之SpringApplicationRunListeners
SpringApplicationRunListeners SpringApplicationRunListener的集合,内部存储了SpringApplicationRunListener的集合,提 ...