随笔小站

记录生活的点点滴滴

Java数据库编程学习记录(一)

今天去求职面试的时候,面试官有提到要求是首选Java和MySQL,如果对Oracle有了解会更好。之前只用过Python+MySQL做一些项目,自从学了Python后,Java的内容几乎要忘完了。于是决定以此为起点,熟悉Java的数据库编程。

准备阶段

  1. Java工作环境:Eclipse[1](懒得搞Intellij IDEA的专业版了,免费开源不香吗?)、JRE或者JDK;(新版本Eclipse的离线安装包自带JRE,直接就可以使用Java环境,当然JDK也可以下一个备用)

  2. 数据库:MySQL 8.0.33;(之前做项目老早就下好的,5.0也行,毕竟大多数企业的MySQL可能还保持在5.0版本)

  3. Java数据库连接驱动(JDBC):mysql-connector-j-8.1.0;(如果是MySQL5.0,那么JDBC就要下对应的5.0版本)

  4. (可选)一个可视化数据库管理工具:DataGrip或者Navicat,主要是创建表的时候容易看结果。

进行数据库连接配置

新建项目:

File->New->Java Project->输入项目名->Finish

注意:输入项目名后记得取消勾选module选项(Java 9 之后新增加的模块),不然写项目的时候会非常麻烦

导入驱动[2]

(我在按照 [3] 操作的时候把驱动放在了全局库当中,但是会出现无法识别JDBC的报错,所以使用的是以下步骤)

右键项目名->New->Folder->命名为lib->将驱动jar文件移动到lib上->右键驱动文件->Build Path->Add to Build Path

注意:MySQL的JDBC下好的文件是zip格式,解压后是一个文件夹,文件夹里面的jar后缀的文件才是我们需要的驱动(我觉得怎么看后缀名应该是每个开发者的基操吧,就没必要教了,网上一大堆)

在MySQL中创建数据库、表、填入示例数据(略):

我之前已经有一个现成的表格了,具体操作不多赘述,之后会另外写一篇文章来讲解。

使用Eclipse连接MySQL数据库并且读出其中一张表的数据[3]

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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class Demo {
// 数据库驱动
private static String dbdriver = "com.mysql.cj.jdbc.Driver";
// MySQL连接地址
private static String dburl = "jdbc:mysql://localhost:3306/myDatabaseName?&userSSL=false";
// 用户名
private static String username = "root";
// 密码
private static String password = "123456";
// 连接
private static Connection conn = null;

public static void main(String[] args) {
List<List<Object>> x = getData("pjs", "select * from pjc");
System.out.println("x = " + x);
}

/**
* 1. 获取数据库连接
*
* @param myProjName
* @return
*/
private static Connection getConn(String myProjName) {
Connection conn = null;
try {
Class.forName(dbdriver);
String myJdbcUrl = dburl.replace("myDatabaseName", myProjName);
conn = DriverManager.getConnection(myJdbcUrl, username, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}

/**
* 2. 关闭数据库连接
*
* @param rs
* @param ps
* @param conn
*/
private static void closeAll(ResultSet rs, PreparedStatement ps, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn == null)
return;
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

/**
* 3. 查表,返回行的列表, 每个列表中包含列的列表
*
* @param ProjName
* @param sql
* @return
*/
public static List<List<Object>> getData(String ProjName, String sql) {
Connection conn = getConn(ProjName);
PreparedStatement ps = null;
List<List<Object>> list = new ArrayList<List<Object>>();
ResultSet rs = null;
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
ResultSetMetaData md = rs.getMetaData();
int columCount = md.getColumnCount();
while (rs.next()) {
List<Object> lst = new ArrayList<Object>();
for (int i = 1; i < columCount; i++) {
lst.add(rs.getObject(i) == null ? " " : rs.getObject(i));
}
list.add(lst);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
closeAll(rs, ps, conn);
}
return list;
}
}

运行结果如下:

1
x = [[P001, J001], [P001, J002], [P002, J001], [P003, J002]]

至此,我们成功用Java连接到了MySQL数据库。

一些要点

(待补充)

结束

之后有时间再折腾IDEA来连接MySQL,个人还是喜欢JetBrain系列的自动补全代码,Eclipse配置起来太麻烦了(恼)。

参考网站

[1] Eclipse下载与安装

[2] 导入JDBC

[3] Eclipse连接MySQL数据库代码

-------------本文结束感谢您的阅读-------------