// 2.和数据库建立连接 建立连接好了之后,就可以进行后续的操作
// 建立连接的意义 是为了验证当前网络通信是否正常
// 如果不正常会抛出 SQLException的异常
// connection 对象的生命周期是较短的,可以每个请求创建一个新的connection对象
Connection connection = dataSource.getConnection();
3.PrepareStatement 对象拼装具体的 SQL 语句
(相当于客户端中输入SQL的过程)
import java.sql.PreparedStatement;
// 3.拼装 SQL 语句
// 需要用到 PrepareStatement 对象
// 先以 插入数据为例
int id = 1;
String name = “花花”;
int classID = 2;
// ? 表示一个占位符,可以把具体的变量替换到 ? 的位置
String sql = “insert into student values(?,?,?)”;
PreparedStatement statement = connection.prepareStatement(sql);
// 此处的 1 2 3 表示第几个问号 (相当于 ? 的下标)
statement.setInt(1,id);
statement.setString(2,name);
statement.setInt(3,classID);
4.拼装好之后,需要执行 SQL
(客户端中敲下回车,此时SQL就被发到服务器了)
// 4.拼装好之后,需要执行 SQL
// insert delete update 都使用 executeUpdate 方法来执行
// select 就是 executeQuery 来执行
// 返回值表示此次操作修改了多少行
int ret = statement.executeUpdate();
5.执行完毕后,关闭释放相关资源
(退出客户端)
// 5.执行完毕后,关闭释放相关资源
// 后创建的被先释放,顺序不能错
statement.close();
connection.close();
补充:
插入数据:
附全部代码:
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class TestJDBC {
public static void main(String[] args) throws SQLException {
// 1.创建 DataSource 对象 (DataSource对象的是生命周期是跟随整个程序的)
DataSource dataSource = new MysqlDataSource();
// 接下来需要针对 DataSource 进行一些配置,以便后边能够正确的访问到 数据库服务器
// 主要配置 3 方面信息: URL,User,Password (需要进行向下转型)
((MysqlDataSource) dataSource).setURL(“jdbc:mysql://127.0.0.1:3306/Date20211028?characterEncoding=utf-8&useSSL=true”);
((MysqlDataSource) dataSource).setUser(“root”);
((MysqlDataSource) dataSource).setPassword(“自己设置的密码”); //密码得输入正确才可执行
// 2.和数据库建立连接 建立连接好了之后,就可以进行后续的操作
// 建立连接的意义 是为了验证当前网络通信是否正常
// 如果不正常会抛出 SQLException的异常
// connection 对象的生命周期是较短的,可以每个请求创建一个新的connection对象
Connection connection = dataSource.getConnection();
// 3.拼装 SQL 语句
// 需要用到 PrepareStatement 对象
// 先以 插入数据为例
int id = 1;
String name = “花花”;
int classID = 2;
// ? 表示一个占位符,可以把具体的变量替换到 ? 的位置
String sql = “insert into student values(?,?,?)”;
PreparedStatement statement = connection.prepareStatement(sql);
// 此处的 1 2 3 表示第几个问号 (相当于 ? 的下标)
statement.setInt(1,id);
statement.setString(2,name);
statement.setInt(3,classID);
System.out.println("statement: " + statement);
// 4.拼装好之后,需要执行 SQL
// insert delete update 都使用 executeUpdate 方法来执行
// select 就是 executeQuery 来执行
// 返回值表示此次操作修改了多少行
int ret = statement.executeUpdate();
System.out.println("ret: " + ret);
// 5.执行完毕后,关闭释放相关资源
// 后创建的被先释放,顺序不能错
statement.close();
connection.close();
}
}
输出结果:
查看数据库中的结果:
查询数据:
select 操作示例:
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class TestJDBCSelect {
public static void main(String[] args) throws SQLException {
// 1.创建 DataSource 对象
DataSource dataSource = new MysqlDataSource();
// 配置三方面信息
((MysqlDataSource) dataSource).setURL(“jdbc:mysql://127.0.0.1:3306/Date20211028?characterEncoding=utf-8&useSSL=true”);
((MysqlDataSource) dataSource).setUser(“root”);
((MysqlDataSource) dataSource).setPassword(“自己设置的密码”);
// 2.创建 connection 对象,和数据库建立连接
Connection connection = dataSource.getConnection();
// 3.拼装 SQL 语句
String sql = “select * from student”;
PreparedStatement statement = connection.prepareStatement(sql);
// 4.执行 SQL
ResultSet resultSet = statement.executeQuery();
// 5.遍历结果集 遍历过程和迭代器遍历集合类有点像
// 结果集相当于一张表,这个表里有很多行,每一行是一个记录(又包含很多列)
// next: 一方面判定当前是否存在下一行; 另一方面如果存在下一行,就获取到这一行
while(resultSet.next()){
// resultSet 的"光标"指向当前行,就可以把当前行中的的列的数据都获取到
// 当前表中的每一行包含三列: id, name, classID
// 可以根据列名获取对应的列数据
int id = resultSet.getInt(“id”);
String name = resultSet.getString(“name”);
int classID = resultSet.getInt(“classID”);
// 上述三个 参数中的列名必须和 数据库中的列名完全一致
System.out.println("id: " + id + " name: " + name + " classId: " + classID);
}
// 6.执行完毕后,关闭释放相关资源
resultSet.close();
statement.close();
connection.close();
}
}
输出结果:
删除数据:
删除操作实例:
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;
public class TestJDBCDelete {
public static void main(String[] args) throws SQLException {
Scanner scan = new Scanner(System.in);
System.out.println("请输入要删除的学生姓名: ");
String name = scan.next();
//1.创建 DataSource 对象
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource) dataSource).setURL(“jdbc:mysql://127.0.0.1:3306/Date20211028?characterEncoding=utf-8&useSSL=true”);
((MysqlDataSource) dataSource).setUser(“root”);
((MysqlDataSource) dataSource).setPassword(“自己设置的密码”);
// 2.创建Connection 对象,和数据库建立连接
Connection connection = dataSource.getConnection();
// 3.拼装SQL
String sql = “delete from student where name = ?”;
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1,name);
// 4.执行 SQL
int ret = statement.executeUpdate();
if(ret == 1){
System.out.println(“删除成功!”);
}
else{
System.out.println(“删除失败!”);
}
// 5.关闭并释放资源
statement.close();
connection.close();
}
}
输出结果:
数据库中检验:
修改数据:
import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;
public class TestJDBCUpdate {
public static void main(String[] args) throws SQLException {
Scanner scan = new Scanner(System.in);
System.out.println("请输入要修改的学生id: ");
int id = scan.nextInt();
System.out.println("请输入要修改的学生姓名: ");
String name = scan.next();
//1.创建 DataSource 对象
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource) dataSource).setURL(“jdbc:mysql://127.0.0.1:3306/Date20211028?characterEncoding=utf-8&useSSL=true”);
((MysqlDataSource) dataSource).setUser(“root”);
((MysqlDataSource) dataSource).setPassword(“自己设置的密码”);
// 2.创建Connection 对象,和数据库建立连接
Connection connection = dataSource.getConnection();
// 3.拼装SQL
String sql = “update student set name = ? where id = ?”;
PreparedStatement statement = connection.prepareStat1ement(sql);
statement.setString(1,name);
statement.setInt(2,id);