JavaSE_JDBC基本操作。

1.向数据库中添加,删除,修改数据。

  • Connection(数据库连接类)
  • PreparedStatement(数据库操作类)
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class Demo01 {
	public static void main(String[] args) {
		//1.定义SQL语句。
		//1.1对employee_info表进行增添数据操作。
		String sql = "INSERT INTO employee_info(emp_name,emp_salary,emp_dept,id_card_no,phone_number)VALUES(?,?,?,?,?)";
		//1.2对employee_info表进行删除数据操作。(根据ID好进行删除)
		//String sql = "DELETE FROM employee_info WHERE emp_id like ?";
		//1.3对employee_info表进行修改数据操作。(根据传入的编号修改数据)
		//String sql = "UPDATE employee_info set emp_name = ?,emp_salary = ?,emp_dept = ?,id_card_no = ?,phone_number = ? WHERE emp_id like ?";
		
		//2.创建连接对象和创建数据库操作对象。(将连接对象与操作对象放入try中try块结束后自动关闭。)
		/*
		 * Connection对象中的参数。
		 * 参数1:数据库连接字符串(数据库的地址)
		 *  支持MySQL8的JDBC连接字符串,格式如下所示:
		 *  jdbc:mysql://数据库的IP地址/数据库名称?useSSL=false&serverTimezone=UCT
		 * 参数2:数据库用户名
		 * 参数3:数据库的密码
		 */
		try (Connection conn = DriverManager.getConnection(
				"jdbc:mysql://数据库的IP地址/数据库名称?useSSL=false&serverTimezone=UCT", 
				"数据库用户名",
				"数据库的密码");
				//声明插入的一条数据的时候返回自动生成的信息
				PreparedStatement ps = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS)){
			//3.对问号占位符进行赋值。
			ps.setString(1, "诸葛亮");//对表中的姓名赋值
			ps.setDouble(2, 1235.14);//对表中的工资赋值
			ps.setString(3, "行政部");//对表中的单位赋值
			ps.setString(4, "612545123698745512");//对表中的身份证号赋值
			ps.setString(5, "13354874152");//对表中的电话号进行赋值。
			//4.执行SQL语句。
			int rows = ps.executeUpdate();
			System.out.println("改变行数为: " + rows);
			//	获取返回自动生成信息的集合
			ResultSet rs = ps.getGeneratedKeys();
			if(rs.next()) {
				System.out.println("添加的这条信息时自动生成的信息为:" + rs.getInt(1));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}
  • 注意:插入数据的时候需要返回插入后自动生成信息的时候,可以使用getGeneratedKeys();方法,但是必须事先在构建PreparedStatement对象的时候对第二个参数声明Statement.RETURN_GENERATED_KEYS

2.查找数据库中的数据。

  • Connection(数据库连接类)
  • PreparedStatement(数据库操作类)
  • ResultSet(数据存储类)
//查找出工作单位相同的全部数据。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.List;

import com.apesource.deam02.Employee;
/**
 * 将集合中的数据全部添加到数据库中(批处理)
 *
 */
public class Demo02 {
	@Override
	public List<Employee> queryEmployeeListByDept(String dept) {
		//1.定义集合存储数据
		List<Employee> employeeList = new ArrayList<Employee>();
		//2.SQL语句
		String sql = "SELECT emp_id,emp_name,emp_salary,emp_dept,id_card_no,phone_number FROM employee_info WHERE emp_dept like ?";
		//3.建立连接对象,建立操作对象。
		try (Connection conn = DriverManager.getConnection(
				"jdbc:mysql://数据库的IP地址/数据库名称?useSSL=false&serverTimezone=UCT", 
				"数据库用户名",
				"数据库的密码");
				PreparedStatement ps = conn.prepareStatement(sql)){
			//4.对占位符进行赋值。
			ps.setString(1, dept);
			//5.执行插入操作,并返回ResultSet对象。
			ResultSet rs = ps.executeQuery();
			//6.遍历ResultSet对象;向集合中添加数据。
			while(rs.next()) {
				//6.1创建Employee对象并通过构造方法注入值
				Employee emp = new Employee(rs.getString(2), rs.getDouble(3), rs.getString(4), rs.getString(5), rs.getString(6));
				//6.2通过set方法注入编号
				emp.setEmployeeId(rs.getInt(1));
				//6.3添加入集合中
				employeeList.add(emp);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return employeeList;
	}
}

3.批量添加数据,删除数据,修改数据。

  • 批量操作指的是一次性选中多条语句执行。
  • Connection(数据库连接类)
  • PreparedStatement(数据库操作类)
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.List;

import com.apesource.deam02.Employee;
/**
 * 将集合中的数据全部添加到数据库中(批处理)
 *
 */
public class Demo03 {
	public static void instrtEmployee(List<Employee> emplist) {
		//1.定义SQL语句。
		//1.1对employee_info表进行增添数据操作。
		String sql = "INSERT INTO employee_info(emp_name,emp_salary,emp_dept,id_card_no,phone_number)VALUES(?,?,?,?,?)";
		//1.2对employee_info表进行删除数据操作。(根据ID好进行删除)
		//String sql = "DELETE FROM employee_info WHERE emp_id like ?";
		//1.3对employee_info表进行修改数据操作。(根据传入的编号修改数据)
		//String sql = "UPDATE employee_info set emp_name = ?,emp_salary = ?,emp_dept = ?,id_card_no = ?,phone_number = ? WHERE emp_id like ?";
		
		//2.创建连接对象和创建数据库操作对象。(将连接对象与操作对象放入try中try块结束后自动关闭)
		try (Connection conn = DriverManager.getConnection(
				"jdbc:mysql://数据库的IP地址/数据库名称?useSSL=false&serverTimezone=UCT", 
				"数据库用户名",
				"数据库的密码");
				PreparedStatement ps = conn.prepareStatement(sql)){
			//3.循环遍历集合
			for (int i = 0; i < emplist.size(); i++) {
				//	3.1取出集合中的第i个对象。
				Employee employee = emplist.get(i);
				//	3.2对SQl语句中的占位符进行赋值。
				ps.setString(1, employee.getEmployeeName());
				ps.setDouble(2, employee.getSalary());
				ps.setString(3, employee.getDept());
				ps.setString(4, employee.getIdCardNo());
				ps.setString(5, employee.getPhoneNumber());
				//	3.2添加到批量处理中
				ps.addBatch();
				//	3.3每6次执行一个批处理;
				if((i+1)%6==0) {
					//	3.4批量向数据库写入数据。
					ps.executeBatch();
					//	3.5清理批量写入中的内容,便于下次写入。
					ps.clearBatch();
				}
			}
			//	3.6将没有添加入数据库的批量数据进行批量添加。(返回int数组)
			int rows[] = ps.executeBatch();
			System.out.println("改变行数: " + Arrays.toString(rows));
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值