前言:
写这篇文章是因为最近学校要求学了JDBC,但是书本上嘛...你们都知道的。书本上是以SQL Server为例子的,需要安装SQL Server并配置ODBC数据源。但是我个人因为以前学的是MySQL,而且毕竟MySQL安装起来要比SQL Server简单到不知道哪里去了,而且因为MySQL有原生Connector/J的支持,不需要再设定ODBC数据源,只需引入jar包即可直接调用驱动来连接MySQL,简化了很多的设置步骤。
所以这篇文章就是来简略的讲解怎样安装和配置MySQL和Eclipse/IntelliJ,此处讲解的方法可能不是最标准/最好的方法,但是足以实现简单地JDBC的开发和学习,以后如果有更好的方法我也会及时更新的。
一、安装/配置MySQL
1.未安装MySQL,假设你的电脑上从未安装过MySQL,或者已经完全卸载掉了MySQL,那么就按照接下来的教程来进行全新安装,若已安装,请跳至第2部分
首先去MySQL官网(https://www.mysql.com/ ),按照如下步骤下载Windows平台的安装包,有这个真是简化了好多复杂的安装步骤
首先打开是这样子的:
然后按下图点击:
然后你会跳转到另外一个页面,向下滚动直到图片所示的区域:
点击“Download”之后,又会跳转到一个新的页面,按下图点击:
然后你的浏览器应该开始了一个新的下载,这个下载的文件就是MySQL的安装包啦~
在你等待的时候可以去喝杯茶,养养生什么的......
OK,当下载完安装包之后,双击打开它,然后稍等一下,直到出现以下画面,然后就可以按图所示一路操作下去了:
这里有些需要说明的:
- Developer Default:开发默认配置,会安装MySQL Router、MySQL Shell等等一些比较高级的工具,但是这里我们主要是应付一些基础的Java数据库开发(其实就是应付学习需要...),所以不需要这么多复杂的组件
- Server Only:仅安装MySQL服务器,这个选项顾名思义只会安装MySQL服务器,但是要进行Java数据库开发的话我们还需要一个叫做Connector/J的组件,当然你可以后面通过MySQL Installer来进行配置
- Client Only:仅安装客户端,这个没什么好说的
- Full:完全安装,比第一条安装的项目还多
- Custom:自定义安装,也就是我们使用的选项,按需定制MySQL的组件
大致了解之后让我们继续进行下一步的安装:
然后按照自己的需求安装,最少的话安装这几个组件就够了,注意此处所选择的Connector/J的版本是8.0,选完后点“Next”:
我这里因为需求多勾选了几个,确认无误后点“Execute”
然后等MySQL安装完成,还是比较快的,出现下图界面就代表安装完成了:
全部安装完成后,继续按图示操作,没有图片展示的地方点"Next"就可以了:
这里说一下,如果你后面要开发网络相关的项目,例如一个网站什么的,那么你很有可能会用到一些集成好的环境例如Tomcat或者是WampServer,这些环境中一般都已经自带了MySQL,如果MySQL的默认端口不改变的话,那么到时候你就需要更改Tomca或是WampServer里自带的MySQL的端口号,这样的话不如现在改了后面比较省事。当然如果你没这方面需求那当我没说...
然后是设置Root账户的密码,一定要记好,后面连接MySQL服务器要用的
接下来的步骤点"Finish"和"Next",直到如下界面:
至此MySQL就安装完成了
2.已安装MySQL,如果你已经安装MySQL的话,请点击"开始"->"所有程序"(Windows10只需点开始)->"MySQL"->"MySQL Installer - Community"->"MySQL Installer - Community",Windows10系统会弹出UAC授权,点"是",然后会打开如下界面:
注意:此处每个人显示的东西可能是不一样的,因为本篇文章的主题是为JDBC开发而进行配置,所以此处需要注意这个窗口中有没有显示"Connector/J"的安装,如图所示,我已经安装了"Connector/J",而且安装的版本是8.0(这里很重要,请记住自己的版本,第四部分有说明)
那么如果你这里显示并未安装"Connector/J"该怎么办呢?别着急,点窗口右边的"Add...",然后就会打开这个界面:
按图操作过后,当出现如下界面时,代表"Connector/J"安装完成
至此MySQL相关的部分结束
二、Eclipse IDE的Connector/J配置
打开Eclipse,然后选中"窗口"->"首选项",打开设置窗口,然后按图选择:
此处注意,如果你没有改MySQL的安装路径,那么Connector/J的Jar包应该在C:\Program Files (x86)\MySQL\Connector J 8.0
里(末尾文件夹的名字跟你的Connector/J版本有关)
完成之后应该是下图这样的,然后点"应用并关闭"
然后就是将其应用到工程中了
此处分两种情况:
1.应用到已有工程:
之后点击"用户库",然后"下一步",勾选刚才创建的库,点击完成,出现下图界面代表完成了
2.应用到新建工程:
点击"文件"->"新建"->"Java项目",在打开的界面中输入"项目名",之后点"下一步",不要点完成,然后按图勾选:
然后点"完成"即可完成工程的创建
至此Eclipse的设定已经完成了,测试代码请跳转至"四、测试代码"部分
三、IntelliJ IDE的Connector/J配置
IntelliJ是一个我个人非常喜欢的IDE,不仅好用还好看,这里介绍一个比较懒人的方法,打开IntelliJ,进入任意一个工程,然后按下图设置:
如果你的设置没有出错的话,那么此时Connector/J的Jar包将会同步应用到你当前的所有工程和将来要新建的所有工程中,怎么样,是不是非常方便~
四、测试代码
此处就需要用到之前留意的Connector/J版本了,这个插件的5.1版本和8.0版本在JDBC里面所要加载的驱动名称是不一样的
测试环境:MySQL8.0.13,测试代码兼容Connector/J的5.1和8.0版本,默认运行在8.0版本,若使用Connector/J 5.1版本,请注意按照注释内容进行代码修改
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
public class javaMySQL {
private Connection con;
private Statement stmt;
private String dbName = "数据库名", userName = "数据库用户名", userPassword = "数据库密码";
javaMySQL() {
try {
//FIXME 注意此处选择适合自己版本的驱动加载语句,默认8.0!
//Connector/J 8.0 Version
Class.forName("com.mysql.cj.jdbc.Driver");
//Connector/J 5.1 Version
//Class.forName("com.mysql.jdbc.Driver");
/**
* getConnection返回一个Connection对象
* 并由该Connection创建Statement对象用于执行语句
*/
con = DriverManager.getConnection("jdbc:mysql://localhost:6000/" + dbName + "?user=" + userName + "&password=" + userPassword + "&serverTimezone=GMT%2B8");
stmt = con.createStatement();
/**
* 执行SQL语句
*/
stmt.executeUpdate("DROP TABLE IF EXISTS `tb_test`;");
stmt.executeUpdate("CREATE TABLE `tb_test` (`SN` VARCHAR(32) NOT NULL, PRIMARY KEY (`SN`));");
stmt.executeUpdate("INSERT INTO `tb_test` (`SN`) VALUES ('10001');");
ResultSet rs = stmt.executeQuery("SELECT * FROM db_test.tb_test;");
/**
* 输出查询结果
*/
while (rs.next()) {
System.out.println("SN: " + rs.getString("SN"));
}
/**
* 关闭Connection和Statement
*/
rs.close();
con.close();
stmt.close();
} catch (Exception e) {
System.out.println("Error: " + e);
}
}
public static void main(String[] args) {
javaMySQL sql = new javaMySQL();
}
}
修订记录:2018.12.17 删除.newInstance()方法,无需该方法也可运行
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。