参考:
MySQL JDBC Driver 5.1.33 - Time Zone Issue
MySQL Connectors Java下载及使用
win10系统,mysql-installer-community-5.7.21.msi安装
环境
WIndows10+MySQL8.0+IDEA2017.3Enterprise
MySQL安装
这部分详细不多说,详细参考以上所列文章,需要注意的地方就是,在选择安装类型步骤时,如果不想安装其他组件,可以选择Custom
安装,这里安装其实可以勾选上Connector/J
也就是MySQL通过Java连接数据库的驱动,方便后面添加这个库;另外就是一定要记住自己安装时的密码!!!
所有步骤安装完成以后,可以看到如下目录
这时候点击MySQL 8.0 Command Line Client
则会进入命令行模式
这时候输入我们之前创建的密码
接下来就可以输入简单的SQL命令来使用数据库了,比如查询所有的数据库
创建IDEA项目
第一步在IDEA中新建工程
选择Java类型,设置ProjectSDK,接着输入工程名称和存放位置,即可生成一个Java项目
第二步 添加依赖jar包
点击File->Project Structure->Libraries
,再点击绿色的加号,在之前MySQL安装路径下可以找到mysql-connector-java-8.0.11
确定即可,这里如果默认安装路径的话就是在C:\Program Files (x86)\MySQL\Connector J 8.0
下
另外,如果之前在安装MySQL时候没有选择Connector\J
也可以到官网下载然后直接导入,结果是一样的。
成功导入以后就可以在工程的External Libraries
看到多出来的
通过JDBC连接数据库
在之前创建的项目src
文件夹下新建类Main
在类中实现连接数据库,代码如下:
/**
* 使用JDBC连接University数据库
*/
public static Connection getConnection() throws Exception{
Connection conn = null; // 创建一个connection
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/University?"
+ "user=YaboSun&password=root"
+ "&useUnicode=true&characterEncoding=UTF8"
+ "&useLegacyDatetimeCode=false&serverTimezone=UTC";
conn = DriverManager.getConnection(url);
} catch (ClassNotFoundException e) {
System.out.println("JDBC Driver not found");
e.printStackTrace();
} catch (SQLException e) {
System.out.println("SQL 执行错误");
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
功能测试
已经建立了一个连接,接下来就是测试以下是否连接成功,并实现数据库的增、删、查、改等简单操作
在主函数中实现对应功能进行测试,代码如下:
public static void main(String[] args) throws Exception{
String sql; // 用于后面对应不同的sql语句
Connection connection = getConnection(); // 获取一个connection
/**
* 创建一个statement
* Statement里面带有很多方法,比如executeUpdate可以实现插入,更新和删除
* executeQuery可以实现查询
*/
Statement statement = connection.createStatement();
sql = "create table Test(Tno char(11), Tname char(20), Tage int)";
int updateResult ; // 用于获取是否创建成功 如果不成功结果为-1
try {
updateResult = statement.executeUpdate(sql);
if (updateResult != -1) {
sql = "INSERT INTO Test VALUES ('20131002318', '本科', 19)";
updateResult = statement.executeUpdate(sql);
sql = "INSERT INTO Test VALUES ('1201721379', '硕士', 23)";
updateResult = statement.executeUpdate(sql);
sql = "SELECT * FROM Test";
ResultSet resultSet = statement.executeQuery(sql); // executeQuery会返回结果的集合,否则返回空值
while (resultSet.next()) {
String Tno = resultSet.getString("Tno");
String Tname = resultSet.getString("Tname");
int Tage = resultSet.getInt("Tage");
System.out.println(Tno + " " + Tname + " " + Tage);
}
}
} catch (SQLException e) {
System.out.println("Test表已经存在");
e.printStackTrace();
}
sql = "DROP TABLE Test";
updateResult = statement.executeUpdate(sql);
System.out.println("Test表已经删除");
connection.close();
}
得到正确结果
这只是简单的进行一些测试,代码的优化还需要很大改进,如有不正确之处,望能指出。