JDBC 4.0

複数文字コードを使ったテーブルへのINSERTの件 再考

WikiにIntroducerを使って以下のようにC/Jは実行すべきと書いていたけれども, INSERT INTO t1 (c1, c2) VALUES ('ああ', _utf8 'ああ');これは間違いで,こうでなければ成らない. INSERT INTO t1 (c1, c2) VALUES ('ああ', _utf8 '縺ゅ≠');なぜかというと…

ResultSet.getNXXX() は対象Fieldのcharsetがutf8以外の場合はSQLException

投げますよ.理由 今回のNATIONAL CHARACTER SET CONVERTIONにより追加定義されたAPIは,"NATIONAL CHARACTER"型のフィールドへアクセスするために定義されたAPIである.他の文字コードを使用するフィールドへのアクセスは従来通りのAPIで十分に可能なわけで…

NATIONAL CHARACTER SET CONVERSION 実装完了

終わったー!! 実質1ヵ月半かかったw 駄目だトロ過ぎるw 最初はかなり力不足だったからなw コーディング自体はほとんど最後の1週間でやってるし.MM師匠が自分でやったら3日くらいで終わるのか? 生産性10倍の法則 orz【BLOBおよびCLOBのサポートを強化…

UpdatableResultSet.updateNXXX()完了

さてと,後残るは・・・ CallableStatement.setNXXX() CallableStatement.getNXXX() SQLInput.readNXXX() SQLOutput.writeNXXX() 結構あるなー.結局NATIONAL CHARACTER対応だけで手一杯,しかもギリギリ終わるかどうかってところだ.明日1日で終わらせんと.JB…

仕様書の奇妙な記述の件

まあ細かい話なんでどうでもいいんですけど,JDBC 4.0 Specの150ページ目. If an update method is called on a ResultSet whose concurrency level is ResultSet.CONCUR_READ_ONLY, then a SQLException must be thrown.The method updateRow is used to a…

仕様書 翻訳追加

ResultSet.updateNString/updateNCharacterStream/updateNClobを追加実装するにあたって,念のため仕様書を熟読してみた.参考にはなった. 16. 結果セットResultSetインタフェースはクエリの実行結果の取得と操作のためのメソッドを提供します. 16.2. Resu…

新クラスNClobの追加他

http://d.hatena.ne.jp/mir/20060219/p2 にて書いていた内容にテストコードをつけてsvnへcommit.こんなに簡単なコードでいいのだろうかと自問してしまうくらい簡単なコード.でも考えた結果,それしか要らんということになったので・・・.今回の狙いは,新ク…

PreparedStatement.setNClob()の実装

まーにょとやって終了.client-side PreparedStatementでは2GB制限が存在します. server-side PreparedStatementではsetNClob(int,Reader,long)にて文字通りストリームを渡せば理論上無限(その前にJVM/OS/HW的限界に達するけど)大のデータを送れます.次…

ResultSet.getNString()/getNCharacterStream()/getNClob()の実装

まーにょ.終了.PreparedStatement.execute系を使用するとisBinaryEncodedフラグが立つ.そこだけちょっと注意して終わりか.今日は偉い進んだな.さてお腹へったー.

NClob,Connection.createXLob()について

NYからSeattleまでの飛行中にちょこちょこ.これらについては特に難しいことはないはず.さくっと終わらせたい.詳細は以下の追加分にて http://ikda.net/fswiki/wiki.cgi?page=Connector%2FJ+5%2E0 http://ikda.net/fswiki/wiki.cgi?page=Connector%2FJ+5%2…

Connectionインタフェース

あー,createBlob他ってJDBC 4.0で追加されたんか.

long型の恐怖

いま気づいたんだけど,パラメータに使用するReaderとかInputStreamの長さを指定する引数にlong型が使用されているのってJDBC 4.0ではいっぱいある(追加されたメソッド).JDBC 3.0まではPreparedStatement.setBlobってのは(int, Blob)しかなかった.でもJD…

PreparedStatement.setNCharacterStream()の引数の件(その2)

JDBC 4.0のExpertGroup Memberの一人であるMark Matthews氏にこの件について聞きました. void setNCharacterStream(int, Reader, long)これは第3引数はlongでなければならないということです.何故か?LOBは2^32バイト以上のサイズを取り得るから.(2^32=4G…

JDBC 4.0仕様書の日本語訳 追加

「第15章 高度なデータ型」の中の第3節「BlobおよびClobオブジェクト」の部分の日本語訳を作成・追加しました.http://ikda.net/fswiki/wiki.cgi?page=JDBC+4%2E0+%BB%C5%CD%CD%BD%F1#p13NClobに関する記述を日本語で見るために訳したのですが,まあ予想通り…

PreparedStatement.setNCharacterStream()の引数の件

JDBC 4.0 Public ReviewのJavaDocによればこのメソッドの引数は void setNCharacterStream(int, Reader, long) なんですがこれは以下であるべきではないでしょうか void setNCharacterStream(int, Reader, int) 何故なら類似メソッドのPreparedStatement.set…

新インタフェースNClobについて

public interface NClob extends ClobClobに対する追加メソッド定義などは無し.継承宣言のみ.以下JDBC 4.0 JavaDocより適当和訳↓NClobはSQLのNCLOB型をJavaプログラミング言語にマッピングする際に使用するインタフェースです.SQLのNCLOBはキャラクタラー…

NATIONAL CHARACTER対応について

#日記の日付表示基準を変えたので4日間も経ってしまったかのような感じですが現地時間的には日曜日をはさんで2日ぶりの更新です.今はこちらは月曜日ですが今日は早朝から活動してます.さて,前回の件をMark Matthews氏に話しました.とりあえずクライアン…

National Characterが導入されたわけについて考える

National CharacterはSQL1992で既に導入されていた.であるならばSQL2003対応を謳うJDBC 4.0よりももっと前のバージョンで対応していなければならなかったはずだが,まあ諸事情により実際には導入されていなかった.JDBC 3.0まではキャラクタセットに関する…

National Character Setとは

JDBC 4.0でPreparedStatementインタフェースとResultSetインタフェースに"National Character Set"関連の仕様追加により結構な数のメソッドが追加になっており,これを調べようと思ったのですが,この"National Character Set"が何なのかというのがまず良く…

RowIdのC/J実装について

【ROWIDデータ型】 java.sql.RowIdデータ型が追加されました.これによりJDBCを利用するプログラムはSQLのROWIDにアクセスすることが可能となります. Mark Matthews氏と話しましたが,このRowIdについてはやはり「MySQLサーバにROWIDが実装されていない」の…

各国キャラクタセット変換

翻訳追加しました. http://ikda.net/fswiki/wiki.cgi?page=JDBC+4%2E0+%BB%C5%CD%CD%BD%F1 各国キャラクタセットの変換SQL2003は各国キャラクタセット型のサポートを提供しています.次のJDBCのデータ型は各国キャラクタセット型へアクセスする際に使用しま…

仕様書の翻訳

Wikiで翻訳作成開始しました.ただし,JDBC4.0SpecはPDFで220ページもあるので,もちろん全部翻訳は無理です.とりあえず目的とか背景とか4.0で何が変わるのかとかを簡潔に説明しているChapter1から3くらいまでは翻訳します.その後は,必要に応じて追加する…

これで何が変わる?どうなるの?

というのの概要が第3章に書いてあったんですが,以下その和訳を貼り付けときます. http://ikda.net/fswiki/wiki.cgi?page=JDBC+4%2E0+%BB%C5%CD%CD%BD%F1アノテーションの利用ってのはまあJavaEE5全般的にそうだから良いとして,日本人的には「国別のキャラ…

流行に逆らってみる

巷ではWEB 2.0が持てはやされ流行っていますが、ここは一つその流れから最も遠いパーシステンス層についてちょっと調べてみることにします.JDBC-4.0は2005年のJavaONEでセッション聞いて以来放置してましたし.それに"JDBC-4.0"というと"WEB 2.0"よりも強そ…