JDBC通過PreparedStatement實現簡單的錄入資料的操作
阿新 • • 發佈:2018-12-15
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 最後我來看看結果:
沒有錄入資料前:
我們發現成功錄入資料: