【Java】JDBC编程实现对数据库表的增删改查操作

2022-11-20 10:58:22 浏览数 (1)

目录

一、准备工作

二、准备数据

代码

三、存放MySQL驱动jar包

四、编程步骤 

五、代码实现

1.增

代码

执行结果

​2.改

代码

执行结果

3.查

代码

执行结果

4.删

代码

执行结果


一、准备工作

下载MySQL驱动jar包,资源直达:http://t.csdn.cn/TZRBw

二、准备数据

创建所需的数据库及表

代码

代码语言:javascript复制
#创建数据库
CREATE DATABASE jdbc;
use jdbc;
#创建student表
CREATE TABLE Student(
     stuId INT PRIMARY KEY AUTO_INCREMENT,
     sname VARCHAR(50),
     sex VARCHAR(2),
     email VARCHAR(50),
     phone VARCHAR(20)     
);

三、存放MySQL驱动jar包

在eclipse中创建Java项目,然后导入MySQL驱动jar包创建lib目录,用于存放当前项目需要的所有jar包选择jar包,右键执行build path / Add to Build Path

四、编程步骤 

     1.加载驱动

        Class.forName("com.mysql.cj.jdbc.Driver");

     2.创建连接

         String url ="jdbc:mysql://localhost:3306/lesson23_jdbc?serverTimezone=GMT

         +8&characterEncoding=utf8&useSSL=true";

     3.得到执行sql语句的对象

     4.执行sql语句,并返回结果

     5.处理结果

     6.关闭连接

五、代码实现

Driver接口:Driver接口是所有JDBC驱动程序必须实现的接口,该接口专门提供给数据库厂商使用。同于加载驱动 DriverManager类:使用该类注册驱动。 Connection接口:Java程序和数据库的连接对象。 Statement接口:用于执行静态的SQL语句,并返回一个结果对象。SQL语句的执行者,通过Connection接口对象获取。 ResultSet接口:用于保存JDBC执行查询时返回的结果集,该结果集封装在一个逻辑表格中。 PreparedStatement接口;Statement的子接口,用于执行预编译的SQL语句。

1.定义Student类,该类与前面创建的数据库表student的表结构相对应

代码语言:javascript复制
package test1;

public class Student {
	private int stuld;
	private String sname;
	private String sex;
	private String email;
	private String phone;
	public Student(int stuld, String sname, String sex, String email, String phone) {
		super();
		this.stuld = stuld;
		this.sname = sname;
		this.sex = sex;
		this.email = email;
		this.phone = phone;
	}
	public int getStuld() {
		return stuld;
	}
	public void setStuld(int stuld) {
		this.stuld = stuld;
	}
	public String getSname() {
		return sname;
	}
	public void setSname(String sname) {
		this.sname = sname;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getPhone() {
		return phone;
	}
	public void setPhone(String phone) {
		this.phone = phone;
	}
	@Override
	public String toString() {
		return "Student [stuld="   stuld   ", sname="   sname   ", sex="   sex   ", email="   email   ", phone="   phone
				  "]";
	}
}

1.增

2.编写向数据库表增加一条记录的测试类代码(AddDemo1)

代码

代码语言:javascript复制
package test1;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class AddDemo {
private static Statement statement;
private static Statement createStatement;

public static void main(String[] args) throws ClassNotFoundException, SQLException {
	// 1、加载驱动
	Class.forName("com.mysql.cj.jdbc.Driver");// 反射技术,保证内存中只有一个Driver对象
	// 2、创建连接
	String url="jdbc:mysql://localhost:3306/jdbc?serverTimezone=GMT+8&characterEncoding=utf8&useSSL=true";
	String user="root";// 数据库用户名
	String pw="123456";// 数据库密码(每个人都不一样我的是123456)
	Connection conn=DriverManager.getConnection(url, user, pw);//补全快捷键ctrl 1
	System.out.println(conn);//测试是否连接上mysql数据库
	// 3、得到执行sql语句的对象
	java.sql.Statement statement = conn.createStatement();//补全快捷键ctrl 1
	// 4、执行sql语句,并返回结果
	String sql="INSERT INTO student VALUES(NULL,'tom','男','tom@163.com','18888888888')";//执行语句
	int i=statement.executeUpdate(sql);
	// 5、处理结果
	if (i > 0) {
		System.out.println("添加成功");
	}
	// 6、关闭连接
	statement.close();
	conn.close();
}
}

执行结果

2.改

 编写修改数据库表中一条记录的测试类代码

代码

代码语言:javascript复制
package test1;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class UpdateDemo {

	public static void main(String[] args) throws ClassNotFoundException, SQLException {
		Class.forName("com.mysql.cj.jdbc.Driver");
		Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc?characterEncoding=utf8&useSSL=true", "root", "123456");
		Statement statement = conn.createStatement();
		statement.execute("INSERT INTO student VALUES(NULL,'zhangsan','男','zhangsan@163.com','16666666666')");
		int i=statement.executeUpdate("UPDATE student SET sname='rose',sex='女'  WHERE stuid=2");
		if(i>0) {
			System.out.println("修改成功!");
		}
		statement.close();
		conn.close();
	}
}

执行结果

3.查

编写查询数据库表中所有记录的测试类代码

代码

代码语言:javascript复制
package test1;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.mysql.cj.xdevapi.Statement;

public class FindAllDemo {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
	Class.forName("com.mysql.cj.jdbc.Driver");
	Connection connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc?characterEncoding=utf8&useSSL=true", "root","123456");
	java.sql.Statement statement=connection.createStatement();
	ResultSet rs = statement.executeQuery("SELECT * FROM student");
	List<Student> stu = new ArrayList<Student>();
	while (rs.next()) {
		Student s = new Student();// 创建一个Student对象
		// 封装Student对象:把每个记录的字段值赋给Student对象的成员变量
		s.setStuld(rs.getInt("stuId"));
		s.setSname(rs.getString("sname"));
		s.setSex(rs.getString("sex"));
		s.setEmail(rs.getString("email"));
		s.setPhone(rs.getString("phone"));
		// 把封装的Student对象添加到stu集合
		stu.add(s);
	}
	stu.forEach(s -> System.out.println(s));
	rs.close();
	statement.close();
	connection.close();
}
}

执行结果

4.删

编写从数据库表删除一条记录的测试类代码

代码

代码语言:javascript复制
package test1;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class DeleteDemo {

public static void main(String[] args) throws ClassNotFoundException, SQLException {
	Class.forName("com.mysql.cj.jdbc.Driver");
	Connection connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc?characterEncoding=utf8&useSSL=true", "root", "123456");
	Statement statement = connection.createStatement();
	int i= statement.executeUpdate("DELETE FROM student WHERE stuid=2");
	if(i>0) {
		System.out.println("删除成功");
	}
	statement.close();
	connection.close();
}
}

执行结果

 

0 人点赞