ADO.NETの質問・雑談スレ2
TextBoxのチェンジイベント補足してSelectしろ >>372
回答者はお前だけじゃない。
答えられないからと”次”とかお前様主動でスレ進行させんな TextBoxのチェンジイベントでSelectが嫌なら、
Formオープン時にSelectして適当な変数に格納、TextBoxのチェンジイベントでその値を取得
って流れになると思う。
結局はTextBoxのチェンジイベントを使うんじゃないの? バインドしたらいいだけと言う対処方法を取る場合、
それの為だけに新しくテーブル作ったりするものなの?
バインドの為にローカルでmdbファイル準備するとか。 Accessで言う連係だと思ってました。スマソ
非接続型になるから、メモリに読み込んでいて表示させても、
バインドしても処理内容は同じだったんだね。。。 俺が使ってみた感想としては、DataTableは配列の塊として使いやすいよね。
後は要らんって感じなんだがな。
DataSetの有効活用方法ってあるのだろうか?型指定されたDataSetを使わない
場合には必要あるのかな? >>381
複数のDataTableをぶち込んで受け渡し
非接続だからいちいちdtoクラスとか作らなくていい >>383
なるほど。サンクス。
リレーション情報の活用ってしてますか?
俺はプログラム上で実現してるから、リレーションの
設定やらって基本しない。
開発時にエラーが出たりするのが逆に面倒だったりする。 informixへの接続文字列わかる方いませんか?
odbcを使わずに接続できるらしいんですが調べても全然分からないんです 385です情報ありがとうございます。
●●.ConnectionString="Provider=Ifxoledbc;Data Source=データベース名@サーバー名;User ID=ユーザー名;Password=パスワード;"
でしてみたのですがエラー0x80040E21が出たので解決策を模索中です。
なにか根本的に間違ってるかもしれないです… 検索エンジンGoogleで「インターネットテレビ 朝鮮総連 少頭劣一族 マイクロソフト社(又は経済産業省等気になる省やインターネットや原発、地震 波動砲)」を検索。
警察と自衛隊の武器は少頭劣一族が奪い、朝鮮に送ったらしい。知能障害以前の頭が悪い家族達。「工作員」の意味を知らない「工作員」家族。 すみません。質問いいですか?
C#でデータベースをdataset(データグリッドビューにバインドして作りました)にして扱っているのですが
訳あって同じ構造の別名テーブルに差し替える必要がでました。
クエリビルダでテーブルを差し替えると列の並びが狂うのですが、なにがおかしいのでしょうか?
また、列の並びをそのままに差し替えるいい方法はないでしょうか?
よろしくお願いします。 すみません。急ぐもので。。C#スレに行かせて頂きます ★2ch勢いランキングサイトリスト★
◎ +ニュース板
・ 2NN
・ 2chTimes
◎ +ニュース板新着
・ 2NN新着
・ Headline BBY
・ unker Headline
◎ +ニュース板他
・ Desktop2ch
・ 記者別一覧
◎ 全板
・ 全板縦断勢いランキング
・ スレッドランキング総合ランキング
・ ログ速
◎ 全板実況込み
・ 2勢
・ READ2CH
・ i-ikioi
※ 要サイト名検索 データベースデザイナ、便利だとの宣伝に釣られて使ってしまい、いま地獄を味わっている。 ado.netってc#と関係有りますか?
c#習得出来たのでデータベースも勉強したいんですが、データベースってそれを使う目的が無いとプログラムも作れないし、どうやって勉強したらいいか迷っています。オススメの入門サイトなど有れば教えて下さい。 誰でも簡単にパソコン1台で稼げる方法など
参考までに、
⇒ 『宮本のゴウリエセレレ』 というブログで見ることができるらしいです。
グーグル検索⇒『宮本のゴウリエセレレ』
IPPOSAG5MP ☆ 日本の、改憲をしましょう。現在、衆議員と参議院の両院で、
改憲議員が3分の2を超えております。『憲法改正国民投票法』、
でググってみてください。国会の発議はすでに可能です。
平和は勝ち取るものです。お願い致します。☆☆ AddWithValueによる型指定が出来ない
クソ!と思ってたが、
cmd.Parameters.AddWithValue("@変数",値).SqlDbType = SqlDbType.VarChar
みたいに簡単にできる事を知ったときはシビれた。 fillでdatasetにselectの結果が入ると思うんですが、そのテーブル名をsql側で指定することってできますか? バイナリ型のデータの取得で質問があります
データベースでアクセスでフィールド型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はアクセスに登録してダウンロードして開けることはできないのでしょうか?
ご教授していただければ幸いです バイナリ型のデータの取得で質問があります
データベースでアクセスでフィールド型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はアクセスに登録してダウンロードして開けることはできないのでしょうか?
ご教授していただければ幸いです そうなんですか?
IISの設定なんているのですか?
Response.ContentType = "application/msexcel";// MIMEコンテンツタイプを指定
ではだめなんですか? しかし、ダウンロードはできるのです。
そのファイルが開けないのです。(サポートされていない形式ですのエラーメッセージ)
サーバにファイルがある場合は普通にダウンロードできて開けるのです
アクセス、SQLServerにバイナリデータとして登録されている場合が
開けないのです。 ・バイナリデータの格納
・バイナリデータの読み込み
・データをダウンロードさせる
・(クライアントが)ファイルを開く
のうち、どこまで成功してるんだ?
そもそも、そのデータは「ファイルの中身」なのか? バイナリはあらかじめ格納できているのです
それをサーバー側からダウンロードしてアプリを自動的に立ち上げ
(要はWebから自動的にPDFを開ける)のと同じようにしたいのです
PDF,EXCEL,WORDなどがバイナリとしてアクセスまたはSQLServerでダウンロード
して中身を見たいのです
Server.MapPath(string.Format(@"./File/{0}", "Test.bmp"));
のようにあらかじめファイルをディレクトリにおいたときは
Respnse.writeBainaryでうまくいきます
問題はSQLServer アクセスにバイナリとして格納したときはできないのかな?と
やっぱり、ディレクトリの位置だけでDBの登録してServer.MapPath
でダウンロードしかないのかなと。 OLEオブジェクト型はバイナリ型じゃないからな
OLEヘッダ付きで格納されてるから、OLEヘッダ落とす必要があったはず そうなんだ。ヘッダー落すのは先頭からバイトを削る事何ですか。わ 409
確かにマイクロソフトのaspnetの分厚い本にコードの書き方書いてありましたね
少し試して見ます。thanks 自分の使い方が間違っているだけなのに文句を言うなよ。 質問すみません。
環境:
- 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() しています) <https://okwave.jp/qa/q3428421.html>
- netsh winsock reset で改善したという事例 <https://social.msdn.microsoft.com/Forums/vstudio/en-US/9e41e16b-27b2-40e3-8b6c-83930103e7b8/attempted-to-read-or-write-protected-memory-on-any-sql-connection-open-after-installing-net?forum=netfxbcl> がありましたので試しましたが改善しません。
- Provider=Microsoft.ACE.OLEDB.16.0;Data Source=C:\Users\mona\Documents\db.accdb;Persist Security Info=False; のような接続文字列の代わりにODBCデータソースでシステムDSNを定義し、DSN=db を指定しても改善しません。
- Visual Studio を管理者権限で実行しても改善しません。
- 試しにコネクションを毎回新規作成していますが改善しません。
英語サイト等も見ましたが先行事例がなかなか見つからず苦慮しています。せめてヒントでもありましたらご教示いただければ幸いです。よろしくお願いいたします。 書き忘れました、データ量(レコード数)ですが、データは複数のテーブルに分かれており(特に JOIN などはしていません)、多いもので 3000件弱、少ないもので数十件です。
データ件数に関係なく発生します。 ACCESSは、というかOFFICE全般で、サーバサイドでの実行はサポートされない
ACE.OLEDBはサービスで動作させる設計にはなってないらしいぞ >>415
ありがとうございます。そもそもの使い方として想定されていなくて、せいぜい ASP.NET と組み合わせるのが関の山、といったところでしょうか。
SQLite の利用も検討します。
ちなみに、コードを精査したところ、読み出したいテーブルとは別のDB(別ファイル)にレコード追加をする時にコケているようです。
別DBへの接続を止めたらアクセス違反はなくなりました。
ただ、コード上は、それぞれ別の接続を使用していますし、デバッガでステップ実行する際も、コケない時とコケる時があるので、タイミングの問題なのかと考えています。
取り急ぎは、同じDBへの書き込みで回避できるか検討したいと思います。 いや、ASP.NETでの動作もサポートされてないから >>417
ありがとうございます。
サポート対象外とのこと、SQLiteなりSQL Server Express なりにDBを変えてみたいと思います。
本件クローズとします。 tps://
youtube.com/watch?v=TTDVrOLz6MI ( )y-~~ ( T)y-~~( T-)y-~~(T-T)y-~~