今天去求职面试的时候,面试官有提到要求是首选Java和MySQL,如果对Oracle有了解会更好。之前只用过Python+MySQL做一些项目,自从学了Python后,Java的内容几乎要忘完了。于是决定以此为起点,熟悉Java的数据库编程。
准备阶段
Java工作环境:Eclipse[1](懒得搞Intellij IDEA的专业版了,免费开源不香吗?)、JRE或者JDK;(新版本Eclipse的离线安装包自带JRE,直接就可以使用Java环境,当然JDK也可以下一个备用)
数据库:MySQL 8.0.33;(之前做项目老早就下好的,5.0也行,毕竟大多数企业的MySQL可能还保持在5.0版本)
Java数据库连接驱动(JDBC):mysql-connector-j-8.1.0;(如果是MySQL5.0,那么JDBC就要下对应的5.0版本)
(可选)一个可视化数据库管理工具: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"; 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); }
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; }
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(); } }
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数据库代码