今日流程
SLQyog图形界面连接
首先,要连接本机上的Mysql数据库,这里我出现了一些意想不到的问题,在cmd界面中,我是没有设置密码的 -u root -p 之后按回车就ok了,然而在图形管理连接界面,不输入密码连接测试,发现无法匹配。故准备去修改一下密码,发现操作失误,登陆不进去数据库,心态炸裂。但问题还得解决,
准备直接强制进入数据库,重设密码,但在my.ini中设置skip-grant-tables的方法莫得用,在网络学习一番后,现是因为Mysql版本过高,方法不对。
在Mysql8.0版本中,应当先关闭数据库,然后使用:
mysqld --console --skip-grant-tables --shared-memory
再打开一个新的cmd,无密码登录MySQL,输入登录命令:
mysql -u root -p
无密码登录之后:
use mysql
update user set authentication_string=’’ where user=‘root’;
重启登陆之后,按照老办法设置密码
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘新密码’;
就ok了~
利用图形界面创建表单
这里没什么好记录的 也没什么问题
IDEA项目搭建
首先创建项目,然后导入mysql对应版本的jar包,我这里是mysql8.0.15
这里有两个坑爹的点:
Class.forName(“com.mysql.cj.jdbc.Driver”);
connection = DriverManager.getConnection(“jdbc:mysql://127.0.0.1:3306/user?useSSL=true&autoReconnect=true&failOverReadOnly=false&serverTimezone=UTC&characterEncoding=utf-8&user=root&password=root”);
(1)在配置DriverClass时,类不能再写成com.mysql.jdbc.Driver,应该写成com.mysql.cj.jdbc.Driver.
(2)最重要的是在数据库的url中要加入时区信息:serverTimezone=UTC。
之后,没发现什么问题,吃一堑长一智,我还是想头铁用8.X。
Util类的编写
import java.sql.*;
public class main {
public static void main(String[] args)throws ClassNotFoundException, SQLException {
ResultSet rs = null;
Connection connection = null;
PreparedStatement statement = null;
try {
//1.加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2.创建连接
connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/user?useSSL=true&autoReconnect=true&failOverReadOnly=false&serverTimezone=UTC&characterEncoding=utf-8&user=root&password=123456");
System.out.println("successful!");
//3.写sql
String sql = "select * from userinfo";
//4.得到statement对象执行sql
statement = connection.prepareStatement(sql);
//5.得到结果集
rs = statement.executeQuery();
//6.处理结果集
while (rs.next()) {
System.out.println(rs.getInt(1));
System.out.println(rs.getString(2));
System.out.println(rs.getString(3));
//7.关闭资源
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
这是一个简单的测试用例~
简单的JDBC操作
写在前面,老师讲的东西以前是学过的,虽然的确让我想起了尘封已久的java知识,但我觉得按整体系统的讲会好很多,上午走一步讲一点弄得我思路好乱,因为知识点没讲完,所以整个层次和结构不完整,很难受。所以我按照自己的思路先写了一下。
结果如下:
工具类
package util;
import java.sql.*;
public class DButil {
public static Connection getCon(){
Connection connection=null;
try{
//1.加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2.创建连接
connection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/user?useSSL=true&autoReconnect=true&failOverReadOnly=false&serverTimezone=UTC&characterEncoding=utf-8&user=root&password=123456");
}catch(Exception e){
}return connection;
}
public static void closeAll(ResultSet rs, PreparedStatement stmt,Connection conn ) {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (stmt != null) {
stmt.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if (rs != null) {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public static int update(String sql, Object... obArray){
Connection conn = DButil.getCon();
PreparedStatement stmt=null;
try {
stmt = conn.prepareStatement(sql);
for (int i = 0; i < obArray.length; i++) {
stmt.setObject(i+1,obArray[i]);
}
int result = stmt.executeUpdate();
return result;
} catch (SQLException e) {
e.printStackTrace();
}finally {
DButil.closeAll(null,stmt,conn);
}
// 如果代码执行到这个位置,那么肯定是出了异常
// 这个时候直接返回0;
return 0;
}
}
实体类
package bean;
public class Userinfo {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "Userinfo{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
public Userinfo() {
}
}
数据库操作类
package dao;
import bean.Userinfo;
import util.DButil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class UserinfoDao {
public static List<Userinfo> findAll(){
ResultSet rs = null;
Connection connection = null;
PreparedStatement statement = null;
List<Userinfo> list=new ArrayList<>();
//3.写sql
String sql = "select * from userinfo";
try {
connection=DButil.getCon();
//4.得到statement对象执行sql
statement = connection.prepareStatement(sql);
//5.得到结果集
rs = statement.executeQuery();
//6.处理结果集
while (rs.next()) {
Userinfo userinfo=new Userinfo();
userinfo.setId(rs.getInt(1));
userinfo.setUsername(rs.getString(2));
userinfo.setPassword(rs.getString(3));
list.add(userinfo);
//7.关闭资源
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DButil.closeAll(rs,statement,connection);
}
return list;
}
public static int insert(){
String sql="insert into userinfo(id,name,password)values(?,?,?)";
return DButil.update(sql,"5","JieGe","875");
}
public static int updateUser(){
String sql="update userinfo set name=? where name=? ";
return DButil.update(sql,"Lijiawei","AWei");
}
public static int deleteUser(){
String sql="delete from userinfo where name=?";
return DButil.update(sql,"JieGe") ;
}
}
算是复习了一下之前图书管理系统的知识,熟悉了一下IDEA的使用吧,知识还在恢复中。