[seasar-dotnet:574] Re: MDB に日付 / 時刻型の列に日付時刻を挿入できない

Ryo Miyagi [E-MAIL ADDRESS DELETED]
2007年 8月 9日 (木) 18:49:47 JST


宮城です。

近藤さん、はじめまして。

解決策としては、
Seasar.Extension.ADO.Types.BaseValueTypeクラスのBindValueメソッドに
次のソースを追加してください。

    if ("OleDbCommand".Equals(cmd.GetType().Name) && dbType == DbType.DateTime)
    {
        // DbType.DateTimeを指定するとOleDbType.DBTimeStampを指定したことになり、
        // JETでは認識できない。
        // そのため、OleDbType.Dateを明示的に指定する。
        OleDbParameter oleDbParam = parameter as OleDbParameter;
        oleDbParam.OleDbType = OleDbType.Date;
    }

上記のソースは、
MDBとの接続アダプタであるJETがデータ型を正しく認識できないのが原因と思われるので
今のところ、Seasar.NETに取り込む予定はありません。

以上です


> はじめまして、近藤と申します。
> 
> MDBをデータベースとしてS2Dao.Netを利用しています。
> 今までOracleでは、なんら問題なく使えていたのですが、
> 
> 日付/時刻型の列にDateTime.Nowを挿入しようとすると以下のエラーが出ます。
> [ESSR0071]SQLで例外が発生しました。理由はSystem.Data.OleDb.OleDbException: 抽出条件でデータ型が一致
> しません。
> 
> DateTime.Todayでは大丈夫のようです。
> 
> 本来は、TimestampProperty属性で排他制御を行わせたいと考えていたのですが
> Mdbの日付/時刻型に時間を持った値をセットできないため困っています。
> 何か解決策があるのでしょうかお教え下さい。
> 
> 再現方法は、http://codezine.jp/a/article/aid/805.aspxにあるサンプルをダウンロードし、
> Program.csのbook.Editdate = DateTime.Today;の部分をbook.Editdate = DateTime.Now;
> にしたら再現すると思います。
> 
> 環境は、
> Windows XP Professional SP2
> Visual Studio 2005 Professional SP1
> S2Dao.Net 1.0.1と1.1.0で確認
> 
> 以上 よろしくお願いします。
> 
> 
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet




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