2009-07-31 15 views
0

jdbcを使用してデータを挿入するこのメソッドは、java型に従って値を挿入します。このような何か:varcharでプリペアドステートメントにnullを設定するとどうなりますか?

Object o = map.get(key); 

if(o == null) { 
    // setNull(index); 
} else if(o instanceof String) { 
    // setString(index, (String) o); 
} else if(o instanceof Timestamp) { 
    // setTimestampt(index, (Timestamp) o); 
} else if(o instanceof Integer) { 
    // setInt(index, (Integer) o); 
} 
    index++; 

(それがすべてコメント化されて横に:P)それはかかわらず、問題がある O の値がnullの場合

を、私は"setNull(int, int)"メソッドを使用するrequieredんだけど、

... :私は、SQLタイプを指定する必要がありますが、パラメータのSQL型を指定する必要があります。

しかし...私はタイプを知らないので、私はいつも私がvarchar型でプリペアドステートメントにはnullに設定した場合どうなるどうVARCHAR(理由だけで)

setNull(index,Types.VARCHAR); . 

使用を検討しています常に?

私が使用しています。Oracle JDBドライバで

Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production 

を:

11.1.0.7.0-Production (ojdbc6.jar) 

選択肢でしょうか?

答えて

2

ResultSetMetaDataインターフェイスでデータベースに質問して列の種類を取得できませんか?

+0

少し複雑です。私は余分な余分なダイナミズム(並べ替え)で周りをだますので、私は実際に列の正確な位置を持っていません。しかし、代わりに私はカラム名に基づいてポジションを設定しています(EMPL_IDは20番目のカラムかもしれませんが、私はそれを私のpstmtの1stのように設定しています.....) – OscarRyz

+0

待って...意味があります.... mmmhhh ....私はしばらくそれを噛んでみましょう...もし私が(1 * 0のテーブルからselect *を選択し、ResultSetMetadataを取得し、columnnameを使って型を取得するとどうなりますか?いいえ、別のMap を見ています...)... – OscarRyz

+0

現在値を取得するのではなく、値と型を入力として取得できませんか? – OpenSource

関連する問題