JavaでDiffgram生成

先日のエントリに対して。

やはりXMLに問題があった。.NET Reflectorで当該メソッドを調べたところ、Diffgramはエラー行(error要素)が存在した場合、そのエラー行のid(id属性)で書かれているのと同じidを持つ、元々のデータセット行が存在していることを「大前提」にXMLを読み込んでいるようだ。存在チェックなどは一切しないため、元々の行が無い場合は、即NullReferenceExceptionとなってしまうらしい。

この問題は解決したが、ケースとして「クライアント側でデータセットに新規でデータを登録、それをサーバ側にコミットしようとしたところ、サーバ側でInsert処理に失敗した」というDiffgramをJava側で生成すると今度は

Exception: System.Data.DataException
Message: diffGram を読み込めません。'sql' ノードが見つかりません。

と、また例外が発生してDataSet::ReadXmlが失敗する。この時、サーバ側(java側)で生成しているDiffgramはこんな感じだ。


    
        
            Kazzz
            日本のどこか
            53/27/2006 02:53:55
        
    
    
        
    

"'sql' ノードが見つかりません"って、そもそもdiffgramにsqlノードなんてあったか?
さて、また.NET Reflectorの出番だ。