![]() |
||||
|
|
Timestamp型はタイムゾーンを持つため、JDBC接続時にタイムゾーンを指定する必要があります。
JDBCのURLにserverTimezone=XXXXを付けます。
例)JSTの場合
jdbc:mysql://ホスト/データベース名?serverTimezone=JST
MySQLにUTF-8で繋ぐには、JDBCのURLにuseUnicode=true&characterEncoding=utf8を付けます。
jdbc:mysql://ホスト/データベース名?useUnicode=true&characterEncoding=utf8
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を利用する際は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