JDBC连接mysql-8.0实现增删改查

(一)安装配置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
JDBC连接mysql-8.0实现增删改查_第1张图片

执行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包,如下图所示:

JDBC连接mysql-8.0实现增删改查_第2张图片

(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();
			}
		}
		
	}

}

执行结果如下:

JDBC连接mysql-8.0实现增删改查_第3张图片

你可能感兴趣的:(java,数据库)