(一)安装配置mysql
官网下载mysql-8.0.11-winx64.zip
解压到某个目录(例如E:\mysql-8.0.11-winx64)
添加环境变量 MYSQL_HOME,值为E:\mysql-8.0.11-winx64(需要替换成实际解压目录);修改环境变量PATH,在末尾添加%MYSQL_HOME%\bin;
打开cmd窗口,在E:\mysql-8.0.11-winx64\bin目录下执行以下命令,执行完毕后建立了E:\mysql-8.0.11-winx64\data目录
mysqld --initialize -insecure
在E:\mysql-8.0.11-winx64目录下新建配置文件my.ini
执行mysqld -install安装mysql服务
net start mysql 启动mysql服务
mysql -u root -p 回车不输入密码
修改root密码
alter user "root"@"localhost" identified by "123456";
退出再次登录
mysql -u root -p 需要输入密码
net stop mysql 停止mysql服务
(二)JDBC连接mysql实现增删改查
(1)使用eclipse新建一个java project,名为mysqlDmo,添加mysql-connector-java-8.0.11.jar包,如下图所示:
(2)利用JDBC来执行sql语句,有以下几步:
(a)加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
(b)连接数据库,利用DriverManager.getConnection获取Connection对象
String url = "jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC&useSSL=false";
String user = "root";String passwd = "123456";
DriverManager.getConnection(url, user, passwd);
需要注意的是如果url中没有serverTimezone=UTC参数,将会报错如下:
The server time zone value '???ú±ê×??±??' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
url中还可以设置一些参数如connecTimeout, characterEncoding等。
(c)获取Statement或者PreparedStatement实例
Statement sqlst = conn.createStatement();
(d)执行sql语句
ResultSet reset = sqlst.executeQuery("select * from tbl_stu");
while(reset.next()){
String id = reset.getString("id");
String name = reset.getString("name");
String department = reset.getString("department");
System.out.println("id:"+id+" "+"name: "+name+" "+"department: "+department);
}
(e)关闭数据库连接
conn.close();
(2)建立一个测试表
net start mysql;
mysql -u root -p 回车输入密码
create database test;
use test;
create table tbl_stu(
id int NOT NULL ,
name varchar(32) ,
department varchar(64) ,
PRIMARY KEY ( id )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into tbl_stu values(1001, "kevin", "computer");
insert into tbl_stu values(1002, "angela", "account");
(3)测试程序如下:
package com.mysql.dmo;
import java.sql.*;
public class MysqlTest {
public static void main(String[] args) {
Connection conn = null;
String url = "jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC&useSSL=false";
String user = "root";
String passwd = "123456";
//加载驱动
try{
Class.forName("com.mysql.cj.jdbc.Driver");
System.out.println("Successfully load com.mysql.cj.jdbc.Driver.");
}catch(ClassNotFoundException e){
e.printStackTrace();
}
//使用DriverManager.getConnection获取连接数据库的对象
try {
conn = DriverManager.getConnection(url, user, passwd);
System.out.println("database connected.");
} catch (SQLException e) {
e.printStackTrace();
}
try {
//获取Statement实例
Statement sqlst = conn.createStatement();
//执行数据库语句,获取ResultSet,测试查询
System.out.println("test query using Statement...");
ResultSet reset = sqlst.executeQuery("select * from tbl_stu");
while(reset.next()){
String id = reset.getString("id");
String name = reset.getString("name");
String department = reset.getString("department");
System.out.println("id:"+id+" "+"name: "+name+" "+"department: "+department);
}
//利用PreparedStatement测试增删改查
System.out.println("test insert, update and delete using prepareStatement...");
String sql=null;
PreparedStatement prest = null;
sql = "insert into tbl_stu values(?,?,?)";
prest = conn.prepareStatement(sql);
prest.setInt(1, 1003);
prest.setString(2, "juddy");
prest.setString(3, "science");
prest.executeUpdate();
sql = "update tbl_stu set name=? where id =1003";
prest = conn.prepareStatement(sql);
prest.setString(1, "grace");
prest.executeUpdate();
sql = "delete from tbl_stu where id =?";
prest = conn.prepareStatement(sql);
prest.setInt(1, 1001);
prest.executeUpdate();
sql = "select * from tbl_stu";
prest = conn.prepareStatement(sql);
reset = prest.executeQuery();
while(reset.next()){
String id = reset.getString("id");
String name = reset.getString("name");
String department = reset.getString("department");
System.out.println("id:"+id+" "+"name: "+name+" "+"department: "+department);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
//关闭数据库连接
try {
conn.close();
System.out.println("database disconnected.");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
执行结果如下: