JDBC Java 连接 MySQL 数据库
Posted satu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 数据库的主要内容,如果未能解决你的问题,请参考以下文章