请选择 进入手机版 | 继续访问电脑版

JDBC_CRUD 操作 - 初级

发表于 2016-08-07 20:19 显示全部楼层 19 625

包结构:

blob.png

代码:

package com.langfei._00_.domain;
//数据对象Student
public class Student {
	private Long id;
	private String name;
	private String gender;
	private Integer age;
	private String address;
	private String clzz;
	
	public Student() {
	}
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public String getClzz() {
		return clzz;
	}
	public void setClzz(String clzz) {
		this.clzz = clzz;
	}
	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", gender=" + gender + ", age=" + age + ", address=" + address
				+ ", clzz=" + clzz + "]";
	}
}
package com.langfei._00_.impl;

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

import com.langfei._00_.domain.Student;

/**
 * 对student对象的crud操作
 * 
 * @author yexingfei
 */
public class StudentCRUD {
	// 1:添加学生对象
	public void add(Student student) {
		// 连接数据库
		String user = "root";
		String password = "admin";
		String url = "jdbc:mysql:///6class";

		Connection connection = null;
		Statement statement = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");
			connection = DriverManager.getConnection(url, user, password);
			statement = connection.createStatement();
			// sql 拼接:
			StringBuilder sql = new StringBuilder(100);
			sql.append("INSERT INTO t_student( name, age, gender, address, clzz) values( ");
			sql.append("'" + student.getName() + "', ");
			sql.append(student.getAge() + ",");
			sql.append("'" + student.getGender() + "', ");
			sql.append("'" + student.getAddress() + "', ");
			sql.append("'" + student.getClzz() + "' )");
			// 执行sql
			statement.executeUpdate(sql.toString());
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// 资源释放
			try {
				if (statement != null) {
					statement.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if (connection != null) {
					connection.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	// 2:删除学生对象
	public int delete(Long id) {

		// 连接数据库
		String user = "root";
		String password = "admin";
		String url = "jdbc:mysql:///6class";

		Connection connection = null;
		Statement statement = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");
			connection = DriverManager.getConnection(url, user, password);
			statement = connection.createStatement();
			// sql 拼接:
			String sql = "DELETE FROM t_student WHERE id = " + id;
			// 执行sql
			return statement.executeUpdate(sql);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// 资源释放
			try {
				if (statement != null) {
					statement.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if (connection != null) {
					connection.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

		return -1;
	}

	// 3:更新学生对象
	public int update(Student student) {
		// 连接数据库
		String user = "root";
		String password = "admin";
		String url = "jdbc:mysql:///6class";

		Connection connection = null;
		Statement statement = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");
			connection = DriverManager.getConnection(url, user, password);
			statement = connection.createStatement();
			// sql 拼接:
			StringBuilder sql = new StringBuilder(100);
			sql.append("UPDATE  t_student SET ");
			sql.append("name='" + student.getName() + "', ");
			sql.append("age=" + student.getAge() + ",");
			sql.append("gender='" + student.getGender() + "', ");
			sql.append("address='" + student.getAddress() + "', ");
			sql.append("clzz='" + student.getClzz() + "' ");
			sql.append(" WHERE id=" + student.getId());
			// 执行sql
			statement.executeUpdate(sql.toString());
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// 资源释放
			try {
				if (statement != null) {
					statement.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if (connection != null) {
					connection.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return -1;
	}

	// 4:查单个学生
	public Student find(Long id) {
		// 连接数据库
		String user = "root";
		String password = "admin";
		String url = "jdbc:mysql:///6class";

		Connection connection = null;
		Statement statement = null;
		ResultSet resultSet = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");
			connection = DriverManager.getConnection(url, user, password);
			statement = connection.createStatement();
			// sql 拼接:
			String sql = "SELECT id, name, gender, age, address, clzz FROM t_student WHERE id = " + id;
			// 执行sql
			resultSet = statement.executeQuery(sql);
			if (resultSet.next()) {
				Student student = new Student();
				student.setAddress(resultSet.getString("address"));
				student.setAge(resultSet.getInt("age"));
				student.setName(resultSet.getString("name"));
				student.setClzz(resultSet.getString("clzz"));
				student.setGender(resultSet.getString("gender"));
				student.setId(resultSet.getLong("id"));
				return student;
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// 资源释放
			try {
				if (statement != null) {
					statement.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if (connection != null) {
					connection.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

		return null;
	}

	// 5:查所有学生
	public List<Student> findAll() {
		// 连接数据库
		String user = "root";
		String password = "admin";
		String url = "jdbc:mysql:///6class";

		Connection connection = null;
		Statement statement = null;
		ResultSet resultSet = null;
		List<Student> list = new ArrayList<>();
		Student student = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");
			connection = DriverManager.getConnection(url, user, password);
			statement = connection.createStatement();
			// sql 拼接:
			String sql = "SELECT id, name, gender, age, address, clzz FROM t_student ";
			// 执行sql
			resultSet = statement.executeQuery(sql);

			while (resultSet.next()) {
				student = new Student();
				student.setAddress(resultSet.getString("address"));
				student.setAge(resultSet.getInt("age"));
				student.setName(resultSet.getString("name"));
				student.setClzz(resultSet.getString("clzz"));
				student.setGender(resultSet.getString("gender"));
				student.setId(resultSet.getLong("id"));
				list.add(student);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// 资源释放
			try {
				if (statement != null) {
					statement.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				if (connection != null) {
					connection.close();
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

		return list;
	}
}
package com.langfei._00_.test;

import java.util.List;

import org.junit.Test;

import com.langfei._00_.domain.Student;
import com.langfei._00_.impl.StudentCRUD;

/**
 * crud 测试
 * @author yexingfei
 */
public class StudentCRUDTest {
	private StudentCRUD dao = new StudentCRUD();
	@Test
	public void testAdd() throws Exception {
		Student student = new Student();
		student.setAddress("广东");
		student.setAge(10);
		student.setClzz("大神1班");
		student.setGender("仔");
		student.setName("飞");
		dao.add(student);
	}
	@Test
	public void testDelete() throws Exception {
		Long id = 2L;
		dao.delete(id);
	}
	@Test
	public void testUpdate() throws Exception {
		Student student = new Student();
		student.setId(3L);
		student.setAddress("广东1");
		student.setAge(12);
		student.setClzz("大神2班");
		student.setGender("妞");
		student.setName("大飞");
		dao.update(student);
	}
	@Test
	public void testFind() throws Exception{
		Student student = dao.find(3L);
		System.out.println(student);
	}
	@Test
	public void testFindAll() throws Exception{
		List<Student> list = dao.findAll();
		for(Student student : list){
			System.out.println(student);
		}
	
	}
}

总结:

00、初级

存在问题:

1> 每个方法重复连接数据库,关闭数据库资源,此处重复可抽取

2> 方法中使用Statement,拼接sql麻烦,可使用更安全的PrepareStatement

3> url username password driver 存在硬编码


回复 使用道具
举报
小受哥哥

发表于 2017-03-18 14:03 显示全部楼层

回复 支持 反对 使用道具
举报
望断雁南飞

发表于 2017-03-08 09:10 显示全部楼层

活跃活跃论坛气氛~求楼主加好友

回复 支持 反对 使用道具
举报
随手拾起

发表于 2017-03-03 16:57 显示全部楼层

回复 支持 反对 使用道具
举报
卷毛维安

发表于 2017-02-28 13:02 显示全部楼层

每一个成功者都有一个开始。成功的路,始于回复。

回复 支持 反对 使用道具
举报
佳木繁玥

发表于 2017-02-23 12:45 显示全部楼层

回复 支持 反对 使用道具
举报
腐女大作战

发表于 2017-02-18 11:54 显示全部楼层

回复 支持 反对 使用道具
举报
哥哥在哪儿

发表于 2017-02-18 10:16 显示全部楼层

回复 支持 反对 使用道具
举报
我爱大菠萝

发表于 2017-02-18 05:58 显示全部楼层

回复 支持 反对 使用道具
举报
wengongling

发表于 2017-02-18 05:12 显示全部楼层

回复 支持 反对 使用道具
举报
12下一页

发表新文章
叶星飞

小码哥骨干成员

0

学分

972

学币

1063

积分

小码哥骨干成员

Rank: 6Rank: 6

积分
1063
Ta的主页 发消息
精华帖排行榜

精彩推荐

  • 关注小码哥教育