Java Parameters Query for INSERT PreparedStatement (prepareStatement) |
Java Parameters Query for INSERT PreparedStatement (prepareStatement) ตัวอย่างการใช้ PreparedStatement ในภาษา Java เพื่อ Query บันทึกข้อมูลแบบ INSERT การกำหนดรูปแบบของ Parameters แบบ Query ด้วยการ INSERT ข้อมูลลงใน Table โดยที่ Prepared Statement รองรับการทำงานได้ทุก Database ไม่ว่าจะเป็น Access , MySQL , MariaDB , SQL Server หรือ Oracle Database
การนำ PreparedStatement ในการเขียนโปรแกรมด้วยภาษา Java มาช่วยในการเขียน SQL Statement จะช่วยให้การจัดการกับ Query นั้นมีประสิทธิภาพสูงขึ้นมาก เพราะ PreparedStatement เป็นการสร้าง Object ของ SQL Statement ขึ้นมา 1 ชุด ที่สามารถนำไปใช้งานได้หลายครั้ง อีกทั้งยังสามารถใช้ตรวจสอบความถูกต้องต้องข้อมูลได้ด้วย เช่นในแต่ล่ะ Parameters สามารถกำหนดชนิด Data Type ของข้อมูลได้ เช่น เป็นแบบ INTEGER ก็ใช้ setInt เป็นแบบ STRING ก็ใช้ setString และในความสามารถของการทำงานจะมี Performance ดีกว่าการเขียน Query ธรรมดา ทั้งในด้านความเร็ว ด้าน Secure ที่ช่วยป้องกัน SQL Injection อัตโนมัติ
PreparedStatement pstmt = con.prepareStatement("INSERT INTO EMPLOYEES
(ID,SALARY) VALUES (?,?)");
pstmt.setBigDecimal(1, 153833.00)
pstmt.setInt(2, 110592)
รูปแบบการเขียน PreparedStatement บนภาษา Java จะใช้เครื่องหมาย ? เป็นตำแหน่งของ Parameters โดยสามารถกำหนด Parameters ตามตำแหน่งโดยเริ่มจาก 1 ซึ่งรองรับ Data Type ต่าง ๆ เช่น
setNull ( index, null )
setBoolean ( index, boolean )
setByte ( index, byte )
setDate ( index, date )
setTime ( index, time )
setInt ( index, int )
setLong ( index, long )
setShort ( index, short )
setFloat ( index, float )
setDouble ( index, double )
setString ( index, string )
setObject ( index, object )
การนำ PreparedStatement มาใช้งานหลายครั้ง
PreparedStatement pstmt = con.prepareStatement("INSERT INTO EMPLOYEES
(ID,SALARY) VALUES (?,?)");
// Query 1
pstmt.setBigDecimal(1, 153833.00)
pstmt.setInt(2, 110592)
pstmt.executeUpdate();
// Query 2
pstmt.setBigDecimal(1, 1234.00)
pstmt.setInt(2, 56789)
pstmt.executeUpdate();
จากตัวอย่างจะเห้นว่า Object ของ PreparedStatement สามารถนำมาใช้งานได้หลาย ๆ ครั้ง
Syntax for INSERT
PreparedStatement pre = connect.prepareStatement(sql);
สร้างชนิด Object ของ PreparedStatement เพื่อไว้สำหรับเก็บสร้าง Query และ Parameters
String sql = "INSERT INTO customer " +
"(CustomerID,Name,Email,CountryCode,Budget,Used) " +
"VALUES (?,?,?,?,?,?) ";
pre.setString(1, "C005");
pre.setString(2, "Chai Surachai");
pre.setString(3, "[email protected]");
pre.setString(4, "TH");
pre.setFloat(5, 1000000);
pre.setFloat(6, 0);
สร้างชุดคำสั่งของ SQL และการเพิ่ม Parameters ในแต่ล่ะตำแหน่ง และ ในแต่ล่ะชนิดของข้อมูล
pre.executeUpdate();
Execute เพื่อ Query ตัว PreparedStatement
Example การใช้ PreparedStatement ด้วยการ INSERT ข้อมูลลงในตาราง (Table)
ตัวอย่างข้อมูล
MyClass.java
package com.java.myapp;
import java.sql.PreparedStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class MyClass {
public static void main(String[] args) {
Connection connect = null;
PreparedStatement pre = null;
try {
Class.forName("com.mysql.jdbc.Driver");
connect = DriverManager.getConnection("jdbc:mysql://localhost/mydatabase" +
"?user=root&password=root");
String sql = "INSERT INTO customer " +
"(CustomerID,Name,Email,CountryCode,Budget,Used) " +
"VALUES (?,?,?,?,?,?) ";
pre = connect.prepareStatement(sql);
pre.setString(1, "C005");
pre.setString(2, "Chai Surachai");
pre.setString(3, "[email protected]");
pre.setString(4, "TH");
pre.setFloat(5, 1000000);
pre.setFloat(6, 0);
pre.executeUpdate();
System.out.println("Record Inserted Successfully");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Close
try {
if(connect != null){
pre.close();
connect.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Output
Record Inserted Successfully
บทความเกี่ยวกับ PreparedStatement กับ Database ต่าง ๆ
Java Ms Access mdb and PreparedStatement/Parameters Query (JDBC)
Java MySQL Database and PreparedStatement/Parameters Query (JDBC)
Java MariaDB Database and PreparedStatement/Parameters Query (JDBC)
Java SQL Server Database and PreparedStatement/Parameters Query (JDBC)
Java Oracle Database and PreparedStatement/Parameters Query (JDBC)
|