JDBC進階之PreparedStatement執行SQL語句(MySQL)

來源:互聯網
上載者:User

從上一篇文章《JDBC串連MySQL資料庫及樣本》(前往該文章)的樣本中,我們提到,使用Statement來執行SQL語句,例如:Connection connection;Statement statement ;... ...statement = connction.creatStatement();String sql = "INSERT INTO staff(name, age, sex,address, depart, worklen,wage)"  + " VALUES ('Serein', 25, 'M', 'Guangzhou','Engine','1','5000')";st.executeUpdate(sql);上述代碼中,需要構造的SQL語句很長很麻煩,尤其是對參數,很容易出錯。所以Sun提供了更進階的Statement,即PreparedStatement。本文就來學習PreparedStatement。 一、什麼是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

查看Console控制台,"成功插入一條資料記錄!":

查看MySQL資料庫,進行確認:

成功完成!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.