JDBC의 ReadyStatement란 무엇입니까?

WBOY
풀어 주다: 2023-09-11 09:09:09
앞으로
1453명이 탐색했습니다.

JDBC의 ReadyStatement란 무엇입니까?

PreparedStatement 인터페이스는 여러 번 실행될 수 있는 미리 컴파일된 SQL 문을 나타내는 Statement 인터페이스를 확장합니다. 매개변수화된 SQL 쿼리를 허용하며 이 쿼리에 0개 이상의 매개변수를 전달할 수 있습니다.

처음에 이 문은 매개 변수 대신 자리 표시자 "?"를 사용하지만 나중에 매개 변수를 전달하여 PreparedStatement 인터페이스의 setXXX() 메서드를 사용하여 이를 동적으로 구현할 수 있습니다.

PreparedStatement 만들기

Connection 인터페이스의 prepareStatement() 메서드를 사용하여 PreparedStatement(인터페이스)를 만들 수 있습니다. 이 메소드는 쿼리(매개변수화)를 받아들이고 preparedStatement 객체를 반환합니다.

이 메소드를 호출하면 Connection 객체는 주어진 쿼리를 데이터베이스로 보내 컴파일하고 저장합니다. 쿼리가 성공적으로 컴파일되면 개체만 반환됩니다.

쿼리를 컴파일하려면 데이터베이스에 값이 필요하지 않으므로 (0개 이상) 자리 표시자 (물음표 ” ?”)를 사용하여 쿼리의 값을 바꿀 수 있습니다.

예를 들어 데이터베이스에 Employee라는 테이블이 있으면 다음 쿼리를 사용하여 생성합니다.

CREATE TABLE Employee(Name VARCHAR(255), Salary INT NOT NULL, Location VARCHAR(255));
로그인 후 복사

그러면 아래와 같이 준비된 문을 사용하여 값을 삽입할 수 있어야 합니다.

//Creating a Prepared Statement
String query="INSERT INTO Employee(Name, Salary, Location)VALUES(?, ?, ?)";
Statement pstmt = con.prepareStatement(query);
로그인 후 복사

자리 표시자 값 설정

PreparedStatement인터페이스는 미리 컴파일된 문을 설정하기 위해 setInt(), setFloat(), setArray(), setDate(), setDouble() 등과 같은 여러 setter 메서드를 제공합니다. 자리 표시자의 값입니다.

이 메서드는 두 개의 매개 변수를 허용합니다. 하나는 자리 표시자 위치 인덱스를 나타내는 정수 값이고, 다른 하나는 삽입해야 하는 값을 나타내는 int, String, float 등입니다.

다음 예에서는 setter 메소드를 사용하여 위에서 생성한 문의 자리 표시자 값을 설정할 수 있습니다.

pstmt.setString(1, "Amit");
pstmt.setInt(2, 3000);
pstmt.setString(3, "Hyderabad");

pstmt.setString(1, "Kalyan");
pstmt.setInt(2, 4000);
pstmt.setString(3, "Vishakhapatnam");

pstmt.setString(1, "Renuka");
pstmt.setInt(2, 5000);
pstmt.setString(3, "Delhi");

pstmt.setString(1, "Archana");
pstmt.setInt(2, 15000);
pstmt.setString(3, "Mumbai");
로그인 후 복사

Prepared 문 실행

PreparedStatement 개체를 만든 후 execute() 중 하나를 사용할 수 있습니다. 이를 실행하기 위한 preparedStatement 인터페이스의 메소드, 즉 execute(), executeUpdate() 및 excuteQuery()입니다.

  • execute(): 이 메서드는 현재 준비된 문 개체에서 일반 정적 SQL 문을 실행하고 부울 값을 반환합니다.

  • executeQuery(): 이 메소드는

  • executeUpdate()를 실행합니다. 이 메소드는 현재의 Ready에서 insert update, delete 등의 SQL DML 문을 실행합니다. 영향을 받은 행 수를 나타내는 정수 값을 반환합니다.

위에서 생성한 준비된 문을 다음과 같이 실행할 수 있습니다.

Example

이 예에서는 준비된 문을 사용하여 "Employees"라는 테이블에 값을 삽입하려고 합니다.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class PreparedStatementExample {
   public static void main(String args[]) throws SQLException {
      //Registering the Driver
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());

      //Getting the connection
      String mysqlUrl = "jdbc:mysql://localhost/testdb";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");

      //Creating a Prepared Statement
      String query = "INSERT INTO Employees(Name, Salary, Location) VALUES (?, ?, ?)";
      PreparedStatement pstmt = con.prepareStatement(query);

      pstmt.setString(1, "Amit");
      pstmt.setInt(2, 3000);
      pstmt.setString(3, "Hyderabad");

      pstmt.setString(1, "Kalyan");
      pstmt.setInt(2, 4000);
      pstmt.setString(3, "Vishakhapatnam");

      pstmt.setString(1, "Renuka");
      pstmt.setInt(2, 5000);
      pstmt.setString(3, "Delhi");

      pstmt.setString(1, "Archana");
      pstmt.setInt(2, 15000);
      pstmt.setString(3, "Mumbai");

      int num = pstmt.executeUpdate();
      System.out.println("Rows inserted ....");
   }
}
로그인 후 복사

Output

Connection established......
Number of rows inserted: 1
로그인 후 복사

데이터베이스의 유효성을 검사하면 테이블에 삽입된 값을 관찰할 수 있습니다.

+---------+--------+----------------+
| Name    | Salary | Location       |
+---------+--------+----------------+
| Amit    | 30000  | Hyderabad      |
| Kalyan  | 40000  | Vishakhapatnam |
| Renuka  | 50000  | Delhi          |
| Archana | 15000  | Mumbai         |
+---------+--------+----------------+
5 rows in set (0.00 sec)
로그인 후 복사

위 내용은 JDBC의 ReadyStatement란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿