JDBC通过PreparedStatement实现简单的录入数据的操作

1.首先先创建一张表:

2 实现从控制台输入学生的信息的功能:

/**
	 * 从控制台输入学生的信息
	 * @return
	 */
	private Student getStudentFromConsole() {
		Scanner scanner = new Scanner(System.in);
		
		Student student = new Student(0, 0, null, null, null, null, 0);
		System.out.print("FlowId: ");
		student.setFlowId(scanner.nextInt());
		
		System.out.print("Type: ");
		student.setType(scanner.nextInt());
		
		System.out.print("IdCard: ");
		student.setIdCard(scanner.next());
		
		System.err.print("ExamCard: ");
		student.setExamCard(scanner.next());
		
		System.out.print("StudentName: ");
		student.setStudentName(scanner.next());
		
		System.out.print("Location: ");
		student.setLocation(scanner.next());
		
		System.out.print("Grade: ");
		student.setGrade(scanner.nextInt());
		return student;
	}

3 实现添加学生信息的功能:

/**
	 * 通过JDBCTools工具类,不用每次书写繁琐的sql语句
	 * @param student
	 */
	public void addNewStudent2(Student student) {
		String sql = "INSERT INTO examstudent(flowid, type, idcard, "
				+ "examcard, studentname, location, grade)"
				+ "VALUES(?, ?, ?, ?, ?, ?, ?)";
		
		JDBCTools.update(sql, student.getFlowId(), student.getType(), student.getIdCard(), 
				student.getExamCard(), student.getStudentName(), student.getLocation(), student.getGrade());	
	}

4 JDBCTools工具类中的update()函数也提供给大家吧(PreparedStatement方法):
 

/**
	 * 执行SQL语句,使用PreparedStatement
	 * Object ...args表示可变的参数
	 * @param sql
	 * @param args:填写SQL占位符的可变参数
	 * 1. PreparedStatement:是Statement的子接口,可以传入带占位符的SQL语句,并且提供了补充占位符变量的方法
	 * 2. 调用PreparedStatement的setXxx(int index, Object val)设置占位符从1开始,val表示要插入的数据
	 * 3.使用Statement需要拼写SQL语句,很辛苦,容易出错
	 * 4. 可以有效的防止SQL注入
	 */
	public static void update(String sql, Object ...args) {
		Connection connection = null;
		PreparedStatement preparedStatement = null;
		
		try {
			connection = JDBCTools.getConnection();
			preparedStatement = (PreparedStatement) connection.prepareStatement(sql);
			
			for(int i = 0; i < args.length; i++) {
				preparedStatement.setObject(i + 1, args[i]);
			}
			preparedStatement.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JDBCTools.release(null, preparedStatement, connection);
		}
	}

5 测试程序:


	/**录入信息
	 * 向数据库里录入学生信息测试
	 */
	@Test
	public void testAddNewStudent() { 
		Student student = getStudentFromConsole();
		addNewStudent2(student);
	}

6 最后我来看看结果:

没有录入数据前:

我们发现成功录入数据:

扫描二维码关注公众号,回复: 3689999 查看本文章


 

猜你喜欢

转载自blog.csdn.net/wangjian530/article/details/83045375
今日推荐