MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

JDBCのexecute()・executeQuery()・executeUpdate()メソッドの違いとは?使い分けを徹底解説

Statementオブジェクトを作成した後は、Statementインターフェースに用意された3つの実行メソッド、すなわちexecute()executeUpdate()executeQuery()のいずれかを使ってSQL文を実行できます。これらのメソッドは用途も戻り値も異なるため、実行したいSQLの種類に応じて適切なメソッドを選択することが重要です。

execute()メソッド

execute()メソッドは、CREATE TABLEなどのDDL(データ定義言語)文を含む任意のSQL文を実行するために使用されます。戻り値はboolean型で、最初の結果がResultSetオブジェクトとして取得できる場合はtrue、そうでない場合はfalseを返します。

サンプルコード

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class Example {
   public static void main(String args[]) throws SQLException {
      // ドライバの登録
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      // 接続の確立
      String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      // Statementの作成
      Statement stmt = con.createStatement();

      // SQL文の実行
      String createTable = "CREATE TABLE Employee( "
         + "Name VARCHAR(255), "
         + "Salary INT NOT NULL, "
         + "Location VARCHAR(255))";
      boolean bool = stmt.execute(createTable);

      System.out.println(bool);
   }
}

実行結果

Connection established......
false

この例ではCREATE TABLE文を実行しているため、結果セットは返されず、falseが出力されます。

executeUpdate()メソッド

executeUpdate()メソッドは、INSERT、UPDATE、DELETEといったデータ操作言語(DML)文を実行するために使用されます。戻り値はint型で、SQL文の実行によって影響を受けた行数を表します。

サンプルコード

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class ExecuteUpdateExample {
   public static void main(String args[]) throws SQLException {
      // ドライバの登録
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      // 接続の確立
      String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      // Statementの作成
      Statement stmt = con.createStatement();
     
      String insertData = "INSERT INTO Employee("
         + "Name, Salary, Location) VALUES "
         + "('Amit', 30000, 'Hyderabad'), "
         + "('Kalyan', 40000, 'Vishakhapatnam'), "
         + "('Renuka', 50000, 'Delhi'), "
         + "('Archana', 15000, 'Mumbai')";

      int i = stmt.executeUpdate(insertData);
      System.out.println("Rows inserted: "+i);
   }
}

実行結果

Connection established......
Rows inserted: 4

4件のレコードを挿入したため、戻り値として「4」が表示されています。

executeQuery()メソッド

executeQuery()メソッドは、SELECT文のように表形式のデータを返すSQL文を実行するために使用されます。戻り値はResultSetクラスのオブジェクトで、取得したデータを1行ずつ順番に処理できます。

サンプルコード

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class ExecuteQueryExample {
   public static void main(String args[]) throws SQLException {
      // ドライバの登録
      DriverManager.registerDriver(new com.mysql.jdbc.Driver());
      // 接続の確立
      String mysqlUrl = "jdbc:mysql://localhost/sampleDB";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      // Statementの作成
      Statement stmt = con.createStatement();

      // データの取得
      ResultSet rs = stmt.executeQuery("Select *from Employee");

      while(rs.next()) {
         System.out.print("Name: "+rs.getString("Name")+", ");
         System.out.print("Salary: "+rs.getInt("Salary")+", ");
         System.out.print("City: "+rs.getString("Location"));
         System.out.println();
      }
   }
}

実行結果

Connection established......
Name: Amit, Salary: 30000, City: Hyderabad
Name: Kalyan, Salary: 40000, City: Vishakhapatnam
Name: Renuka, Salary: 50000, City: Delhi
Name: Archana, Salary: 15000, City: Mumbai

3つのメソッドの比較まとめ

メソッド主な用途戻り値
execute()DDL文など任意のSQL文boolean(ResultSetが取得可能かどうか)
executeUpdate()INSERT / UPDATE / DELETEint(影響を受けた行数)
executeQuery()SELECT文ResultSet(表形式のデータ)

このように、実行したいSQLの種類に合わせてメソッドを使い分けることで、意図した結果を正しく受け取ることができます。特にSELECT文にはexecuteQuery()、更新系の処理にはexecuteUpdate()を使うのが基本です。

  1. JavaScriptにおける関数とメソッドの違いとは?わかりやすく解説

    JavaScriptにおいて、関数とメソッドは本質的には同じものです。両者の違いは、メソッドがオブジェクトのプロパティとして定義された関数であるという点にあります。つまり、独立して定義されたものを「関数」、オブジェクトに紐づけられたものを「メソッド」と呼びます。 JavaScriptの関数の基本形 まず、一般的な関数の定義方法を見てみましょう。 function functionname(param1, param2){ // 処理内容 } JavaScriptのメソッドの例 メソッドは、オブジェクトに関連付けられた関数です。次の例では、employeeオブジェクトの中にdetails

  2. Tkinterのfocusメソッドとfocus_setメソッドの違いとは?使い方をわかりやすく解説

    Tkinterにおける「フォーカス」とは、現在キーボード入力を受け付けているウィジェットやウィンドウを指します。フォーカスを持つことで、マウス操作やキーストロークが特定のウィジェットに限定され、意図しない入力を防ぐことができます。特定のウィジェットに入力フォーカスを与えてアクティブな状態にしたい場合は、focus_set() メソッドを使用します。なお、focus() メソッドは focus_set() の別名(エイリアス)として扱われることが多く、実質的には同じ動作を行います。focus_set() メソッドの特徴focus_set() は、そのウィジェットが属するウィンドウ自体がフォーカス