JDBC APIを使ってMySQLのデータベースを選択・切り替える方法
MySQLでは、USEクエリを実行することで、現在操作対象となっているデータベースを簡単に切り替えることができます。この記事では、JDBC APIを使用してMySQL上で別のデータベースへ移行(選択)する方法を解説します。
基本構文
MySQLでカレントデータベースを変更するには、以下のようにUSE文を使用します。
USE データベース名;
JDBCでデータベースを切り替える手順
JDBC APIを使って現在のデータベースを変更するには、次の手順に従います。
ドライバの登録:DriverManagerクラスのregisterDriver()メソッドを使ってドライバクラスを登録します。引数としてドライバクラス名を渡します。
接続の確立:DriverManagerクラスのgetConnection()メソッドを使用してデータベースに接続します。URL(String)、ユーザー名(String)、パスワード(String)をパラメータとして渡します。
Statementオブジェクトの作成:ConnectionインターフェースのcreateStatement()メソッドを使って、Statementオブジェクトを作成します。
クエリの実行:Statementインターフェースのexecute()メソッドを使って、
USEクエリを実行します。
サンプルコード
以下は、MySQLに接続し、「mydatabase」という名前のデータベースを選択するJDBCプログラムの例です。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class ChangeDatabaseExample {
public static void main(String args[]) throws SQLException {
// ドライバの登録
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
// 接続の取得
String mysqlUrl = "jdbc:mysql://localhost/";
Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
System.out.println("接続が確立されました......");
// Statementの作成
Statement stmt = con.createStatement();
// USEクエリ
String query = "USE mydatabase";
// クエリの実行
stmt.execute(query);
System.out.println("データベースが切り替わりました......");
}
}
実行結果
Connection established...... Database changed......
URLで直接データベースを指定する方法
上記の方法に加えて、接続URLの末尾にデータベース名を指定することでも、目的のデータベースを選択・切り替えることができます。
// 接続の取得 String url = "jdbc:mysql://localhost/mydatabase"; Connection con = DriverManager.getConnection(url, "root", "password");
この方法では、接続時点から指定したデータベースがデフォルトとして設定されるため、別途USE文を実行する必要がありません。状況に応じて使い分けるとよいでしょう。
-
JDBCでデータベースからファイル(CLOB)を取得する方法
JDBCでデータベースからファイルを取得するには?データベースには、ファイルの内容をCLOB型として格納することが一般的です。ResultSetインターフェースには、このCLOB型のデータを取得するためのgetClob()メソッドとgetCharacterStream()メソッドが用意されています。どちらのメソッドも、引数として列のインデックスを表す整数、または列名を表す文字列を受け取り、指定された列の値を取得します。両者の違いは、getClob()メソッドがClobオブジェクトを返すのに対し、getCharacterStream()メソッドはCLOB型の内容を保持するReaderオブジェクト
-
JDBCを使ってMySQLデータベースにファイルを保存・挿入する方法
一般的に、ファイルの内容はMySQLデータベースでは Clob 型(TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT)のカラムに保存されます。 JDBCはClob型をサポートしており、これを利用することでファイルの内容をデータベースのテーブルに格納できます。 PreparedStatement インターフェースが提供する setCharacterStream() メソッドは、パラメータのインデックス(位置)を表す整数と、Readerオブジェクトを引数として受け取ります。 このメソッドを使うと、指定したインデックスのプレースホルダ(?)に対して、Readerオブジェクト(ファイ