8

ユーザーが結果に表示するフィールドを選択することに基づいて、クエリを動的に作成しています。問題は、データベースからデータを取得する場合、通常はgetXXX()メソッドを使用して適切な型を取得することです。ただし、この場合、列がランダムに選択されるため、適切なタイプが何であるかはわかりません。

データ型 XXX を指定せずに文字列形式でデータを取得する方法はありますか? MySQL とサーブレットを使用しています。

4

2 に答える 2

12

一般的なgetObjectメソッドを使用できます。

この ResultSet オブジェクトの現在の行にある指定された列の値を Java プログラミング言語の Object として取得します。

このメソッドは、指定された列の値を Java オブジェクトとして返します。Java オブジェクトの型は、JDBC 仕様で指定された組み込み型のマッピングに従って、列の SQL 型に対応するデフォルトの Java オブジェクト型になります。値が SQL NULL の場合、ドライバーは Java null を返します。

于 2013-03-09T12:19:28.050 に答える
0

私の知る限りgetString()、Java String オブジェクトで結果が必要な場合は、単純に使用できます。私は、MySQL ドライバーが、あなたが指定した Java オブジェクトのバイト ストリームのデシリアライズを処理すると思いますgetXXX()。次の init スクリプトがあるとします。

DROP TABLE IF EXISTS thing;

CREATE TABLE thing (
  a_int int,
  a_string text,
  a_date date
);

INSERT INTO thing (a_int, a_string, a_date)
   VALUES ('1234', 'Hello world', CURRENT_DATE() );

そしてコード:

public static void main(String[] args) throws Exception {
    MysqlDataSource db = new MysqlDataSource();
    db.setDatabaseName("test");
    Connection conn = db.getConnection("test", "test");

    ResultSet res = conn.prepareStatement("SELECT * FROM thing").executeQuery();
    res.next();
    System.out.println("Get a int as a string: " + res.getString("a_int"));

}

単に印刷しGet a int as a string: 1234ます。a_date列を Java として取得することもでき、私のマシンではint変換されます。そのため、ドライバーが型指定されていないバイト ストリームをサーバーから取得した2013にバインドが行われるようです。列を試した場合など、変換が失敗することがあります。getInt()TEXT

于 2013-03-09T12:32:02.760 に答える