未登录数据库时
mysql -V
登录数据库时
mysql -u root -p
password:******
select @@version;
下载驱动包的网址,会让你填一下验证码,然后根据自己的mysql下载对应版本的java包(实际上我自己的mysql是8.0版本的,我用mysql-connector-java-5.1.6也可以用)
https://mvnrepository.com/artifact/mysql/mysql-connector-java
create database taobao;
use taobao;
create table user(
id int,
uname varchar(30),
salary int,
job varchar(30),
deptno int
);
insert into user values
(1,'刘备',10000,'徐州牧',10),
(2,'关羽',9000,'荆州牧',10),
(3,'曹操',12000,'魏王',20),
(4,'许褚',6000,'护卫长',30);
完整代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class TestJDBC {
public static void main(String[] args) {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/taobao","root","123456");
// if(conn==null)
// System.out.println("数据库连接失败!");
// else
// System.out.println("数据库连接成功");
Statement st=conn.createStatement();
String sql="select * from user";
ResultSet rs=st.executeQuery(sql);
while(rs.next()) {
System.out.print(rs.getInt(1)+" ");
System.out.print(rs.getString(2)+" ");
System.out.print(rs.getInt(3)+" ");
System.out.print(rs.getString(4)+" ");
System.out.println(rs.getInt(5)+" ");
}
rs.close();
st.close();
conn.close();
} catch (ClassNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
注意:Class.forName("com.mysql.cj.jdbc.Driver");
如果你运行出现异常可能是因为你的mysql版本较低,需要用
Class.forName("com.mysql.jdbc.Driver");
<2>如果你运行还出现问题也有可能是java驱动包的版本问题,版本较高的java驱动包需要加上时域,所以要把下面这个代码改一下,加上时域conn=DriverManager.getConnection(“jdbc:mysql://127.0.0.1:3306/taobao”,“root”,“123456”);
改为下面这个:
conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/taobao?serverTimezone=UTC","root","123456");
如果你运行的还是有问题,应该就是因为连不上数据库的原因了,那么有可能是下面这个原因:
用mysql -u root -p登录数据库,然后输入下面命令查看用户信息
select host,user,plugin,authentication_string from mysql.user;
在这里我的user用户名是root, localhost表示是本地数据库不是远程的(有的同学的是%)
如果你的plugin是caching_sha2_password则需要修改密码(由于我已经修改过了,所以最后一行是mysql_native_password),123456是我想要修改成的密码,你可以根据自己情况改。你只需要执行一下这个命令应该就可以连接数据库了
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
注意:如果你的不是localhost而是%则需要改成: ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘123456’;