[seasar-dotnet:576] Re: MDB に日付 / 時刻型の列に日付時刻を挿入できない
[E-MAIL ADDRESS DELETED]
[E-MAIL ADDRESS DELETED]
2007年 8月 10日 (金) 09:00:16 JST
近藤です。
宮城様、早速の回答ありがとうございます。
おっしゃるとおりに修正し、リコンパイルしたら正常に動作いたしました。
ありがとうございます。
ただ、対応予定がないと言うことが残念です。
ソース修正時に、同じようにOleDbCommandのときString→OleDbType.VarCharに変換するロジックを
見かけました。
同じ用に対応して頂けることを希望します。
ありがとうございました。
--- Ryo Miyagi <[E-MAIL ADDRESS DELETED]> wrote:
> 宮城です。
>
> 近藤さん、はじめまして。
>
> 解決策としては、
> 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 mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>
seasar-dotnet メーリングリストの案内