java 连接mysql demo
package com.baimei.demo01_jdbc;
import com.mysql.jdbc.Driver;
import org.junit.Test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
/*
案例: 演示JDBC入门案例.
JDBC简介:
概述:
全称叫Java DataBase Connectivity, Java数据库连接, 就是通过Java代码操作不同的数据库.
原理:
由Sun公司提供统一的规则,规范(JDBC规范), 具体的实现和体现交给不同的数据库厂商来做.
即: 我们要连接哪个数据库, 只要导入它的驱动(数据库厂商提供)即可.
核心作用:
1. 连接不同的数据库.
2. 向数据库发送指令(SQL语句).
3. 接收返回的结果集.
JDBC入门案例:
JDBC查询表数据.
JDBC的核心步骤:
0. 导入指定数据库的驱动(就是 jar包), 即: 连接哪个库, 就导入谁的驱动.
1. 注册驱动.
2. 获取连接对象.
3. 根据连接对象, 获取可以执行SQL语句的对象.
4. 执行SQL语句, 获取结果集.
5. 操作结果集.
6. 释放资源.
JDBC的相关API介绍:
DriverManager类解释:
概述:
它是一个类, 表示驱动管理者, 主要用于: 注册驱动 和 获取连接对象的.
成员方法:
public static void registerDriver(Driver driver);
注册驱动, 但是这种方式会导致驱动注册两次, 实际开发没人用.
public static Connection getConnection(String url, String username, String password);
获取连接对象的, 三个参数的解释如下:
参数1: 数据库连接字符串
格式:
协议:子协议://要连接的数据库的ip地址:端口号/具体的要连接的数据库.
示例:
jdbc:mysql://192.168.30.68:3306/day06
jdbc:mysql://localhost:3306/day06
jdbc:mysql://127.0.0.1:3306/day06
jdbc:mysql:///day06 如果操作本机, 可以省略: 主机名和端口号
Connection接口:
概述:
它表示连接对象, 即: Java 和 不同数据库之间的连接对象, 主要负责: 事务管理, 获取可以执行SQL语句的对象.
成员方法:
事务管理方法:
setAutoCommit(), commit(), rollback()
获取可以执行SQL语句的对象:
public Statement createStatement();
获取可以执行SQL语句的对象, 没有预编译功能, 会发生SQL注入攻击问题.
public PreparedStatement prepareStatement(String sql);
获取可以执行SQL语句的对象, 有预编译功能, 不会发生SQL注入攻击问题.
Statement接口:
概述:
它表示可以执行SQL语句的对象, 没有预编译功能, 主要负责: 批处理, 执行SQL语句, 获取结果集.
作用:
关于批处理的方法:
addBatch(), executeBatch(), clearBatch();
执行SQL语句, 获取结果集:
public ResultSet executeQuery(String sql) 执行查询语句, 获取结果集.
public int executeUpdate(String sql) 执行更新(增, 删, 改)语句, 获取结果集.
ResultSet接口:
概述:
它表示执行完查询语句后返回的结果集(本质是一张结果表), 主要用于获取 数据.
成员方法:
public boolean next(); 判断结果集中是否有下一条数据, 类似于 Iterator#hasNext()
public Xxx getXxx(int columnIndex); 根据列的编号获取列的数据, 编号从 1 开始.
public Xxx getXxx(String columnName); 根据列的名字获取列的数据, 推荐使用.
*/
public class Demo01 {
//JDBC入门案例, 最粗糙版.
@Test
public void show1() throws Exception {
//1. 注册驱动.
DriverManager.registerDriver(new Driver());
//2. 获取连接对象.
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day06", "root", "123456");
//3. 根据连接对象, 获取可以执行SQL语句的对象.
Statement stat = conn.createStatement();
//4. 执行SQL语句, 获取结果集.
String sql = "select * from users;";
ResultSet rs = stat.executeQuery(sql);
//5. 操作结果集.
while (rs.next()) { //类似于Iterator#hasNext()
int uid = rs.getInt("uid");
String username = rs.getString("username");
String password = rs.getString("password");
System.out.println(uid + ", " + username + ", " + password);
}
//6. 释放资源.
rs.close();
stat.close();
conn.close();
}
//JDBC的相关API解释之: DriverManager类
@Test
public void show2() throws Exception {
//1. 注册驱动.
//DriverManager.registerDriver(new Driver());
//实际开发注册驱动方式: 反射.
Class.forName("com.mysql.jdbc.Driver");
//2. 获取连接对象.
//Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day06", "root", "123456");
Connection conn = DriverManager.getConnection("jdbc:mysql:///day06", "root", "123456");
//3. 根据连接对象, 获取可以执行SQL语句的对象.
Statement stat = conn.createStatement();
//4. 执行SQL语句, 获取结果集.
String sql = "select * from users;";
ResultSet rs = stat.executeQuery(sql);
//5. 操作结果集.
while (rs.next()) { //类似于Iterator#hasNext()
int uid = rs.getInt("uid");
String username = rs.getString("username");
String password = rs.getString("password");
System.out.println(uid + ", " + username + ", " + password);
}
//6. 释放资源.
rs.close();
stat.close();
conn.close();
}
//JDBC的相关API解释之: Connection接口, 代码同上
//JDBC的相关API解释之: Statement接口, 代码同上
//JDBC的相关API解释之: ResultSet接口
@Test
public void show3() throws Exception {
//1. 注册驱动.
Class.forName("com.mysql.jdbc.Driver");
//2. 获取连接对象.
// Connection conn = DriverManager.getConnection("jdbc:mysql:///day06", "root", "123456");
Connection conn = DriverManager.getConnection("jdbc:mysql://192.168.88.166:3306/tags_new", "root", "123456");
//3. 根据连接对象, 获取可以执行SQL语句的对象.
Statement stat = conn.createStatement();
//4. 执行SQL语句, 获取结果集.
String sql = "select tag_id from tbl_model;";
// String sql = "select username, uid, password from users;";
ResultSet rs = stat.executeQuery(sql);
//5. 操作结果集.
while (rs.next()) {
//方式1: 根据列的编号获取.
/*int uid = rs.getInt(1);
String username = rs.getString(2);
String password = rs.getString(3);*/
//方式2: 根据列的名字获取.
// int uid = rs.getInt("uid");
// String username = rs.getString("username");
// String password = rs.getString("password");
// System.out.println(uid + ", " + username + ", " + password);
int uid = rs.getInt("tag_id");
System.out.println(uid );
}
//6. 释放资源.
rs.close();
stat.close();
conn.close();
}
//JDBC入门案例: 最终版.
}
下载:
day06_JDBC&Thread.rar: https://url69.ctfile.com/f/253469-871769820-657af8?p=2206 (访问密码: 2206)