JDBC
概念
是一种用于执行
SQL
的Java API
,可以为多种关系型数据库提供统一访问,它是由一种Java
语言编写的类和接口组成的
本质
其实就是
Java
官方提供的一套规范,用于帮助开发人员快速实现不同关系型数据库的连接
所需的jar
包
https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.16/
使用
package com.cxl;
import java.sql.*;
public class demo01 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
// 注册驱动(5版本)
// Class.forName("com.mysql.jdbc.Driver");
// 注册驱动(8版本)
// Class.forName("com.mysql.cj.jdbc.Driver");
// 获取数据库连接(5版本不需要?serverTimezone=UTC这一段,这是8版本之后需要用到,指定时区)
Connection connection = DriverManager.getConnection(
"jdbc:mysql://IP:3306/数据库?serverTimezone=UTC",
"root",
"密码");
// 获取普通执行者对象
//Statement statement = connection.createStatement();
// 执行mysql语句
String str = "SELECT * FROM user WHERE name = ?";
// 预编译对象 - 确定格式
PreparedStatement st = connection.prepareStatement(str);
// 第一个参数
st.setString(1,"张三");
ResultSet resultSet = st.executeQuery();
// 处理结果
while (resultSet.next()) {
System.out.println(resultSet.getString("name") + "\t" + resultSet.getInt("age"));
}
st.close();
resultSet.close();
}
}
注意
-
message from server: "Host '??????��' is not allowed to connect to this MySQL server"
遇到这种问题,解决
- 打开你的
mysql
- 找到
user
表 - 将
Host
列localhost
数据全部改为%
- 最后将
MySQL
的服务给重启(不会的话就重启电脑吧)
- 打开你的
-
还有一个关于时区的问题
serverTimezone
,在第一个参数后面加上?serverTimezone=UTC
即可Connection connection = DriverManager.getConnection("jdbc:mysql://IP:3306/数据库?serverTimezone=UTC", "root", "密码");
-
注册驱动可以省略不写,已实现自动注册