一、什么是PreparedStatement
參閱Java API文檔,我們可以知道,PreparedStatement是Statement的子接口(如圖所示),表示預編譯的 SQL 語句的對象,SQL 語句被預編譯並存儲在
PreparedStatement 對象中。然后可以使用此對象多次高效地執行該語句。
二、通過PreparedStatement獲取在運行命令行中執行的參數,將參數插入到某張數據表中
相關的實驗過程,包括在預先創建程序所需數據庫、創建所需數據表格、在開發環境中加載驅動程序包等,可參考前一篇文章《JDBC連接MySQL數據庫及示例》(
前往該文章)
具體代碼如下:
- package com.serein.jdbc;
- import java.sql.*;
- public class preparedStatemetTest {
- public static void main(String[] args) {
- //檢查命令行中是否夠7個參數
- if(args.length != 7) {
- System.out.println("Parameter Error! Please Input Again!");
- System.exit(-1);
- }
- //程序獲取運行棧里的7個參數值
- String name = args[0];
- int age = 0;
- try {
- age = Integer.parseInt(args[1]);
- } catch (NumberFormatException e) {
- System.out.println("Parameter Error! Age should be Number Format!");
- System.exit(-1);
- }
- String sex = args[2];
- String address = args[3];
- String depart = args[4];
- int worklen = 0;
- try {
- worklen = Integer.parseInt(args[5]);
- } catch (NumberFormatException e) {
- System.out.println("Parameter Error! Worklen should be Number Format!");
- System.exit(-1);
- }
- int wage = 0;
- try {
- wage = Integer.parseInt(args[6]);
- } catch (NumberFormatException e) {
- System.out.println("Parameter Error! Wage should be Number Format!");
- System.exit(-1);
- }
- //創建PreparedStatement對象
- PreparedStatement pstmt = null;
- //創建連接對象
- Connection conn = null;
- //連接數據庫,並插入數據
- try {
- //加載MySQL驅動實例,提供了兩種方法,是等價的
- Class.forName("com.mysql.jdbc.Driver");
- //new oracle.jdbc.driver.OracleDriver();
- //建立連接
- conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myuser", "root", "root");
- //使用PreparedStatement對象里來構建並執行SQL語句,7個問號代表7個字段預先要保留的值
- pstmt = conn.prepareStatement("INSERT INTO staff(name, age, sex,address, depart, worklen,wage) VALUES (?, ?, ?, ?, ?, ?, ?)");
- //通過PreparedStatement對象里的set方法去設置插入的具體數值
- pstmt.setString(1, name);
- pstmt.setInt(2, age);
- pstmt.setString(3, sex);
- pstmt.setString(4,address );
- pstmt.setString(5, depart);
- pstmt.setInt(6, worklen);
- pstmt.setInt(7, wage);
- pstmt.executeUpdate();
- //插入成功提示
- System.out.print("成功插入一條數據記錄!");
- //捕獲驅動加載失敗異常
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- //捕獲SQL語句執行失敗異常
- } catch (SQLException e) {
- e.printStackTrace();
- //恢復變量初始值
- } finally {
- try {
- if(pstmt != null) {
- pstmt.close();
- pstmt = null;
- }
- if(conn != null) {
- conn.close();
- conn = null;
- }
- //捕獲SQL異常
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- }
其中輸入的參數為(可參考進行修改):
SereinChan
25
M
Guangzhou
Engine
3
5000
25
M
Guangzhou
Engine
3
5000
查看Console控制台,"成功插入一條數據記錄!":
查看MySQL數據庫,進行確認:
成功完成!
轉自:http://blog.csdn.net/cxwen78/article/details/6868941




