1. 说明
用Java语言操作Mysql,首先需要学习Mysql
安装教程详见:一、安装、连接以及配置MySQL Mysql基础教程详见:「MySQL」从零到删库
2. JDBC的由来以及定义
Java数据库连接,(Java Database Connectivity,简称JDBC) 是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。JDBC是面向关系型数据库的。 Java数据库连接 JDBC是Java操作各数据库的一种规范。 假设Java公司是布料厂,那么各SQL数据库公司就是服装设计厂 Java公司规定JDBC接口,允许去操作各数据库,相当于原材料,各SQL公司去实现接口,相当于拿原材料设计出自己的服装。
3. JDBC体验,statement.executeQuery() 查询
Java Mysql Jar包下载MySQL Connector/J jar包就相当于物流,将布料厂的原材料运输到服装设计厂里,让服装厂设计,这里选择5.1.6 引入jar包并导入库中 连接数据库并创建一个Info表
4. 整理和释放
导入的包都是在 java.sql里的 import java.sql.*; 规范代码
public class JDBCDemo01 {
public static final String URL = "jdbc:mysql://127.0.0.1:3306/student";
public static final String USER = "root";
public static final String PASSWORD = "a6812587";
public static final String DRIVER = "com.mysql.jdbc.Driver";
public static Connection connection;
public static Statement statement;
public static ResultSet resultSet;
public static void main(String[] args) {
try {
Class.forName(DRIVER);
connection = DriverManager.getConnection(URL, USER, PASSWORD);
statement = connection.createStatement();
resultSet = statement.executeQuery("SELECT * FROM info");
while (resultSet.next()){
int id = resultSet.getInt(1);
String name = resultSet.getString(2);
int age = resultSet.getInt(3);
System.out.println("[" + id + ","+ name+ "," + age + "]");
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
resultSet.close();
statement.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
5. 封装JDBCUtils
如果每次查询都要重新写配置文件 在src下创建db.properties配置文件,写入配置项
创建com.google.util包,创建JDBCUtils类
public class JDBCUtils {
private static String url;
private static String user;
private static String password;
private static String driver;
static {
try {
InputStream inputStream = ClassLoader.getSystemResourceAsStream("db.properties");
Properties properties = new Properties();
properties.load(inputStream);
url = properties.getProperty("url");
user = properties.getProperty("user");
password = properties.getProperty("password");
driver = properties.getProperty("driver");
} catch (Exception e) {
e.printStackTrace();
}
}
public static void init(){
System.out.println("加载成功");
}
public static Connection getConnection() throws SQLException{
return DriverManager.getConnection(url, user, password);
}
public static void close(Connection connection, Statement statement, ResultSet resultSet) throws SQLException {
if (resultSet != null){
resultSet.close();
}
if (statement != null){
statement.close();
}
if (connection != null){
connection.close();
}
}
public static void close(Connection connection, Statement statement) throws SQLException {
if (statement != null){
statement.close();
}
if (connection != null){
connection.close();
}
}
}
创建测试类,测试能否加载JDBCUtils
6. 增删改 —— executeUpdate()
确认获取数据库连接和操作对象信息 只有查询是executeQuery,增删改都是executeUpdate
查看数据库已经插入成功
更新或者删除,也是同理
public void UpdateTest(){
try {
connection = JDBCUtils.getConnection();
statement = connection.createStatement();
String sql = "update info set name ='Pig' where id = 4";
int res = statement.executeUpdate(sql);
if (res != 0){
System.out.println("Update success");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
JDBCUtils.close(connection, statement);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
7. 字符编码问题——装x需谨慎
如果插入中文时乱码怎么办? 字符编码问题,需要更改IDE、数据库、终端的编码格式为UTF-8,在配置项中添加字符编码
参考:2.6 修改数据库字符编码
url = jdbc:mysql://127.0.0.1:3306/student?characterEncoding=utf-8
user = root
password = xxxxxx
driver = com.mysql.jdbc.Driver
8. PreparedStatement和问号占位符
9. 最终Demo说明
10. 对象的封装,重构代码, 学生管理系统模块化编程。
|