C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 14 を表示中)
■4956 / )  Re[2]: C# & SQLite /transactio
□投稿者/ kaburk (2回)-(2007/06/29(Fri) 13:42:27)
2007/06/29(Fri) 13:48:27 編集(投稿者)
No4899 (はつね さん) に返信

返信ありがとうございます。

> ADO.NET 2.0 Provider for SQLiteにはTransactionないの?

Transactionはあるので、TableAdapterから利用したいという訳です。

色々調べて
http://www.ailight.jp/blog/unaap/archive/2007/02/13/13566.aspx
という記述を見つけたので、C#&SQLiteへ変換して試してみました。

変換したソースはこちらです。
http://www5.uploader.jp/dl/kaburk/kaburk_uljp00002.zip.html

しかし、動きそうでどうにも動かない。

>    private SQLiteDataAdapter GetAdapter(object tableAdapter)
>    {
>        Type type = tableAdapter.GetType();
>        PropertyInfo adapterProperty = type.GetProperty("_adapter", BindingFlags.NonPublic | BindingFlags.Instance);
>        SQLiteDataAdapter adapter = (SQLiteDataAdapter)adapterProperty.GetValue(tableAdapter, null);
>        return adapter;
>    }

上記の関数にて _adapter が取得できないようです。
「オブジェクト参照がオブジェクトインスタンスに設定されていません。」となりnullになってしまって。何故だろう。
GetProperty出来ない理由を何方かご存知ありませんでしょうか?

とりあえず_adapter を Adapter とすると取得できるのですが

>    private void SetAdapter(object tableAdapter, SQLiteDataAdapter adapter)
>    {
>        Type type = tableAdapter.GetType();
>        PropertyInfo adapterProperty = type.GetProperty("Adapter", BindingFlags.NonPublic | BindingFlags.Instance);
>        adapterProperty.SetValue(tableAdapter, adapter, null);
>    }

にて、「Property Setメソッドが見つかりません。」エラーです。読取専用なんですかね。

>>トランザクション管理に System.Transactions というのがあるようで、試しに
> これはMS-DTCを使ったものですから、SQLiteが対応していないとダメですね。対応しているの?

対応しているかどうかは不明ですが、 MS-DTCは使わない方向で考えていこうと思います。

ということでまだ解決に至ってないんですが、少し先が見えてきました。
引き続き何方かご教授お願いします。

返信 編集キー/


管理者用

- Child Tree -