乐趣区

关于java:mysql数据库编程JDBC增删改查

数据库编程是指通过代码实现一个 MYSQL 客户端,同样是通过网络和服务器进行交互,数据库会给咱们提供一组 API 来不便实现
API:application programming interface,提供了一组函数 / 类 / 或办法,让用户间接去应用,有时可称为接口。

MYSQL,ORACLE,SQL SERVER 等数据库都有不同的 API, 通过适配器(adapter)把不同品种的 API 转成 JDBC 对立的 API
适配器(adapter):java 培训中称为数据库驱动程序,不同数据库须要不同的驱动程序,java 中的数据库驱动程序是一个独立的“jar 包”,一堆二进制文件的汇合。

maven 仓库:jar 包的利用商店,在这里下载不同数据库对应的 jar 包,留神版本对应
导入 jar 包:
在 IDEA 的工程中创立一个目录,把 jar 包拷贝进去。
配置我的项目的一些属性,让我的项目可能找到 jar 包。
JDBC 中以 DataSourse API 为主。
具体的程序实现:
先创立 Database 对象。
创立 Connection 对象,和数据库建设连贯(相当于关上了 mysql 客户端,输出了明码,连贯胜利)。
拼装 SQL 语句,用到了 prepare,Statement 对象(客户端输出 sql 语句)。
执行 SQL 语句(在客户端敲下回车)。
查看服务器返回的后果(客户端显示后果)。
敞开连贯,开释资源,后创立的先开释(退出客户端)。
程序
JDBC 插入数据
package jar1024;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

//JDBC 插入数据
public class TestJDBC {
public static void main(String[] args) throws SQLException {
//1. 先创立 DataSource 对象(DataSource 对象生命周期应该是要追随整个程序)
DataSource dataSource = new MysqlDataSource();
// 接下来针对 datasource 进行配置,以便前面能顺利拜访数据库
// 次要配置三个方面信息,URL,User,Password 须要向下转型
((MysqlDataSource) dataSource).setURL(“jdbc:mysql://127.0.0.1:3306/jar1024?characterEncoding=utf-8&useSSL=true”);
((MysqlDataSource) dataSource).setUser(“root”);
((MysqlDataSource) dataSource).setPassword(“123456”);

//2. 创立 Connection 对象,和 数据库建设连贯, 就能够和数据库进行后续的数据传输了
//Connection 的包是 java.sql
// 如果不失常就会抛出 SQLexception 异样
//connection 生命周期较短,每次申请可创立一个新的 connection
Connection connection = dataSource.getConnection();

//3. 拼装 sql 语句,用到 prepare,Statement 对象
int id = 1;
String name = “cao”;
int classId = 10;
//? 是占位符,能够把具体的变量的值替换到?地位
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();

}
}

  1. JDBC 查找

package jar1024;

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;

//JDBC 查找
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/jar1024?characterEncoding=utf-8&useSSL=true”);
((MysqlDataSource) dataSource).setUser(“root”);
((MysqlDataSource) dataSource).setPassword(“123456”);

//2. 创立 Connection 对象,和 数据库建设连贯, 就能够和数据库进行后续的数据传输了
Connection connection = dataSource.getConnection();

//3. 拼装 sql 语句,用到 prepareStatement 对象
String sql = “select * from student”;
PreparedStatement statement = connection.prepareStatement(sql);

//4. 拼装好之后,执行 SQL
ResultSet resultSet = statement.executeQuery();

//5. 遍历后果集, 遍历过程相似于应用迭代器遍历汇合类
// 后果集相当于一张表,每张表有很多行,每一行是一条记录(又蕴含很多列)
//next()一方面断定以后是否存在下一行,另一方面如果存在下一行就获取到这一行
// 能够直观地把 resultSet 对象设想成是一个光标
while(resultSet.next()) {
//resultSet 的光标指向以后行,就能够把以后行中的列数据获取到
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();

}
}

  1. JDBC 删除

package jar1024;

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;

//JDBC 删除
public class TestJDBCDelete {
public static void main(String[] args) throws SQLException {
Scanner scanner = new Scanner(System.in);
System.out.println(“ 请输出要删除的学生姓名:“);
String name = scanner.next();

//1. 先创立 DataSource 对象
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource) dataSource).setURL(“jdbc:mysql://127.0.0.1:3306/jar1024?characterEncoding=utf-8&useSSL=true”);
((MysqlDataSource) dataSource).setUser(“root”);
((MysqlDataSource) dataSource).setPassword(“123456”);

//2. 创立 Connection 对象,和 数据库建设连贯, 就能够和数据库进行后续的数据传输了
Connection connection = dataSource.getConnection();

//3. 拼装 sql 语句,用到 prepareStatement 对象
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();
}
}

  1. JDBC 批改

package jar1024;

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;

//JDBC 批改
public class TestJDBCUpdate {
public static void main(String[] args) throws SQLException {
// 让用户输出要批改 id 为 n 的同学姓名
Scanner scanner = new Scanner(System.in);
System.out.println(“ 请输出要批改的学生 id:“);
int id = scanner.nextInt();
System.out.println(“ 请输出要批改的同学姓名:“);
String name = scanner.next();

//1. 先创立 DataSource 对象
DataSource dataSource = new MysqlDataSource();
((MysqlDataSource) dataSource).setURL(“jdbc:mysql://127.0.0.1:3306/jar1024?characterEncoding=utf-8&useSSL=true”);
((MysqlDataSource) dataSource).setUser(“root”);
((MysqlDataSource) dataSource).setPassword(“123456”);

//2. 创立 Connection 对象,和 数据库建设连贯, 就能够和数据库进行后续的数据传输了
Connection connection = dataSource.getConnection();

//3. 拼装 sql 语句,用到 prepareStatement 对象
String sql = “update student set name = ? where id = ?”;
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1,name);
statement.setInt(2,id);

//4. 拼装好之后,执行 SQL
int ret = statement.executeUpdate();
if (ret == 1) {
System.out.println(“ 批改胜利 ”);
}else{
System.out.println(“ 批改失败 ”);
}

//5. 敞开并开释资源
statement.close();
connection.close();

}
}

退出移动版