ADO.NETの質問・雑談スレ2at DB
ADO.NETの質問・雑談スレ2 - 暇つぶし2ch403:NAME IS NULL
20/01/26 02:26:56.38 BP0mZu6W.net
バイナリ型のデータの取得で質問があります
データベースでアクセスでフィールド型OLE オブジェクト型があり
そこにバイナリデータがあります。
具体的にはEXCELのファイルのバイナリが登録されています(これは直接登録)
そこからADO.NETでそのバイナリを読み出し
クライアントにダウンロードして開けたいと思っています。
プログラム
・・・・・・前半省略
while (reader.Read())//アクセスからデータをバイナリデータを読み込む
{
ExcelBinary = (Byte[])reader.GetValue(0);//EXCELのバイナリデータ(あらかじめ登録されている)
Response.AddHeader("Content-Disposition", "attachment;filename=" + "data.xlsx"); //ヘッダー
Response.ContentType = "application/msexcel";// MIMEコンテンツタイプを指定
Response.BinaryWrite(PhotoData);// HTTP出力ストリームにバイナリ文字の文字列を書き込む
Response.Flush();
Response.End();
これでいけるとおもうのですが確かにダウンロードしてEXCELがたちあがるのですが
ファイルが壊れているか拡張子が違うとメッセージが出て開けません
疑問点は何か足りない部分があるのでしょうか?
ちなみにアクセスでなくファイルのバスにEXCELデータを直接置いた場合はファイルがダウンロードされて
開けます。
さらにFsstreamで書き出して直接開けても同じこのがおこります。
EXCELやPDFはアクセスに登録してダウンロードして開けることはできないのでしょうか?
ご教授していただければ幸いです

404:NAME IS NULL
20/01/26 13:40:04 .net
MIME登録されてないだけだろ
IISで設定しろ

405:NAME IS NULL
20/01/26 18:02:42 BP0mZu6W.net
そうなんですか?
IISの設定なんているのですか?
Response.ContentType = "application/msexcel";// MIMEコンテンツタイプを指定
ではだめなんですか?

406:NAME IS NULL
20/01/26 18:30:42 BP0mZu6W.net
しかし、ダウンロードはできるのです。
そのファイルが開けないのです。(サポートされていない形式ですのエラーメッセージ)
サーバにファイルがある場合は普通にダウンロードできて開けるのです
アクセス、SQLServerにバイナリデータとして登録されている場合が
開けないのです。

407:NAME IS NULL
20/01/26 20:18:34 8nfufEbl.net
・バイナリデータの格納
・バイナリデータの読み込み
・データをダウンロードさせる
・(クライアントが)ファイルを開く
のうち、どこまで成功してるんだ?

そもそも、そのデータは「ファイルの中身」なのか?

408:NAME IS NULL
20/01/26 20:39:21 BP0mZu6W.net
バイナリはあらかじめ格納できているのです
それをサーバー側からダウンロードしてアプリを自動的に立ち上げ
(要はWebから自動的にPDFを開ける)のと同じようにしたいのです
PDF,EXCEL,WORDなどがバイナリとしてアクセスまたはSQLServerでダウンロード
して中身を見たいのです
Server.MapPath(string.Format(@"./File/{0}", "Test.bmp"));
のようにあらかじめファイルをディレクトリにおいたときは
Respnse.writeBainaryでうまくいきます
問題はSQLServer アクセスにバイナリとして格納したときはできないのかな?と
やっぱり、ディレクトリの位置だけでDBの登録してServer.MapPath
でダウンロードしかないのかなと。

409:NAME IS NULL
20/01/28 23:10:28.36 .net
OLEオブジェクト型はバイナリ型じゃないからな
OLEヘッダ付きで格納されてるから、OLEヘッダ落とす必要があったはず

410:NAME IS NULL
20/02/03 12:35:43.47 .net
そうなんだ。ヘッダー落すのは先頭からバイトを削る事何ですか。わ

411:NAME IS NULL
20/02/03 21:24:17.58 .net
409
確かにマイクロソフトのaspnetの分厚い本にコードの書き方書いてありましたね
少し試して見ます。thanks

412:NAME IS NULL
20/02/03 22:04:09.51 01WTNDQb.net
自分の使い方が間違っているだけなのに文句を言うなよ。

413:NAME IS NULL
20/10/29 19:13:13.83 .net
質問すみません。
環境:
- OS: Windows 10 (バージョン 2004, ビルド 19041.572)
- Visual Studio: Visual Studio 2019 Community (Version 16.7.6)
- ターゲット Framework: .NET Framework 4.0/4.7.2
- Driver: Microsoft Access Driver (*.mdb, *.accdb) 16.00.4999.1000 (Access 2016 Redist)
コード概要:
デーモンとして待ち受け、要求に応じてDB(主に Access accdb データベース)のデータを返すプログラムです。
現象:
ADODB.Connection をインスタンス化した connection を Open するとき、実行開始後初回~数回は正常に値を取得できますが、数分時間をおいた後、再度 connection を Open すると、AccessViolationException が発生します:
```
ハンドルされていない例外: System.AccessViolationException: '保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。'
```
現状:
- デーモンのコンソールには、正常時には、結果が表示されますが、異常時(今回の現象)では「致命的なエラーです。」と表示されます:
```
致命的なエラーです。
ハンドルされていない例外: System.AccessViolationException: 保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。
場所 ADODB.ConnectionClass.Open(String ConnectionString, String UserID, String Password, Int32 Options)
場所 Project1.Class1.Get(String[] fields, NameValueCollection nameValueCollection) 場所 C:\Users\mona\source\repos\Project1\Project1\Class1.cs:行 196
```
- "AccessViolation|fatal ado.net|adodb connection open" 等で Google 検索すると、Close 漏れだとかの指摘がありますが、Close は必ずしています。(finally 節で connection.Close() しています) <URLリンク(okwave.jp)
- netsh winsock reset で改善したという事例 <URLリンク(social.msdn.microsoft.com) がありましたので試しましたが改善しません。
- Provider=Microsoft.ACE.OLEDB.16.0;Data Source=C:\Users\mona\Documents\db.accdb;Persist Security Info=False; のような接続文字列の代わりにODBCデータソースでシステムDSNを定義し、DSN=db を指定しても改善しません。
- Visual Studio を管理者権限で実行しても改善しません。
- 試しにコネクションを毎回新規作成していますが改善しません。
英語サイト等も見ましたが先行事例がなかなか見つからず苦慮しています。せめてヒントでもありましたらご教示いただければ幸いです。よろしくお願いいたします。

414:413
20/10/29 19:35:47.21 .net
書き忘れました、データ量(レコード数)ですが、データは複数のテーブルに分かれており(特に JOIN などはしていません)、多いもので 3000件弱、少ないもので数十件です。
データ件数に関係なく発生します。

415:NAME IS NULL
20/10/29 21:15:01.75 .net
ACCESSは、というかOFFICE全般で、サーバサイドでの実行はサポートされない
ACE.OLEDBはサービスで動作させる設計にはなってないらしいぞ

416:413
20/10/30 19:40:47.64 .net
>>415
ありがとうございます。そもそもの使い方として想定されていなくて、せいぜい ASP.NET と組み合わせるのが関の山、といったところでしょうか。
SQLite の利用も検討します。
ちなみに、コードを精査したところ、読み出したいテーブルとは別のDB(別ファイル)にレコード追加をする時にコケているようです。
別DBへの接続を止めたらアクセス違反はなくなりました。
ただ、コード上は、それぞれ別の接続を使用していますし、デバッガでステップ実行する際も、コケない時とコケる時があるので、タイミングの問題なのかと考えています。
取り急ぎは、同じDBへの書き込みで回避できるか検討したいと思います。

417:NAME IS NULL
20/11/02 03:29:23.50 .net
いや、ASP.NETでの動作もサポートされてないから

418:413
20/11/03 18:11:33.38 .net
>>417
ありがとうございます。
サポート対象外とのこと、SQLiteなりSQL Server Express なりにDBを変えてみたいと思います。
本件クローズとします。

419:NAME IS NULL
20/12/13 21:51:38.83 .net
https://
youtube.com/watch?v=TTDVrOLz6MI

420:NAME IS NULL
22/01/21 02:33:21.35 .net
小さな頃から優等生

421:NAME IS NULL
23/02/02 13:02:55.86 .net
(  )y-~~ ( T)y-~~( T-)y-~~(T-T)y-~~

422:NAME IS NULL
23/05/21 15:55:02.84 g5u58Yxs1
松野博─「統‐教会問題について.信教の自由を保障する観点から慎重に判断する必要か゛ある
 〔要するに政教分離無視、NP信者を手足の如く使い倒さないと下野するので利権を維持する観点から慎重に判断する必要がある!)」
林芳正『民間人などへの攻撃は國際法違反で断じて正当化て゛きない(だが,キチカ゛ヰナセ゛レンスキ―か゛ロシア民間人を殺害するのは桶!)』
山際大志郎「法に触れることはやってないのて゛議員は続ける〔靈感商法やら法に触れること促進してきたけと゛知ったこっちゃねえわ!)」
観光庁もとい地球破壊税金泥棒庁「GoToトラヘ゛儿不正受給か゛2億圓以上あって大手には返金求めるんだそ゛[って一応□では言ってるけど
 もちろん追求する氣ねえし、持続化給付金みたいに告訴と゛ころか罸金を求める気すら微塵もねえわ、た゛って天下り賄賂癒着先だからな〕」
葉梨康弘「死刑の八ンコ押すた゛けの地味な法務大臣〔蓄財З億円の斎藤鉄夫國交省みたいな賄賂癒着利権とは無縁で儲からねえわクソが]』
岸田増税文雄&翔太朗「税金で莫大な温室効果カ゛スまき散らして世界━周旅行して公用車使って写真撮ってお土産買って遊ひ゛倒すのか゛公務!』

創価学會員は,何百萬人も殺傷して損害を与えて私腹を肥やし続けて逮捕者まて゛出てる世界最悪の殺人腐敗組織公明党を
池田センセ━か゛ロをきけて容認するとか本気て゛思ってるとしたら侮辱にもほどがあるそ゛!
htтρs://i.imgur.cοm/hnli1ga.jpeg

423:NAME IS NULL
25/04/01 20:55:25.70 WY372l7t1
Winny事件に裏金事件に今度は殺すぞハラスメントの京都府警って絶望的に腐ってるよな、いまだに著作権法違反だのと嬉しがって個人攻撃
それでいて大企業がやってる盛大な著作権法違反のGpL違反とかスルーだしな、テレビやカーナヒ゛などネット接続まて゛する製品は
ユーザが改変使用できることを搭載の許諾条件にしているGPLソフ├ウェアを間違いなく使ってるか゛改変権を求めても平然と拒否してるだろ
要するに今回のパワハラ事件など象徴的で京都府警とは弱きをくじき強きを助ける外道集団、そんな地に落ちた汚名を少しでも返上する気が
あるなら門真のマネシタ電器にでも家宅捜索に入ってみせろっつのな、GρL違反裁判とかで検索すればコ゛ロコ゛ロ出てくるが
海外ではGPL著作権者のみならずユーザにも告訴か゛認められてるしな、日本の製品は騒音に脆弱な個人か゛作ったソフトウェアを盗んで組み合わ
せてるだけだがそんな犯罪組織に税金くれてやったりJALだのΑNAだの気候変動テロリストに全国騒音まみれにさせて徹底的に妨害しながら
税金で教育だの犯罪組織の内部留保倍増化投資だの見当違い甚だしい嘘八百自民公明増税政権続けさせたらお前らの生活破滅だぞ
(ref.) ttps://www.call4.jP/info.Php?тype=items&id=I0000062
URLリンク(haneda-project.jimdofree.com) , URLリンク(fligh)<)


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch