DOBON.NETプログラミング道掲示板

■34581 / 親記事)  DataObjectの使いまわし
  
□投稿者/ Vetty 一般人(11回)-(2020/11/21(Sat) 11:38:06)
  • アイコン環境/言語:[Windows10,VB] 
    分類:[.NET] 

    現在 
    'データベース接続オブジェクト
    Private dbcon1 As New OleDb.OleDbConnection
    Private dbcon2 As New OleDb.OleDbConnection
    Private dbcon3 As New OleDb.OleDbConnection
    'データセット
    Private datset1 As New DataSet
    Private datset2 As New DataSet
    Private datset3 As New DataSet
    'データアダプタ
    Private dbadpt1 As New OleDb.OleDbDataAdapter
    Private dbadpt2 As New OleDb.OleDbDataAdapter
    Private dbadpt3 As New OleDb.OleDbDataAdapter
    'コマンド
    Private dbcmdSelect1 As New OleDb.OleDbCommand
    Private dbcmdSelect2 As New OleDb.OleDbCommand
    Private dbcmdSelect3 As New OleDb.OleDbCommand

    という構成でひとつのMDBファイル(古いアクセス形式)内の
    3つのテーブルをそれぞれ専用のDataGridViewに表示しています。
    (テーブル間の接続はしていない単純なSelect文(3つとも)です)

    表示されている3つのDataGridView上でそれぞれ追加削除訂正して
    「書込みボタン」操作で

    'コマンド自動ビルダ
    Dim cmdbld1 As New OleDb.OleDbCommandBuilder(dbadpt1)
    Dim cmdbld2 As New OleDb.OleDbCommandBuilder(dbadpt2)
    Dim cmdbld3 As New OleDb.OleDbCommandBuilder(dbadpt3)

    を使って更新しているのですが(動作はうまくしているようです)、
    何か無駄にObjectが多いように感じます。

    以前の質問(https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=34574&rev=&no=0)のようなListViewの場合は
    Select文とListViewの関係は表示終了時点で切れているので
    次のListViewの表示にも同じDataObjectを使っても問題ないと思います。

    今回の場合、3つがそれぞれ並行して動作し続けているのでむやみに
    使いまわしをするのもよくないとは思いますが、すべて個別にDataObject
    をつくるのも無駄があるように感じます。
    (OleDbConnection だけはひとつでいいように思いますが・・・)

    やはり個別に作るべきなのでしょうか?
マルチポストを報告
違反を報告
引用返信 削除キー/
■34582 / ResNo.1)  Re[1]: DataObjectの使いまわし
□投稿者/ sima 一般人(1回)-(2020/11/22(Sun) 19:45:17)
  • アイコンNo34581に返信(Vettyさんの記事)
    > 現在 
    > 'データベース接続オブジェクト
    > Private dbcon1 As New OleDb.OleDbConnection
    > Private dbcon2 As New OleDb.OleDbConnection
    > Private dbcon3 As New OleDb.OleDbConnection
    >
    > という構成でひとつのMDBファイル(古いアクセス形式)内の
    > 3つのテーブルをそれぞれ専用のDataGridViewに表示しています。

    > 何か無駄にObjectが多いように感じます。

    >すべて個別にDataObject
    > をつくるのも無駄があるように感じます。
    > (OleDbConnection だけはひとつでいいように思いますが・・・)
    >
    > やはり個別に作るべきなのでしょうか?

    『やはり』とお考えなのであれば、何がお分かりでない(又は、不確かと)お考えなのでしょうか?

    DataObject が何を指すのかが良く判りませんでしたが、

    connection(接続オブジェクト) で指定する mdb ファイルが一つなのであれば、
    connection を三つ作らなければならないことについて説明できないと
    私は考えます。
違反を報告
引用返信 削除キー/
■34583 / ResNo.2)  Re[2]: DataObjectの使いまわし
□投稿者/ Vetty 一般人(12回)-(2020/11/23(Mon) 11:53:46)
  • アイコン早速のご回答ありがとうございます。

    >DataObject が何を指すのかが良く判りませんでしたが、

    質問内にでてくる
    OleDb.OleDbConnection
    DataSet
    OleDbDataAdapter
    OleDbCommand
    を指します。

    >onnection(接続オブジェクト) で指定する mdb ファイルが一つなのであれば、
    >connection を三つ作らなければならないことについて説明できないと>
    >私は考えます。

    時間の流れがないという前提ならそうなのですが、
    質問の設定で実行して、現在3つのDataGridVieに想定どおりの内容が
    表示できた時点から、あらたに別のMDBファイルを使い4つめのDataGriViewに
    表示しようというときに、いままさに使用中の(あるいはすでに使い終え
    たDBConectionをあらたな2つめのMDBファイル用に使いまわしできるか?
    ということなんです。

    最初の質問の範囲内でいえば、
    3つのDataGridViewそれぞれに用意している3つのOleDb.OleDbCommandを
    ひとつのOleDb.OleDbCommandで使いまわしできるのでしょうか?

    使用する条件も明確にしたほうがいいでしょうか・・

    1.3つのDataGridViewの表示開始・表示終了はユーザの指示による
      (表示開始・表示終了ボタンクリック等)
    2.DataGriView内の項目・行の追加削除変更は自由にできる
    3.MDBファイルの複数ユーザ共有はない

    ほかにも明確にする必要がある項目があったらご指摘ください
違反を報告
引用返信 削除キー/
■34584 / ResNo.3)  Re[3]: DataObjectの使いまわし
□投稿者/ sima 一般人(2回)-(2020/11/26(Thu) 11:34:51)
  • アイコン
    No34583に返信(Vettyさんの記事)
    > >onnection(接続オブジェクト) で指定する mdb ファイルが一つなのであれば、
    > >connection を三つ作らなければならないことについて説明できないと>
    > >私は考えます。
    > 
    > 時間の流れがないという前提ならそうなのですが、
    > 質問の設定で実行して、現在3つのDataGridVieに想定どおりの内容が
    > 表示できた時点から、あらたに別のMDBファイルを使い4つめのDataGriViewに
    > 表示しようというときに、いままさに使用中の(あるいはすでに使い終え
    > たDBConectionをあらたな2つめのMDBファイル用に使いまわしできるか?
    > ということなんです。
    
    初めの質問にはそんな事は書いてませんでしたね?
    書いてないことまで想定して、返事が書けるほど私は優秀ではないので
    少し戸惑っています。
    
    大胆に言えば、十分に注意を払ってコードをお書きになるのでしたら出来な
    くはないと思います。
    が、私は怪我も火傷もしたくないのでできれば、そういう書き方はしません。
    
    使いきりのコードならそういう書き方をするかもしれませんが、後から
    変更、修正することを考えたら判りにくいコードや読みにくいコードやは
    私なら避けます。
    
    > 
    > 最初の質問の範囲内でいえば、
    > 3つのDataGridViewそれぞれに用意している3つのOleDb.OleDbCommandを
    > ひとつのOleDb.OleDbCommandで使いまわしできるのでしょうか?
    
    OleDb.OleDbConnection のインスタンスは接続先の DB(データーベース)を指す
    ためのものなので、一つのフォーム内であれば、同一の mdb ファイルを指定す
    るコネクションは一つあれば良いと考えます。
    私はそれ以上のことは書きませんでした。
    
    >>(OleDbConnection だけはひとつでいいように思いますが・・・)
    
    について、私の考えを示したもので、 OleDbCommand や OleDbAdapter やに
    ついて書いたものでないことはお分かりいただけると思います。
    
    OldDbCommand や OleDbAdapter については具体的な使い方を見ないと何とも
    言えないと考えます。
    
    ただ、扱いが込入ってくると OleDbCommand を使いまわすのは見通しが悪く
    なるおそれがあるので人には薦めません。

違反を報告
引用返信 削除キー/
■34587 / ResNo.4)  Re[4]: DataObjectの使いまわし
□投稿者/ Vetty 一般人(13回)-(2020/11/29(Sun) 05:45:08)
  • アイコン>初めの質問にはそんな事は書いてませんでしたね?
    >書いてないことまで想定して、返事が書けるほど私
    >は優秀ではないので少し戸惑っています。

    失礼しました。
    これ以上質問を続けるとさらに失礼を重ねることに
    なると思いますのでこれで終了したいと思います。

    ありがとうございました。
解決み!
違反を報告
引用返信 削除キー/
■34588 / ResNo.5)  Re[5]: DataObjectの使いまわし
□投稿者/ sima 一般人(3回)-(2020/11/30(Mon) 06:00:10)
  • アイコンNo34587に返信(Vettyさんの記事)
    > >初めの質問にはそんな事は書いてませんでしたね?
    > >書いてないことまで想定して、返事が書けるほど私
    > >は優秀ではないので少し戸惑っています。
    >
    > 失礼しました。
    > これ以上質問を続けるとさらに失礼を重ねることに
    > なると思いますのでこれで終了したいと思います。

    あのー、私は貴方が失礼なことをしたとは思っていません。
    「戸惑っています」とは書きましたけどこれは
    書いてないことまで想定して返事が書ける程優れていないと
    いうことでしかありません。
違反を報告
引用返信 削除キー/



スレッド内ページ移動 / << 0 >>

このスレッドに書きこむ

Mode/  Pass/


- Child Tree -