Menu アクセス総数:353887 今日:89 昨日:117
メモ  > Java > JDBC(MySQL)

文字コードをUTF-8で接続する。
MySQLにUTF-8で繋ぐには、JDBCのURLにuseUnicode=true&characterEncoding=UTF-8を付けます。
jdbc:mysql://ホスト/データベース名?useUnicode=true&characterEncoding=UTF-8
DATE型カラムがNULLの場合の挙動を指定する。
DATE型のカラム(DATEやTIMESTAMPなど)がNULL(0000-00-00 ...)の場合デフォルトでは例外が発生します。
例外では非常に困る場合は、挙動を変更するオプションがあります。
JDBCのURLにzeroDateTimeBehavior=convertToNullを付けます。
jdbc:mysql://ホスト/データベース名?zeroDateTimeBehavior=convertToNull
convertToNullの部分がオプションになりますが、いくつかあります。
・exception ( デフォルト ) - SQLState の S1009 で SQLException を投入。
・convertToNull - データの代わりに NULL を戻す。
・round - データを、0001-01-01 という最も近い整数に丸める。
 
参考)http://dev.mysql.com/doc/refman/5.1/ja/connector-j-installing-upgrading.html
 
S2Daoでの設定
S2Daoを利用する際はjdbc.diconなどにJDBCのURLを設定するかと思いますが
以下のようにプロパティを設定するときは&を&にしてあげる必要があります。
jdbc:mysql://ホスト/データベース名?useUnicode=true&characterEncoding=UTF-8
フェッチの設定
MySQLでフェッチを利用するには以下のようにフェッチサイズを指定します。
stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY
                           , java.sql.ResultSet.CONCUR_READ_ONLY);
stmt.setFetchSize(Integer.MIN_VALUE);
setFetchSizeでInteger.MIN_VALUEを指定しているのがポイントです。
Oracleのように自由に数値を指定できるわけではないので注意が必要です。
 
参考)http://dev.mysql.com/doc/refman/5.1/ja/connector-j-reference-implementation-notes.html
 
フェッチ時の注意
MySQLでフェッチを利用したSQLを発行すると1行ごとに読み込めますが
すべて読み込む前に他のSQLを発行すると例外が発生します。(同一コネクション中で)
 

関連するページ

メモ  > JavaScript > 文字列関連
メモ  > PHP > 変数関連
メモ  > Java > 文字列関連
メモ  > Java > java.text.MessageFormat
ソフトウェア  > Java > Jconv
 



RSS 1.0 RSS 2.0 Atom
Copyright © 2007-2014 小物置き場.