@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

ADO.NETでSELECT処理の途中経過を知る方法

1
投稿者投稿内容
youji
会議室デビュー日: 2003/06/05
投稿数: 4
投稿日時: 2003-07-08 20:07
こんにちは。

VB.NET + ADO.NET + SQL Serverを使用していますが、大きいデータをSELECTしてくる時に
途中経過(今何%読み込んできたか)を知る方法ってあるでしょうか?
何がしたいかと言うと、1レコードのサイズが大きいため、途中経過をゲージで表示したい
のです。

具体的な仕組みとしては、DB上に最新バージョンのEXEが登録されていて、クライアントは
ローカルのEXEと比較して必要ならそれをダウンロード(表現が多少違いますが)してくる
仕組みです。

EXEの他にもDLLが数個あり、それぞれ1レコードずつにわけて1つのテーブルに格納
しています。EXE単体のサイズは1MBを超えています。

既に運用に入ってるのですが、一部の環境ではLANの回線が細く(64kなど)読み込みに
時間がかかる(3分以上)ので、途中経過をゲージで表示したいのです。
さらに「キャンセル」できれば申し分ありません。

別にDBから普通にSELECTする方法でなくても構いません。途中経過が分かれば何でも
良いです。情報をお持ちの方、よろしくお願いします。
KATSU
常連さん
会議室デビュー日: 2003/02/13
投稿数: 33
お住まい・勤務地: 静岡県
投稿日時: 2003-07-08 22:26
「ADO.NETでSELECT処理の途中経過を知る方法」ではないのですが...

引用:

具体的な仕組みとしては、DB上に最新バージョンのEXEが登録されていて、クライアントは
ローカルのEXEと比較して必要ならそれをダウンロード(表現が多少違いますが)してくる
仕組みです。



プログラム等をローカルにコピーするのが目的でしたら、
フォルダーの内容を同期化させるフリーソフトなり自作プログラムを作成するか
可能ならFTPサーバを立てて、ミラーリングダウンロードが可能な
FTPクライアントを使うような方法を検討されてはどうでしょう?

そこでDBを使うのはちょっと違う気がします。
うめちん
会議室デビュー日: 2003/07/09
投稿数: 1
投稿日時: 2003-07-09 02:56
KATSUさんの言う通り,SQLの使用方法が違うと思います。
SQLを使いたいならば、テーブルには最新のバージョンNOと
EXE,DLL等の置いてあるPATHを格納して、バージョンが
違っていたならばFTPなどの方法を使ってダウンロード
(コピー)を行ったほうがいいと思います。
このときファイルのサイズなどをとってきておいて、
ダウンロード中のファイルサイズと比較して何%ダウンロード
したかをプログレスバーなどを使って表示すればいいと思います。
まりり
ぬし
会議室デビュー日: 2001/12/05
投稿数: 329
投稿日時: 2003-07-09 13:22
入れるもののサイズがわかってればSQLをこういった用途で使うのは
ありかと思いますよ。

ただ、途中経過を知るようなことはできませんので、他の方が言うように
EXEファイルを外に置いて別に仕組みを作るべきですね。
youji
会議室デビュー日: 2003/06/05
投稿数: 4
投稿日時: 2003-07-09 19:39
皆さん、ご回答ありがとうございます。
なるほど、やはり本家のFTPを使用すべきなのですね。

実はこの自動アップデートの仕組みは当初の仕様に無くて、運用直前に慌てて組み
込みこんだものです。
ファイル共有にすると、セキュリティとかユーザー登録とかの問題があるので、SQL
サーバーにimage型(可変長バイナリ)で詰め込む方法が手っ取り早かったのです。

ほとんどのクライアントは高速なLANで繋がっていて、1M超えたファイルでも今の
ままで十分です。ただ1部の64kで繋がっている所はさすがに辛いので、そこだけ
代表者の方にメールで最新版を送ってます。

ということで、今のところ深刻な問題ではないので、新規にFTPでやるとはちょっと
言い出しにくいのですが、何%読み込んだかプログレスバーで表示されればカッコイイので、
個人的に是非やりたい機能です(某ネットゲーム風に、起動時に自動でパッチがあたる
画面を想像しています)。隙を見て管理者に相談してみようと思います。

どうもありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)