[seasar-dotnet:924] Re: S2Dao.Net+SSCE SQL自動生成を利用したInsert時の日付型データの書式

Ryo Miyagi [E-MAIL ADDRESS DELETED]
2008年 8月 29日 (金) 20:24:43 JST


宮城です。

> S2の設定で日付型データの書式変換指定をできたりするものでしょうか?
> ご存知でしたらご教授ください。

S2Dao.NETのログファイルに出力されるSQL文と
SSCEに対して発行しているSQL文は異なります。

ログファイルのSQL文は、
デバッグ時等に、SQL文をコンソールから直接実行できるように
日時書式を変更できるようにしています。
日時書式の変更は、Diconファイルに下記の設定をすることで可能です。
  <component class="Seasar.Extension.ADO.Impl.BasicCommandFactory" >
    <property name="SqlLogDateFormat">"yyyy/MM/dd"</property>
    <property name="SqlLogDateTimeFormat">"yyyy/MM/dd HH:mm:ss.fff"</property>
  </component>

SSCEに対して発行しているSQL文では、
System.Data.IDbDataParameterパラメータを使用して値を設定しています。
パラメータを含むSQL文は、
INSERT INTO BOO  (dt, s1, s2) VALUES(@0, @1, @2)
のようになり、
Seasar.Extension.ADO.Types.BaseValueType.BindValueメソッドで
@パラメータに値をセットしています。

従って、SSCEのADO.NETデータプロバイダが
SSCEのDateTime型と.NET FrameworkのSystem.DateTime型との
適切なマッピングを実行してくれていれば、問題ないと思います。
※MSDNを見る限りだと適切にマッピングしているみたいです。

> Seasar.Framework.Exceptions.SQLRuntimeException: [ESSR0071]SQLException
> occured, because System.FormatException: @2 : 10 - 文字列は有効な DateTime
> ではありませんでした。
> なお外部SQLを用いたInsertは何故か成功しました。

自動生成されたSQLと外部SQLのカラム順が異なっていれば
早川さんのメールにあった
>・INSERT句のカラムリストと行値コンストラクタの並び順が
> テーブル定義と一致している必要がありそう(SSCE側制約)
の制約に引っかかっているのかもしれません。



2008/08/29 16:26 林 秀仁 <[E-MAIL ADDRESS DELETED]>:
> お世話になっております。早川です。
> 続報です。
>
> (2)Deleteはパスしましたが
> (3)Insertはパスしませんでした。
> 日時型データの書式変換に問題があるようです。
>
>
> 今回評価しているデータ型は以下の二種類です。
> SSEEでは VARCHAR, DATETIME
> SSCEでは NVARCHAR,DATETIMEです。
> (SSCEではVARCHARはサポートされない為、NVARCHARで代用です)
>
> S2dao(?)が自動生成する INSERT文はDebug.logによると
> INSERT INTO BOO  (dt, s1, s2) VALUES('2008-08-09 15.55.59', '10', '10')
> のように記録されています。
>
> SSCEに対して実行した結果の例外は
> ----
> Seasar.Framework.Exceptions.SQLRuntimeException: [ESSR0071]SQLException
> occured, because System.FormatException: @2 : 10 - 文字列は有効な DateTime
> ではありませんでした。
> ----
> が発生します。
>
> ※ちなみにこのSQLをSSEE相手に直接送るとデータが範囲外という例外になりますが、
> 実験プログラムにてS2を経由し、SSEEに対するINSERTは成功します。
> 恐らくS2の中で書式変換し、実際に発行しているSQLは別物なのかなと考えています。
>
>
> DB固有の実装で日付型データの書式表現がまちまちというのは有りうる話だと思います。
>
> S2の設定で日付型データの書式変換指定をできたりするものでしょうか?
> ご存知でしたらご教授ください。
>
>
> よろしくお願いします。
>
>> なお外部SQLを用いたInsertは何故か成功しました。
> 日付型データの書式変換処理が、自動生成と外部SQLで異なる経路を通ってるのかな?
>
>
> ----- Original Message ----- From: "kubo" <[E-MAIL ADDRESS DELETED]>
> To: <[E-MAIL ADDRESS DELETED]>
> Sent: Friday, August 29, 2008 1:52 PM
> Subject: [seasar-dotnet:921] Re:S2Dao.Net+SSCE の疎通中間結果報告
>
>
>> 久保(jflute)です。
>>
>> 早川さん、こんにちは
>>
>> 非常に良いフィードバックありがとうございます。
>> 貴重なメールとなりそうです。
>> また、とりあえずながら成功して良かったです。
>>
>> 2008/8/29 hayakawa jiro <[E-MAIL ADDRESS DELETED]>:
>>>
>>> お世話になっております。早川です。
>>>
>>> S2Dao.Net + SQL Server Compact Editon の組み合わせでの途中結果報告です。
>>> 途中結果報告としては「成功」です。
>>> S2Dao.Netの機能のうちSelectに関しての疎通確認が取れました。
>>>
>>> (私たちの)S2Dao.Netの利用予定機能として
>>> (1)Select
>>> (2)Delete
>>> (3)Insert
>>> (4)外部SQLファイルの実行
>>> (5)トランザクション制御
>>> を予定しており、あと(2)〜(5)の動作確認が取れれば、検討は完了です。
>>>
>>>
>
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>



-- 
Ryo Miyagi


seasar-dotnet メーリングリストの案内