- - PR -
ADO.NETでSELECT処理の途中経過を知る方法
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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する方法でなくても構いません。途中経過が分かれば何でも 良いです。情報をお持ちの方、よろしくお願いします。 | ||||
|
投稿日時: 2003-07-08 22:26
「ADO.NETでSELECT処理の途中経過を知る方法」ではないのですが...
プログラム等をローカルにコピーするのが目的でしたら、 フォルダーの内容を同期化させるフリーソフトなり自作プログラムを作成するか 可能ならFTPサーバを立てて、ミラーリングダウンロードが可能な FTPクライアントを使うような方法を検討されてはどうでしょう? そこでDBを使うのはちょっと違う気がします。 | ||||
|
投稿日時: 2003-07-09 02:56
KATSUさんの言う通り,SQLの使用方法が違うと思います。
SQLを使いたいならば、テーブルには最新のバージョンNOと EXE,DLL等の置いてあるPATHを格納して、バージョンが 違っていたならばFTPなどの方法を使ってダウンロード (コピー)を行ったほうがいいと思います。 このときファイルのサイズなどをとってきておいて、 ダウンロード中のファイルサイズと比較して何%ダウンロード したかをプログレスバーなどを使って表示すればいいと思います。 | ||||
|
投稿日時: 2003-07-09 13:22
入れるもののサイズがわかってればSQLをこういった用途で使うのは
ありかと思いますよ。 ただ、途中経過を知るようなことはできませんので、他の方が言うように EXEファイルを外に置いて別に仕組みを作るべきですね。 | ||||
|
投稿日時: 2003-07-09 19:39
皆さん、ご回答ありがとうございます。
なるほど、やはり本家のFTPを使用すべきなのですね。 実はこの自動アップデートの仕組みは当初の仕様に無くて、運用直前に慌てて組み 込みこんだものです。 ファイル共有にすると、セキュリティとかユーザー登録とかの問題があるので、SQL サーバーにimage型(可変長バイナリ)で詰め込む方法が手っ取り早かったのです。 ほとんどのクライアントは高速なLANで繋がっていて、1M超えたファイルでも今の ままで十分です。ただ1部の64kで繋がっている所はさすがに辛いので、そこだけ 代表者の方にメールで最新版を送ってます。 ということで、今のところ深刻な問題ではないので、新規にFTPでやるとはちょっと 言い出しにくいのですが、何%読み込んだかプログレスバーで表示されればカッコイイので、 個人的に是非やりたい機能です(某ネットゲーム風に、起動時に自動でパッチがあたる 画面を想像しています)。隙を見て管理者に相談してみようと思います。 どうもありがとうございました。 |
1