05/01/02 10:54:49 XCpHoqqm
ADO.NETに関する質問・雑談・評価 etc
何でもどうぞ。
2:NAME IS NULL
05/01/02 10:55:45 XCpHoqqm
リンク
URLリンク(www.atmarkit.co.jp)
3:NAME IS NULL
05/01/04 23:23:17 gtuR+WFj
ADO.NETはADOから派生されたという表現だが、この両者って別物のような感じがするのだが・・・・
使用しているクラスにしても共通点が少ないし、
ADO.NETは.NETフレームワーク上に位置し、ADOはOS上に乗っている。
漏れはADOをこなしてきて、ADO.NETに入った性質だが最初が苦労した。
考え方が全然違う感じがしたよ。
4:NAME IS NULL
05/01/05 00:16:03
>>3
つーか、本当に考え方違うでしょ。
ADOは接続しながらデータ操作するのが普通だけど、ADO.NETは非接続推奨っていうか、他に手段が無い。
5:NAME IS NULL
05/01/05 00:24:18
うん。だから、逆にADO.NETっていう名前がまぎらわしいと思う。
別の名前にすればよかったのに。。。
漏れも、ADOをこなしてきてADO.NETに入った性質だが
DataSetとかDataViewとかクラスの使い方がいまだに分からん
ところがある。。。欝だ。
6:NAME IS NULL
05/01/08 20:21:51
ソースコードで、ADOと近いのはADO.NETよりも、DAOの方だな。w
7:7
05/01/09 20:34:18 wBFa/DC9
データセットの生成を行うと
「生成中にエラーが発生しました。この問題を解決するには、
プロジェクトをビルドし、エラーを修正してから、データセットを再生成してください。」
と出ます。
xsdというのは作成されるのですが、そのままビルドすると
ビルドエラーとなり、
「クラス 'dataRow' は、それ自体から継承することはできません」
と出ます。
どのようにしたらいいのでしょうか?
'dataRow' は 'dataRow' から継承されます。
8:NAME IS NULL
05/01/09 20:42:58
>>7
どういうプロジェクトを作っていて、どういう過程でデータセットの生成
を行おうとしたのかを教えて欲しい。
その情報がないと、再現しようがないのでなんとも。。。
9:7
05/01/09 20:56:57 wBFa/DC9
VB.netのWindowsアプリケーションです。
「ツール」-「データベースへの接続」からMicrosoft Jet4.0OLE DB Provider
を選んでデータソースを選択しました。
それからツールボックスからOleDbDataAdapterをフォームにドロップし、
それ以降は
URLリンク(www.atmarkit.co.jp)
URLリンク(www.atmarkit.co.jp)
を行い、OleDbDataAdapter1を選択した状態で「データセットの作成」で
「新規作成」を行いました。
10:NAME IS NULL
05/01/09 21:36:52
>>9
私は今までその方法でデータセットを作ってきたが、生成時にエラーが
起きたことは一度もありませんでしたです。。。
で、試しにmdbファイルを移動させてみたり、テーブルを削除してみたり、
読み取り専用ファイルにしてみたりしたが、>>7に書いてるような
エラーはでなかった。。。
もうだめぽ。
何かコードを書いたり、表記してたもの以外のオブジェクトを配置して
たりはしてないんだよね?
だったら、プロジェクトファイルとmdbファイルをさらして
もらうしかないかも。。
11:7
05/01/09 21:58:24 wBFa/DC9
>>10
プロジェクトに関しては新規作成して、まっさらなフォームに対して
行ってます。
mdbはAccess2000です。
わざわざやっていただいてほんとにありがとうございます。
12:10
05/01/09 22:20:26
クラス 'datarow' は、それ自体から継承することはできません
'datarow' は 'datarow' から継承されます。
というエラーメッセージは、ソリューションエクスプローラで
新しい項目の追加でクラスを追加して、以下のソースコードを追加すると
出てきたが、やっぱりデータセットはちゃんと作れる。。。
わからんぽ。誰か助けて・・・(泣
Public Class datarow
Inherits datarow
Public Sub Test2()
Trace.WriteLine("Test2 called")
End Sub
End Class
13:NAME IS NULL
05/01/09 22:48:30
クラス 'datarow' は、それ自体から継承することはできません
'datarow' は 'datarow' から継承されます。
というエラーメッセージは、ソリューションエクスプローラで
新しい項目の追加でクラスを追加して、以下のソースコードを追加すると
出てきたが、やっぱりデータセットはちゃんと作れる。。。
わからんぽ。誰か助けて・・・(泣
Public Class datarow
Inherits datarow
Public Sub Test2()
Trace.WriteLine("Test2 called")
End Sub
End Class
14:NAME IS NULL
05/01/09 22:52:20
クラス 'datarow' は、それ自体から継承することはできません
'datarow' は 'datarow' から継承されます。
というエラーメッセージは、ソリューションエクスプローラで
新しい項目の追加でクラスを追加して、以下のソースコードを追加すると
出てきたが、やっぱりデータセットはちゃんと作れる。。。
わからんぽ。誰か助けて・・・(泣
Public Class datarow
Inherits datarow
Public Sub Test2()
Trace.WriteLine("Test2 called")
End Sub
End Class
プロジェクトの名前やmdbファイルの名前とかかなぁ。。。
15:10
05/01/09 23:02:44
プロジェクトの名前やmdbファイルの名前とかが原因のエラーなのかなぁ。
たまにあるよね。それが原因でエラーだすことって。。
16:10
05/01/09 23:07:02
プロジェクトの名前やmdbファイルの名前とかが原因のエラーなのかなぁ。
たまにあるよね。それが原因でエラーだすことって。。
17:10
05/01/09 23:12:52
プロジェクトの名前やmdbファイルの名前とかが原因のエラーなのかなぁ。
たまにあるよね。それが原因でエラーだすことって。。
18:NAME IS NULL
05/01/09 23:26:44
なんかネットがつながらなくなったから(うちの回線しょぼいから)
再度書き込んだらいっぱい投稿してることになって
しまっていた。。。汗
スマソ
19:NAME IS NULL
05/01/09 23:30:30
なんかネットがつながらなくなったから(うちの回線しょぼいから)
再度書き込んだらいっぱい投稿してることになって
しまっていた。。。汗
スマソ
20:NAME IS NULL
05/01/10 01:00:31
ちょっと餅突け
21:NAME IS NULL
05/01/10 11:45:59
>>7
テーブル名にdataを使ってませんか?
メニュー「プロジェクト」「すべてのファイルを表示」でDataSet1.xsdの下に
DataSet1.vb(.cs) が表示されます。これはスキーマ定義から自動生成されたコードなのです。
その中で(System.Data.)DataRowを継承してテーブル名+Rowという名前でサブクラスを
作ってる箇所があるはずです。テーブル名がdataだとdataRowになりますが
名前空間の使い方が悪くて(System.Data.)DataRowとdataRowがぶつかって
エラーになってしまいます。
C#だと大小文字を区別するのでdataだとOKですねDataだとエラーになると思います。
VS2005のBetaで試すとキチンとSystem.Data.DataRowと完全修飾名から継承してくれ
ますから名前空間がぶつかることはありません。
22:7
05/01/10 13:29:34 eQhm3LsI
昨日全然つながりませんでした。
レス返せなくてすいません。
10さんほんとにありがとうございました。
>>21
思いっきりテーブル名は「data」でしたので、
変更したら正常に作成されました。ありがとうございました。
みなさんほんとにお騒がせして申し訳ありませんでした。
23:NAME IS NULL
05/01/11 00:18:37
Accessでテーブルを作る際、フィールド名を数字で始まるものに
作ることはできるが、そのテーブルにVBAでADOのrecordsetで
アクセスしようとするとエラーになるんだよなぁ。
名前の付け方が原因の動作不具合って多いよね。。。汗
24:NAME IS NULL
05/01/11 23:42:14
ADO.NETで更新可能なResultsetとかDynasetとかというのをなくしたのは英断だと思うけどな。
更新系はupdate/insert/deleteでやるのが基本だと思ってるので、
DataSetだやDataAdapterを使わなければあんまり変わらん感じですよ。
ResultsetとかDynasetとか、中で何やってるかわからなかったのでなくなってすっきりです。
25:NAME IS NULL
05/01/13 22:39:35
C#でローカルのMSDEにアクセスしています。
使っているテーブルはテキスト、テキスト、イントの3つのフィールドを持つものです。
単純なInsertのストアドを使った場合、またAdapter.Updateを使った場合でも10000行をインサートするのに90秒かかります。
これはまだまだ遅いんでしょうか?
データベースは素人です。
26:NAME IS NULL
05/01/14 03:04:49
>>25
マシンのスペックでだいぶ変わってきますからね。
単純な表に単純な挿入だけならロジックで差が出るとも思えんので
そんなものでしょう、としかいえな。
27:NAME IS NULL
05/01/14 06:36:43
>>26
なんかWEBいろいろみてると、DBの設定とかで(たとえばトランザクション切るとか)いじれなくもなさそうなんです。
けど、片手間だし資料ないしあまり手もかけてられないので・・・
ふつうのパソコンレベルでどのぐらい出るかの大雑把な相場が知りたかったんだけど、規約にあるせいかデータwebにない(´・ω・`)。
28:NAME IS NULL
05/01/14 07:42:37
>>25
90秒が遅いかどうかはあなたがやりたいこと次第で、他人に聞く事じゃないでしょ。いや、マジで。。。
29:25 ◆hEpdoZ.tHU
05/01/14 08:30:24
>>28
10秒なら十分満足ですが、90秒ではもっと早ければいいという感じですが?
素人なので大体の基準を知りたく思い、聞くことがそんなにおかしいんですかね。
30:NAME IS NULL
05/01/14 13:35:10
>>29
聞くことはおかしくないのだがそれは無意味だというのが素人じゃない人たちの回答ですね。
これこういうやり方で書き込んでるが改善できないかって質問には答えられますよ。
MSDEならSystem.Data.SqlClient系をつかおうとか、Adapter使うと挿入後に読み直しのための
わずかなオーバーヘッドがかかるのでsqlCommandを直接使うとか、4000文字(8000byte)以下な
らtextよりvarcharを使おうとか、復旧モデルを変えても速度的な効果はあまりないとかなどなど。
insertの最速を目指すならbcpなのだが運用ツールだからね。普通のアプリじゃ使わない。
31:NAME IS NULL
05/01/14 16:57:59
>>30
でも大体このぐらいのマシンスペックならこのぐらいは行くはずだぐらいの感覚は持ってるんじゃね?
32:NAME IS NULL
05/01/25 21:27:46
デザイナでアダプターやらデータセットやらを配置していくのは、
旧VBプログラマーもすぐにアプリ構築できるようにするためなのかなぁ。
なんか、言語をクラス化させる方向と逆向きのように思うのだが。。
33:NAME IS NULL
05/02/06 19:21:39 +/ua3Vc0
ADO.NET ってトランザクションを発行した後に、SELECT文を使用することが出来ないんですか?
現在は別セッションを1つ作って対応していますが、リソースが無駄になるからやりたくない。
ADOの頃は出来たのですが・・・・
誰か良いやり方を知りませんか?
VB.NET2003
SQLServer2000
34:NAME IS NULL
05/02/11 00:59:59
>>33
何をしたいのかがちょっとよくわからないですが、
DataSetの中にSELECT文が保持されてるようなものだから、
それをFILLするだけで良いんじゃないでしょうか。
35:NAME IS NULL
05/03/01 22:12:55
age
36:NAME IS NULL
05/03/02 11:33:02
監督お願いです。
D V D で は、 T V で 端 折 っ た 話 を 追 加 & 補 正 し て く だ さ い 。
37:NAME IS NULL
05/03/08 21:49:18 WrTc1v3o
SharpDevelop で ADO.NET つかえる?
38:NAME IS NULL
05/04/02 07:24:19
ADO.NET開発が出来るスキルと、ADO開発ができるスキルとでは、
プロジェクト開発を考えると、今は圧倒的にADO開発のほうが
有利に思える。。。
39:NAME IS NULL
05/04/04 12:52:16
分散環境で楽観排他を使っていた香具師にとっては、ADO.NETは全然違和感が
ないのだが、接続型の選択肢がないのは、それはそれで困るんじゃないか?
40:NAME IS NULL
05/04/04 13:17:16
>>39
>接続型の選択肢がないのは
ありますが?
41:NAME IS NULL
05/04/12 07:13:54
非接続型って、メモリの中にテーブルを格納するわけだから、
adoで読み込んだテーブルを変数に格納しておくこととそう変わりが無いような
きもします。
42:NAME IS NULL
05/04/12 21:55:21 rOEDApzW BE:134971878-#
DataSet つかって捜査するのって、
ある程度以上の規模のテーブルを扱うのは不可能ですか?
サーバとのあいだですごい転送量になりそうで。
43:NAME IS NULL
05/04/12 22:12:48
>>42
>ある程度以上の規模のテーブルを扱うのは不可能ですか?
クライアントに搭載されてるメモリによる。
44:NAME IS NULL
05/04/13 00:31:26
>>42
何レコードも走査するような場合はDataSetでなくて
xxCommand、xxDataReaderを使うことになる。
DataSetはO/Rマッピング風なものを狙ってるんだろうなきっと。
45:NAME IS NULL
05/04/14 21:52:10 Gq7Mlisl
ADO.NETがオープンソースに
46:NAME IS NULL
05/04/21 22:45:48
みんな、ADO.NETで、データ接続の部分のクラス化って
どういう設計してるんだろう。。。
47:NAME IS NULL
05/04/22 09:02:05
>>45 なるわけね~え?本当になったの?なるわけないよな。
でも mono でももっとたくさんのアプリケーションが動くようになるといいな。
48:NAME IS NULL
05/05/01 09:43:57
なんかいいサンプルないかなぁ。
いまいちオブジェクトの概念とか使い方がわからんぽ。。。
49:NAME IS NULL
05/05/04 23:12:54
URLリンク(www.vector.co.jp)
50:NAME IS NULL
05/05/05 10:13:22
>>49
その同時アクセスの制御って、おかしくないか?
データを書き換えた後、更新しようとした段階で
「できません」ってなって作業が無駄になるのは。
51:NAME IS NULL
05/05/05 11:01:20
>>50
おかしいと思うなら、それはお前さんの頭がおかしいだけ。
52:NAME IS NULL
05/05/08 11:29:30
ADOは読み込んでレコードをたどる際はmovenextかmovepreviousしか
なくて、番号がなくて順序だけで操作する考えだったのに対して、
ADO.NETはDataset.DataTable[0].Rows[0][0]
ってな感じに配列の添え字で操作するようになってる。
その考え方がいまいちしっくりとこないし入りにくい・・・
53:NAME IS NULL
05/05/08 11:39:33 ycbXXzo5
>>52
非接続型は添字だが、接続型ならADO風だろw
54:NAME IS NULL
05/05/09 01:14:37
良く考えたらその通りだな。w
55:NAME IS NULL
05/05/10 08:14:37
そっか。。。非接続型なんだ。
小さなDBにしか、使えないねえ。。。信頼性が。。。
56:NAME IS NULL
05/05/10 08:44:31
ADO.NETなんて糞だろ
57:NAME IS NULL
05/05/11 01:13:31
接続型でダイナセット開きっぱなしで操作するより、
非接続型で楽観排他前提のデータ操作のほうが中身が良く見えて
安心できるけどなぁ。データが増えるほどそうだ。
もっとも両方使えたほうがうれしいけどね。
58:NAME IS NULL
05/05/11 07:15:56
メモリに余裕があって、処理の高速化を図る場合、
ADOで読み取った内容を配列に入れて操作していました。
この配列に格納したデータをソートしたりフィルタをかけたり
できるので、便利だと思います。
あと、データを上書きするまでの編集時は、オリジナルのデータとは、
別なところにおいておくことを設計したりしなくてよくなったから、
便利になったと思います。
でも、思いっきり重いです・・・汗汗汗
59:NAME IS NULL
05/05/11 12:32:25
ADO.NETが遅いのはマーシャリングにSoapFormatterを使っているせいで、
.NET2.0からはBinaryFormatterに変更でスピードが向上している。
ADO.NETは完全に読み込んでしまってから処理を始めるため、
グリッドコントロールへの表示開始はどうしても遅く感じてしまう。
トータル時間は変わらないはずなのだがこの辺の体感的な部分は重要だと
思うので改善が欲しい。
60:NAME IS NULL
05/05/12 06:29:43
Windows98の時、「Windows95よりも体感速度が速くなった」っていうのと
同じ機能だな。w
61:NAME IS NULL
05/05/12 21:11:28
業務系アプリはWeb型インタフェースが流行だから、それに合わせてるんでしょ。
Webフォームがメインになるんだよ、今後は。
62:NAME IS NULL
05/05/12 21:55:25
と思われていたが、AbobeのFlashフォームとMSのMetroフォームになるのであった。
もちろん最後は(ry
63:NAME IS NULL
05/05/15 11:55:26
ADO.NETからデータベースに接続する場合、
細かいところ見てたら相性とかでてくるんだろうか。
おなじMS製品のほうがいい、みたいな。
64:NAME IS NULL
05/05/15 12:23:29
>>63
.NET Data Providerを直接サポートしている場合はデータ型をはじめ
独自実装を大幅に認めてるので相性の問題はあまりないと思う。
(ただしそのせいで異なるデータベース間での移植性は低くなる)
サポートしてない場合はOLE DB経由になるのでデータベース製品と
OLE DBとの相性の問題が当然発生する。
65:NAME IS NULL
05/05/15 19:53:53 p5AU4cZr
DataGrid用意してFillしてDataSetマンセーって
言ってる記事多いよな。DataGridだけのアプリが
あるかと・・・
単票形式もコントロールにDataBindingして
ほらすごいでしょ?みたいな記事も
単票が別フォームの場合が説明されてなかったり
フォーム間のデータの受け渡しが載っているのも
あるが、受け渡し方が統一できてなかったり
はっきり言ってADO.NETフレームワークは使うほどに窮屈を感じるのだが
66:NAME IS NULL
05/05/15 20:38:27
>>65
禿同
67:NAME IS NULL
05/05/15 22:30:10
.NET2.0で改善してないものかなぁ・・・つーか、早く試しておかないとマズー
68:NAME IS NULL
05/05/15 22:34:25
DataGridにコンボボックスを貼り付けるのもあらかじめ用意
されてないし、紹介記事読んだだけじゃ複数テーブルの扱い方が
まともに解説されてないから、アプリを組む概要もイメージできない。
はっきりいって、つかいにくいのだが。。。
69:NAME IS NULL
05/05/16 17:55:21 /hrRvA3a
稼動1ヶ月ぐらいで遅くなったと苦情が来てたので調べてみたのだが、
条件なしの全件取得でグリッド表示していた。
ADO.NETのアーキテクチャでそれはまずいだろうと思って、
担当のPGに聞いてみたらADO.NET以前もこんなことをやってたもよう。
ADO.NETは使いにくいとかぼやいてる。たとえ密結合でもそれはいかん
だろうと思うのだがどうなんだろう?
70:NAME IS NULL
05/05/16 20:37:24
>>69
悩む前にとりあえず代案を教えてやれよ
71:NAME IS NULL
05/05/18 01:16:34
データセットいやなら別に使わなきゃいいじゃん。
IDbConnection,IDbCommand,IDataReaderあたりで
ADO風に接続形の世界で生きることは普通にできる。
72:NAME IS NULL
05/05/18 07:32:36
やっぱり、開発にかかわるとなると、「自分だけは使わない」とかって
出来ないわけで。。
connectionとadapterあたりまで何とか理解できた。
複数のテーブルを利用してデータの読み取りから更新までおこなう、
DataGridだけとかウィザードのみで終わりじゃない、
チュートリアルってないかなぁ。。
73:NAME IS NULL
05/05/18 09:35:29
ADOと切り離してDataSetを見てみると、StrutsのActionFormみたいに使えるよな。
Dataアダプタとセットにしてしまうと、ViewとModelがくっつきすぎで、単純な画面ならいいが複雑な結合じゃつかえねー。
一般に売られてる書籍も1つのテーブルから一覧だして終わりだもんな。
そんな仕事はあまりありません・・・。
74:NAME IS NULL
05/05/18 16:40:37 V6I2A/hd
まともにDataSetと向き合わないほうがいいよ
DataSetはADO.NETのオマケと思ってないと、
無理に使おうとすると縛られて疲れちゃうから
75:NAME IS NULL
05/05/18 16:55:06
なんか具体性のない>>74だけど。
プログラムのあらゆる場面で出てくる、データとその集合を取り扱う基本クラスとしては十分だと思うが。
こんなの自作してたらかったるいし。
76:NAME IS NULL
05/05/18 23:38:47
DBと画面表示が直通だとDataSetもいいんだけどな。
実際にはちょこっと編集したり色々する必要があることが多くて、
DataBind()して、変更された結果をUpdate()するだけ、みたいな
お手軽なケースは少ないんじゃないかな。変更部分はDataSetが
覚えてるし、単純なケースではこれで確かに楽になるんだが。
ま、「簡単なことを簡単にすませる」という要件には適ってると思う。
77:NAME IS NULL
05/05/19 00:25:37
でも中途半端な上司がこれを触って、なんだ簡単じゃないかと、無茶な工数算出をしたら・・・
78:NAME IS NULL
05/05/19 00:56:41
ココ読んでると、みな同じような不満をもってるんだなぁと親近感を感じるな。
漏れの方法をアド。
データ処理は参照系処理と更新系処理に分離して、前者にだけデータバインド
使う。データは予め参照用ビューを定義して1テーブルにしとく。
後者には、オプティミスティック制御でトランザクションにして書いておく。
DataSetの機能をそのまま使ってもいいけど、参照系処理
で使ったデータでオ制御をやれば、TP低いシステムなら十分かと。
79:NAME IS NULL
05/05/19 00:58:32
>>69
>>70
ビュー書いてやれよ。
80:NAME IS NULL
05/05/19 09:31:12
>>76
直通じゃなくても十分使えないか?
DataSetをStrutsでいうActionFormと考えれば結構使えると思うんだが。
簡単な画面はDataアダプタから直で取る。
複雑な画面は、自分でSQLごいごい書いて、その結果を登録して渡してあげる。
後者のパターンで二元配列だと個々のカラム型が入らないから問題。
構造体(というかクラス)の集合を自作・・・ってこの部分をDataSetでやるだけ。
自分で書くよりビジュアルなのと、DataSetそもそもの機能(検索や更新前値の保持、複数テーブル格納)など使えるし。
入門書にのってるような、FillしてOKなんてのは使う場面はほとんど無いと思うよ。
81:NAME IS NULL
05/05/19 12:04:14
>>80
そうだよなぁ。ADOの時だってリザルトセットからGirdコントロール
までを通しでそのまま使ったことはあまりなかった。
Visual Studioのウイザードだけである程度のものはできるけど、
実用的なものを作るにはそれなりのコードを追加する必要がある。
Adapterで作成したDataSetをそのままGridの表示に使うことは
まれな気がする。
82:NAME IS NULL
05/05/19 15:14:04 GtQz+Y9u
フォームがたくさんあると、
BindingContextとかCurrencyManagerのことも
考えないといけないからめんどくさいね
83:NAME IS NULL
05/05/19 15:29:53
>81
確かに。ADO.NET無視して、
自前に生っぽく作るほうがいい気がする。
84:NAME IS NULL
05/05/19 15:37:21
>>83
無視はしなくてもいいけど必要に応じてチョイスして利用しようということ。
85:NAME IS NULL
05/05/21 23:47:48
AccessVBAのADOに使い慣れてると入りにくいな。
フォーム上のオブジェクトにデータ表示させる段階で結構つまずく。
Comboboxのメソッドで、rowsourceが無いのは分かるけど、
column()とかvalueとかないし。
86:NAME IS NULL
05/05/22 00:58:16
使い方がちょっとかわるのなら、そのあたりを考慮したドキュメントも
作って欲しいものだ。一太郎ヘルプみたいに。
どうしてこのように使い方が変わるのかの説明がなかったら、
無意味なバージョンアップにしか思えない。
フリーソフトによくある、メニューの位置やデザインが変わるだけ
っていうやつ。今までの操作の慣れが無意味になって、
かえって使いにくくなるだけ。
87:NAME IS NULL
05/05/22 01:12:54
型指定されたデータセット、カラムにプロパティアクセスできるのは
いいんだが、値が入ってない場合に例外をスローするのは勘弁して欲しいものだ。
カラムの値がNULLなのての、DBじゃ例外でも何でもねえだろ。
88:NAME IS NULL
05/05/22 08:12:19
>>87
生成されるソース書き換えればOK・・・だけどめんどい。
型指定のエディタで指定させて欲しかったね。初期値とかNULLチェック有無とか。
89:NAME IS NULL
05/05/28 23:00:37
メモリにがっぽりデータを読み込む仕様にしたのなら、
その制限を自由に設定できる仕様も必要だが、それが
準備されていない気がするわけなのだが。。。
90:NAME IS NULL
05/05/29 10:05:18
>>89
多分その認識がそもそも間違っている。
今までのRDOとかならそういう考えでのクライアントキャッシュ・サーバーカーソルの考えだけど。
DataSetはそういう考えではなく、あくまでHTTPなどワンタイムセッションのためのキャッシュ。
91:NAME IS NULL
05/05/29 15:16:02
System.Web.UIWebControls.DataGridはページングの機能あるけど、
裏のDataSetに全部のデータ読み込んでおかないといかんみたいだな。
せっかくページングしてもこれじゃメモリの浪費で意味ねーじゃん。
92:NAME IS NULL
05/05/29 17:58:07
>>91
せめて、@ITとかでも読んだら?
ちゃんと全部データを読まなくても動作させる方法がある。
ページングに関しても同様に、表示させる件数だけデータを取得して、
ページを変えるときにそのページのデータを読み込ませる手段がある。
此処で言われてるような不満とかって、大抵は使い方を知らない低レベルな技術者ばかり。
実際には問題無く出来るような事を不満として出すんだから馬鹿としか言い様が無い。
93:NAME IS NULL
05/05/29 23:02:31
複数テーブルを読み込んでデータ更新までやるサンプルが
なかなか手に入らないのも事実。
94:NAME IS NULL
05/06/04 12:13:27
一太郎ヘルプみたいにしっかりと解説してるドキュソあるか?
95:NAME IS NULL
05/06/04 16:03:17
とりあえずMSDN以上の求めるのは困難じゃないか?
96:NAME IS NULL
05/06/06 00:21:14
>>95
マイクロソフトが、新文法を提案するのなら、
それ相応のドキュソを残してもいいじゃないかっていみだよ。
97:NAME IS NULL
05/06/06 14:29:32
>>96
そういったドキュメントはちゃんとあるよ。
ただ、探し方が悪いだけ。
98:NAME
05/06/06 16:01:45
>>97
どこよ?
99:NAME IS NULL
05/06/06 16:52:48
>>98はMSの公式サイトさえも探さない馬鹿
100:NAME IS NULL
05/06/06 19:25:00
ま、一太郎ヘルプの話はいいとしてさ、
一つのテーブルをグリッドにbindingしておわり。
見たいな解説で終わってる書籍に不満がある人向けの
ドキュメントは無いの?
101:NAME IS NULL
05/06/06 19:44:33
>>100
だからMSのサイトとか見ないの?
102:NAME IS NULL
05/06/06 20:14:21
狂気の法案を拉致問題の安部晋三先生と阻止しよう!!【■■2ちゃんねるが消滅します】
とんでもない言論弾圧法案=「人権擁護法」が国会に提出されようとしています!!!
この法案の真の狙いは①政治的には、在日参政権反対の自民右派の消滅であり、
②社会的には、2ちゃんねるをはじめとしたネット世界の一般人の小うるさい言論の圧殺です。
民族(朝鮮・中国・韓国)/ 同和 /信条(宗教・層化・赤化)他に関する一切の差別的発言を禁じるという狂気の法律です。
一刻も早く、防戦する安部先生達に、日本国民の怒涛の援護射撃をお願い致します!!!
※※以下4つともアドレス中に◆を1箇所はさんであります、◆を消去の上、どうか必ずご覧下さい!!※※
URLリンク(zin)<)◆door.jp/no_gestapo/
↑↑【凶悪仰天法案の問題点&背景の全て】
URLリンク(www.kan)<)◆su.jimin.or.jp/cgi-bin/jimin/meyasu-entry.cgi
↑↑【自民党目安箱】事態は急を告げています。文章は簡単でいいので、
国民の「人権擁護法」への反対意思を、とにかく 1 秒 も 早 く 党本部に伝えて下さい!
103:NAME IS NULL
05/06/06 21:18:23
>>101
MSのサイトは、データセットやデータテーブルなんかを
直接扱う範囲の狭いサンプルしかのってないじゃん。
それらがどんな風に繋がっていくのかがいまいち
イメージできなくてさ。。。
104:NAME IS NULL
05/06/06 21:24:05
>>103
だから、調べ方が足りないって言ってるんだよ。
105:NAME IS NULL
05/06/06 22:57:13
101=104か?
まともなドキュメントがない(か邦訳できる技術力がない)のを隠す
のに必死なMS社員でなければとりあえず、あんたが参考になったと
思ったURLを貼ってみれ。
ちなみに俺は英語のドキュメントでも歓迎だ。
106:NAME IS NULL
05/06/07 10:09:22
>>103
つうか、それをどう使うかなんてMSに聞くことじゃないだろ?
それこそ理解してどう扱うかの設計の問題。
それもマニュアルないとNGってのは、単にあなたのイメージが・・・。
107:NAME IS NULL
05/06/07 10:44:32
>>78に書いてあるじゃん。
データセットがマルチテーブルなのは、分散DB用途だよ。
シングルDBなら、DBMSのビュー使った方が遙かに楽。
更新は当然SQLで。アップデート・メソッドはトランザクション対応
してないので更新レコードが1件で無い場合には使い物になりませぬ。
108:NAME IS NULL
05/06/07 17:20:03
データセットがマルチテーブルなのは階層構造を持つデータをそのままの形で扱うため。
これはO/Rマッピングで設定するリレーションと似てると思う。
関連のあるデータを生のテーブルの構造で保持することでAdapterによる書き戻しが意味を持ってくる。
ただしこういう使い方が本格的にできるようになるのは.NET 2.0からの模様。
今の版のADO.NETは不完全な箇所が多く、書き戻し時のトランザクションの制御をはじめ
まともに使おうとすると相当のコードを追加しなくてはならない。
現状AdapterやDataSetは読み取りだけに使用して、更新時は直接SQLを投げるのが現実的だと思う。
全体が見渡せて応用が利くような良くできたドキュメントがないのはADO.NETがまだ不完全なことが
原因だと思う。
109:NAME IS NULL
05/06/08 15:58:14
>>87
遅レスだが
XSDに
xmlns:codegen="urn:schemas-microsoft-com:xml-msprop">
のようにネームスペースの宣言を手書きで追加して、
<xs:element name="empno" type="xs:string" minOccurs="0" codegen:nullValue="_empty" />
のようにすると、NULLの場合のデフォルト値を指定できるようだ。
codegen:nullValueに指定できる値は
"_throw"→例外(デフォルトの挙動)
"_null"→null
"_empty"→string.Empty
など。
その他、"0"など、リテラルな値もそのまま記述できる。
110:NAME IS NULL
05/06/08 23:13:30
>>87
>カラムの値がNULLなのての、DBじゃ例外でも何でもねえだろ。
プログラマ的にはなんでもないけど、RDB理論的には例外だよ。あっちゃいけないこと。
111:NAME IS NULL
05/06/08 23:59:26
>>110
俺ら理論で食えるわけじゃないしなあ
112:NAME IS NULL
05/06/09 09:31:12
NULL値アクセスでデフォルト例外って、普通に考えて良いと思うけど。
だって、DBのNULL値って表現できない値でしょ。不定。
じゃあ、それをMSが勝手に何らかの値を与えてたら、それこそバグの温床だよ。
とりあえず例外にしておいて、実装するプログラマが例外処理するか、規定値を与えるか考える。
113:NAME IS NULL
05/06/09 13:44:20 IPWJYuoX
開発者にとって複雑になるであろう点は、関係者は分かっているのにも
かかわらず、巷の本などの情報ではカバーされていて、開発方法論を
模索しているうちに次のバージョンが出て、過去の欠点は改善&変更されましたみたいな。
これじゃMSの追っかけするのも楽じゃないな。Javaのほうがいいかもしれんとか
思っているところ
どうなんだろうか
114:NAME IS NULL
05/06/09 13:45:59
まあ、俺はDQNだからね。だからもっと情報が欲しいな、と・・・
115:NAME IS NULL
05/06/09 14:08:03
MSの追っかけするのも楽じゃないのは同意だが、Javaも楽じゃないぞ。
やっぱりCOBO(ry・・・が一番。
116:NAME IS NULL
05/06/09 14:26:47
>>112
100カラムぐらいあるテーブルの値参照するのに
毎回
if (dataSet.Emp[0].IsEmpNoNull) {
empNo = null;
} else {
empNo = dataSet.Emp[0].EmpNo;
}
とか
try {
empNo = dataSet.Emp[0].EmpNo;
} catch {
empNo = null;
}
とかやってらんねーじゃん。
ま、型付データセットでは規定値与える手段があるから良しとする。
117:NAME IS NULL
05/06/09 14:28:39
Javaのおっかけの場合はソース読む必要があることが多くねーか
その分理解は深まるけど、おっかけんのつらいでしょ
まあソース読むという選択肢さえないMSよか自由かもね
118:NAME IS NULL
05/06/09 14:39:14
>>116
だから文意をきちんと読んでくれ。
この部分の仕様、MSは例外処理をしろといってるわけじゃないんだよ。
MSとしたら、NULL値に何を割り当てても、実際に使う側からしたら文句が出るのは判ってるから、
実装側にそれを決めてもらうという意味で、デフォを例外にしてるんですよ。
>>112に書いたが、数値0とか空文字とかをMSが割り当ててるのがデフォルトだったらもっと問題。
119:NAME IS NULL
05/06/10 00:57:09
>>113
>>117
何言ってるんだよ! おまいら追っかけるのが仕事だろ。
いつまでも、どこまでも、倒れて立ち上がれなくなるまで
スポ根で追いかけるんだぁー。
120:NAME IS NULL
05/06/10 02:05:02
技術者が新しいことに興味がもてなくなったら終わりだけど
次々とせっかく学んだものが古くなりつつ
追っかけるだけの人生も空しいなと
後に残るもんならいいんだが、ADO.NETだのなんだのは表層だからね
そういうものの知識はまるで残らないし意味が無くなる
まあでも、追っかけられなくなったら引退の潮時かもな
121:NAME IS NULL
05/06/10 16:02:08
ADO.NETに限らない話だけど、
.NETは抽象化しずぎて、イマイチ開発の自由度が殺されている
122:NAME IS NULL
05/06/10 16:57:36
抜け道はあるでしょ
C#ならポインタも使えるし
P/Invokeもある
Managed C++ならもっと自由だ
何にせよ綺麗に抽象化することが出来なかったMFCや
不便さと面倒さばかりが目立つCOMよりぜんぜん筋がいいと思うね
123:NAME IS NULL
05/06/10 18:30:38
.NET全般まで範囲を広げると脱線しそうだからADO.NETに戻すが、
ADO.NETはADOより機能を絞っていて、特定のモデルを強制しているのは確かであり、
それで自由度が少ないと思われているのは仕方がないことだと思う。
サーバーカーソルはクライアントの数が多いとサーバーへの負荷が大きいため全廃。
クライアントカーソルはクライアントあたりのユーザーが多いとクライアントへの
負荷が大きいため、内部を見渡しやすいフレームワークでの実装に切り替えている。
残ってるのは読み取り専用の前方カーソルと結果を返さないコマンドの実行機能のみ。
利便性より多ユーザー時のパフォーマンスを重視した結果だと思う。
このモデルはWEBアプリのような多ユーザーで少数クライアントの場合に有効であるが、
C/Sのようにクライアント=ユーザーでクライアントがパワフルなケースや、
ユーザーや同時実行が少なくDBに密着したデータ制御をしたい場合など
旧来のクライアントカーソルやサーバーカーソルが有効なケースも少なくないはず。
この辺のフォローをADOを引き続きサポートすることで行うのか、ADO.NETの機能強化で
吸収するのか、まったく切り捨てるのか方向性が見えない。
124:NAME IS NULL
05/06/10 22:49:00
ADO.NETそのものが切り捨てられるという可能性はどうよ。
125:NAME IS NULL
05/06/11 00:11:48
>>121
メッセージのルーティングが見えなくなってるよね。
OOが使えるのは良しとして、世界観はVBだな。
>>123
MSSQLServerの大幅な機能強化があるんでしょ、確か。
ストアドにC#が使えるようになるらしいし。
たしか、MSSQLServerって多バーション式だったよね?
だったら、ストアドでサーバ側カーソル作れるんじゃない?
126:NAME IS NULL
05/06/11 02:32:55
>>125
MSDNを見たらSystem.Data.SqlServer.SqlResultSetというのがあって、
これで更新系の操作ができる模様。これがSQL CLR用っぽいです。
snapshot分離レベルはOracle式のロールバックデータを世代管理する方式ではなく
tempdbにスナップショットを作る方式の模様。基本はあくまで共有ロック式で、
運用中に時間のかかる集計や帳票作成処理をするケースを想定してると思われます。
ADOのサーバーカーソルはこれらの機能で代用できそうですが
SQL2005以外のDBはどうしろというのでしょうかね。
127:NAME IS NULL
05/06/12 11:03:46
>>107
参照系は、Adapterで複数のテーブルを一つにまとめるSQL文を使って
DataSetに格納してDataBindingsするまでの一連のやり方は分かるけど、
更新系は、具体的にどうやるのかが分かりませんので教えていただけない
でしょうか。DataSetをつかわないんですよね?
128:NAME IS NULL
05/06/13 10:02:24
>>127
やり方は色々だと思いますよ。
DataSet内のTableの各Row毎に変更状態のステータスと元データ持ってるから、
DataSetをもらって、各Row毎にSQLでごりごりと処理する関数を自作することも可能。
(つうか、実務じゃその使い方しかないだろ?)
129:NAME IS NULL
05/06/13 15:52:48
>>107
> アップデート・メソッドはトランザクション対応してない
これマジ?
DataAdapterに突っ込むInsertCommand, UpdateCommand, SelectCommand
にトランザクション設定しておいてもダメなの?
130:NAME IS NULL
05/06/13 21:15:04
>>128
基本的な事で申し訳ないですが、質問させていただきます。
> DataSetをもらって、各Row毎にSQLでごりごりと処理する関数を自作することも可能。
DataSetをもらって、Row毎にfor文などでごりごりと処理する関数を・・
ではないのでしょうか。
ADO.NETは、DataSetに読み込んだテーブル群に対しては、SQL文を
実行できない仕様になっていると思うのですが。
131:NAME IS NULL
05/06/13 22:06:08
>>130
Rowの状態を見て、追加・変更・削除のSQLを組み立て
ExecuteNonQueryで実行すると言う意味では?
132:NAME IS NULL
05/06/14 01:00:18 wt5YTRiZ
>>129
その各コマンドは、Row毎に呼び出される仕組みだったはず。
しかし、
Update の前に、同じコネクション使って begin transaction を送っておけばうまくいったりして。
報告待つ。
133:NAME IS NULL
05/06/14 01:07:21
>>131
どのみち効率が恐ろしく悪いよね。
ストアドがデータセットを引数に受けてくれたらいいんだけどね。
>>132 案が行けそうな気がしてきた。
Update失敗したらロールバック、成功したらコミットでどうかな。
134:NAME IS NULL
05/06/14 01:18:58
>>132
余裕で可能
トランザクション効くよ
つか、普通思いつきそうなもんだがな
つうわけで
>>107
は大ウソ
135:NAME IS NULL
05/06/14 01:37:30
>>134
>余裕で可能
トランザクションをオンにするプロパティかなにかあるのですか?
136:NAME IS NULL
05/06/14 02:30:37
>>135
DataAdapterの{Insert,Update,Delete}Commandプロパティに設定する
CommandオブジェクトのTransactionプロパティに設定すればよい。
DataAdapterはConnectionが閉じている場合は暗黙に開くので、
前もって
1) ConnectionをOpen()
2) BeginTransaction()
3) Commandオブジェクトにtransactionをセット
をやっておいてから、Update()すればよい。
137:NAME IS NULL
05/06/14 03:02:52
>>136
余裕とか大ウソとか言ってるので期待してたのだが>>129 で既出だねw
138:NAME IS NULL
05/06/14 09:23:54
>>130
言葉足らずでしたね。すみません。
皆さんがもう回答かいてますが、元の>>128はDataSetを丸ごと受け取って、サーバ側でForループの意味で書きました。
でもって、少し前に書いてるが、ADOとDataSetを直で連携させて使うってことは考えていない。
DataSetはあくまでデータ受け渡し用のクラスとして非常に有用と思ってるだけ。
SQL操作はサーバ側で従来的に行うのがいいと思うこのごろ。
ADO+DataSetだとDataSetに制約がかかりすぎて使いにくい。
139:NAME IS NULL
05/06/14 11:10:55
>>136
それだと、複数テーブルのトランザクションを用いたUpdateには
アダプタを一つにまとめておく必要があるってことか。
140:NAME IS NULL
05/06/14 14:48:43
>>139
同じTransactionオブジェクトをそれぞれにセットすれば複数のアダプタでも
独立したCommandオブジェクトでも大丈夫。その為にConnectionを別にオープンしてるんだろうな。
141:NAME IS NULL
05/06/14 14:49:51
DataAdapterを活用しようと思ったらかなりのコードを追加が必要になる。
単純なアップデートの場合は>>136の方法で全更新を1トランザクションにすればよいが、
エラーや競合の場合にユーザーに判断を任せる場合はFillError/RowUpdated/RowUpdatingと
いったイベントにかなりのコードの追加が必要になる。
現状では独立したCommandオブジェクトで直接Update/Insert/Deleteした方が安全で早いと
判断する人間が多いのはやむなしだろう。
ウイザードだけで作ったDataAdapterを単純にUpdateすると、途中でエラーや競合が起きた場合
そこで処理を中断してしまって途中まで更新した状態になる。これをみて>>107のように考える
人間がいてもそれもやむなしだと思う。
142:NAME IS NULL
05/06/14 17:00:57
>>141
ていうか更新がなんか半自動で走っちゃうのはやっぱキモチ悪いって抜きがたい感覚は
どうしてもあるよね。
ウィザードで自動生成したUpdateCommandとかはキモチ悪いから手でSQLは
書き換えるし。
ただ、コード量のことを言うなら、>>128の言うみたいなデータセットの差分取得して
ゴリゴリとかのが結局多くなるっつか、やっぱ無駄な気もするよ。
143:NAME IS NULL
05/06/14 17:22:42
>>142
まあこの問題はそもそもORマッピングって使えるのか?って事でしょ。
144:NAME IS NULL
05/06/15 14:41:19
URLリンク(www.ast-j.com)
有料だが、こういうのを使ってみた人いますか?
複数のテーブルを参照するデータであっても、
更新・挿入・削除用のコマンドが自動で生成され、更新できるそうだ。
145:NAME IS NULL
05/06/15 15:34:27
>>144
こういうのって難しいよな。
機能が多機能になればなるほど、フレームとしての自由度が下がるし、習熟が必要になる。
それなら自分でつくったほうが・・・、ってなるし。
146:NAME IS NULL
05/06/15 16:12:37
狂気の法案を拉致問題の安部晋三先生と阻止しよう!!【■■2ちゃんねるが消滅します】
とんでもない言論弾圧法案=「人権擁護法」が国会に提出されようとしています!!!
この法案の真の狙いは、
①社会的には、2ちゃん/ブログをはじめとしたネット世界の一般人の小うるさい言論の圧殺であり、
②政治的には、拉致問題強硬派&在日参政権反対の自民右派の消滅です。
民族(朝鮮・中国・韓国)/ 同和 /信条(宗教・層化・赤化)他に関する一切の差別的発言を禁じるという狂気の法律です。
この法律の前例の無い恐ろしい特徴は、特定人に関する言動は当然、不特定多数の集団に関する一般的発言
(朝鮮人は~~と書くこと)までも圧殺しようとする点にあります。
◆違反者には、無令状捜索・差押、出頭要求、矯正教育が待っており、それを拒否すると、
さらに罰金30万&氏名・住所などの全国晒し上げを食らう(61条)という仰天内容です。
一刻も早く、防戦する安部先生達に、日本国民の怒涛の援護射撃をお願い致します!!!
※※以下5つともアドレス中に★をはさんであります、★を消去の上、どうか必ずご覧下さい!!※※
URLリンク(zinkenvip.fc2web.co)<)★apo/
URLリンク(blog.livedoor.jp)★r_00/
↑↑【凶悪法案の問題点&背景の全て】
URLリンク(www.kantei.go.jp)★en.html
↑↑【首相官邸ご意見フォーム】イメージと違って、ここは非常に効果ありです!
全部読んでくれます、投稿テーマで返事が変わります!
URLリンク(meyasu.jimin.or.jp)★asu-entry.cgi
↑↑【自民党目安箱】事態は急を告げています。文章は簡単でいいので、国民の「人権擁護法」への反対意思を、
とにかく 1 秒 も 早 く 党本部に伝えて下さい!
■□■人権擁護法ストップin日比谷公会堂 6/19(日)12:30~16:00超大物国会議員登場・皆さん大挙してご参加を■□■
147:NAME IS NULL
05/06/15 17:01:05
>>145
O/Rマッピングのようなものは使いどころが難しいからね。
データ量を限定すればそれなりに汎用で便利なライブラリやフレームワークが作れるのだが、
データベースの場合データ数が半端じゃないことが多いから、汎用で便利にするための
多少のオーバーヘッドのせいで、致命的に処理速度が遅くなったりリソースの使いすぎたりする。
結局フレームワークとRDBの両方を特性を意識して注意深く使わないと実用に耐えない。
148:NAME IS NULL
05/06/15 17:05:14
>>147
そうか?
O/Rマッピングに何を使うのか、そしてDBサーバのチューニング次第じゃない?
俺の会社でも3ヶ月ぐらいかけて色々テストしてみたけど、
1億レコードでも検索にかかる時間は平均1秒以内にまで出来たぞ。
149:NAME IS NULL
05/06/15 17:11:13
ORでもデータベースの索引にヒットした検索なら速いのは当然じゃない?
150:NAME IS NULL
05/06/15 17:30:32 JbFI81w8
OdbcDataAdapterをウィザードで作成すると落ちたりしない?
151:NAME IS NULL
05/06/15 17:31:46
つうか、新規案件でデータ主導型で画面設計してよくてっていうならORマッピング使えると思うよ。
既存DBからの場合はまず却下だし。
画面とビジネスロジックが複雑で、データ操作が多岐でかつデータを集合として扱う場面が多い場合、ORマッピングは使いにくい。
SQLでいうところのWHERE節で集合限定して一括更新みたいな部分が弱すぎ。
152:NAME IS NULL
05/06/16 00:50:34
>>151
>つうか、新規案件でデータ主導型で画面設計してよくてっていうならORマッピング使えると思うよ。
そこでUML2.0でつよw
>SQLでいうところのWHERE節で集合限定して一括更新みたいな部分が弱すぎ。
将来的には更新可能なビューが増えてDBMS側で対応される希ガス。
それまでの議論だな。
ポジティブかネガティブかわからないレスですまん。
153:NAME IS NULL
05/06/16 09:31:34
>>152
そこまでいくと、ORマッピングなんぞ考えずに、オブジェクトDBでいいような。
154:NAME IS NULL
05/06/19 07:13:27
更新系テーブルは、やっぱり単独読み取りして、ローカルで
プログラミングのほうがいいのかなぁ。
ADOプログラマはどのように考えられてるのかしら?
155:NAME IS NULL
05/06/21 13:48:24 J+gvxeCG
肝心なところが扱いにくいADO.NET
156:NAME IS NULL
05/06/23 20:45:08 Eox5AqoZ
>>154
全部が全部じゃないが、
SqlDataAdapterは表示系、
SqlCommandは更新系と使い分けてる。
157:NAME IS NULL
05/06/24 12:36:13
開発元は、「更新も自動で出来て便利。」とうたっているが、
その自動機能が実務で使えるレベルじゃないから、
実際は表示系にしか使われないってことなのかな・・・
158:NAME IS NULL
05/06/25 11:14:26
>>156
使い分けると言うより、
更新系にはアダプタが使えない(使う価値なし)ということですよね。
159:156
05/06/25 11:47:47 GM3QDYFi
ま、全部が全部じゃないが、そういうこと。
160:NAME IS NULL
05/06/25 12:23:38
使い方次第じゃない?
MSが提供してるサンプルでも、参照から更新・削除に至るまで、
SQLServer(MSDN)でプロシージャ作って、それを呼び出す形になってるし。
161:NAME IS NULL
05/06/26 14:17:16
>>160
それはSQL CLRのことじゃないか?
162:NAME IS NULL
05/06/28 00:00:08
次のVSは乗り換える価値ありなのかな?
最近VS2003で作ったクライアントをばらまいたんだけど、
2003SRVを使ってるヤシ以外全員が、動かん、と申し立ててきた。
通常のWindowsUpdateでは1.1Frameworkは入らないのね…
2.0も同程度にしか普及しないのかな。OSのバージョンアップの計画もないし。
163:NAME IS NULL
05/06/28 22:50:31
> 通常のWindowsUpdateでは1.1Frameworkは入らないのね…
こういう仕様なのは確かに困りものですよね。
MS製なのに、なんでこんな仕様なんだろう。
手動で1.1Frameworkを入れたら、再度アップデートでセキュリティー
アップデートしないといけないし。
164:NAME IS NULL
05/06/29 00:23:54
使いもしないもの勝手に入れられるなんていやだし。
165:NAME IS NULL
05/06/30 06:38:35
メーカー物PCに入ってるアプリケーション体験版とは違うでしょ。
1.1Frameworkを入れたから不安定になるとか重くなるとか
無いはずで。
166:NAME IS NULL
05/06/30 07:49:13
WindowsUpdateの「優先度の高い」じゃないが「追加選択」のところでできたような。
167:NAME IS NULL
05/06/30 12:16:55
>>166
一般ユーザは、追加選択なんて試みないよ。
あんなのを毎回チェックしてるのは漏れたちだけw
168:NAME IS NULL
05/06/30 18:47:05
ここで聞いていいかわかんないんだけど。。。。
VS.NETでWebフォーム作成してます。
その入力フォームに検索入力して結果のウインド展開します。
その時、SQL実行してDBにアクセスするのですが
どうにもDBを見てないような感じなのです。
strSQL &= " 得意先コード = " & costormerCode & " and " & vbCrLf
strSQL &= " 得意先名 = " & costormername & " " & vbCrLf
With clsDB
.setDataReader(strSQL)
If .objDRD.Read Then
lbl_customercd.Text = .objDRD("得意先コード") & ""
lbl_customername.Text = .objDRD("得意先名") & ""
End If
.objDRD.Close()
End With
と作成しました。
SQL文自体はクエリアナライザで問題なく実行できました。
何が間違っているんだろう。。。誰か教授願います。
169:NAME IS NULL
05/06/30 22:54:48
clsDBとか言われてもな。
CMyDBって言われても困るだろ?
170:NAME IS NULL
05/06/30 23:53:54
>>168
もしかして文字定数のシングルクオーテーションが抜けてないか?
strSQL &= " 得意先コード = '" & costormerCode & "' and " & _
" 得意先名 = '" & costormername & "' "
あとは間違いじゃないが、strSQLの代入部分は継続行をつかって1行で書くか、
StringBuilder使う。余計なvbCrLf何ぞつけない。
セキュリティホールになりやすいので変数部分はParameterクラスを使う。
171:168
05/07/01 10:13:15
ちょっと略し過ぎました、、
>>170氏
指摘部分と意見参考にしてもう一度見直して、書き直して再TRYします。
㌧クスです。
172:168 ◆XrFVZ6ASAs
05/07/01 12:03:31
>>170氏の指摘どおり訂正しました。
SQL文は継続行にて編集。これは問題なくok。
しかし。。。
With clsDB
.setDataReader(strSQL)
If .objDRD.Read Then
lbl_customercd.Text = .objDRD("得意先コード") & ""
lbl_customername.Text = .objDRD("得意先名") & ""
End If
.objDRD.Close()
End With
得意先コードは出るようになったのですが得意先名が出ません。
また、つまってしまいました。
またどなたか指摘、意見もらえると幸いです。
173:168 ◆XrFVZ6ASAs
05/07/01 14:40:09
自己解決しました。
無事DBアクセスして項目内容Webに出力できました。
どうもお手数でした。
174:NAME IS NULL
05/07/02 14:46:49
解決したら、どう解決したのか書けよ。
それが公衆向け掲示板で質問するもののマナーだろうが。
175:NAME IS NULL
05/07/03 09:23:29
あきらめることで解決にしたんだよ。きっと。
176:NAME IS NULL
05/07/03 14:27:33
項目が一個出てれば、残りも出る。
出てなきゃコーディングミスさ。
177:NAME IS NULL
05/07/03 19:45:45
得意先名が空白だったとか
178:168 ◆v.TAYcWkbs
05/07/04 01:03:08
>>174
マナーねえ。。まあ、言わんとしてる事は一理あるとは思うけど。
だけど命令口調でデカイ態度でどうのこうの言われるのは嫌ですね。
いきなり攻撃的な文章描くヤツも十分マナーに反しているとは思うけど。
マナーに関してだけならVB.NET質問スレの住民に見習せたいとは思うけどね。
>>176氏
その通りです、貴殿の指摘通り単なる凡ミスです。
179:NAME IS NULL
05/07/04 10:43:46
>>178
まあ一般的な人としての常識をつけてから反論しようね。
聞いておいて出来たからいいなんて失礼千万ですよ。
180:NAME IS NULL
05/07/04 13:19:18
マナーのなさを指摘されて逆ギレかよ。
典型的なクズだな。
良くニュースで出てるだろ? 注意してくれた人に食いつくやつ。
鏡覗いてみろよ。 そいつがそうだ。そういう顔してるだろ? ww
181:NAME IS NULL
05/07/04 17:49:15
こういうスレッドが質疑応答の形をとって情報の共有と蓄積をしてるというのが
理解できていればどう行動すればいいかはおのずとわかると思うけどな。
182:NAME IS NULL
05/07/07 16:22:23 +rmuXYAF
DataSetイラネ
183:NAME IS NULL
05/07/10 02:10:03
ADO.NETイラネ
(ODP.NETイラネ)
184:NAME IS NULL
05/07/10 19:50:52
漏れは無いと困るYO
185:NAME IS NULL
05/07/12 02:16:14
でっかいテーブルを全走査する最適な方法ってどんなだろ?
186:NAME IS NULL
05/07/12 10:09:55
>>185
カーソル
187:NAME IS NULL
05/07/20 10:19:27
SQLサバのテーブル名一覧を取得する、手軽な方法ってあります?
Access で For Each ~ Next で取得できたみたいに。
何を使ったらいいんだろ・・・
DataAdapterとか使うのかな。
188:NAME IS NULL
05/07/20 19:42:19
select name from [サーバ名].[データベース名].dbo.sysobjects where tyep = 'U' order by name
をDataReaderで読むってのはダメ?
189:187
05/07/21 10:06:08
>>188
できた。
でも、dtpropertiesてなシステムテーブルも含まれてしまう・・・
ちょい工夫したら使えそう。
さんkす
190:NAME IS NULL
05/07/25 18:16:27
ちょっと質問
INで複数(可変個)のデータ取得するときってパラメータどうやって使えばいいかな??
単純に文字列結合するか、単一行取得クエリをパラメータの数だけ投げてデータセットに追加してくくらいしか思い浮かばないんだよね
191:NAME IS NULL
05/07/29 00:24:31 0me5458W
あげてみる。
192:NAME IS NULL
05/08/02 23:36:59
>>190
昔、同じことで悩んだよ
・・・結局わからなくてパラメータ渡すテーブルを作ったw
193:NAME IS NULL
05/08/17 20:42:24
Access系統は、ADO.NET搭載しない予定なんだろうか。。。
そうなると、VB.NETとVBAは別物としてやっていくことになるのだが。。。
194:NAME IS NULL
05/08/17 21:20:58
つうか別物だし。でも似たようなものだし、何とかなるって。
ちなみに最悪なのがOfficeシリーズ新顔のInfoPath君。
VBAの替わりにVBScript/JavaScript搭載で、
XDocument.View.Window.TaskPanes.Item(0).HTMLDocument.parentWindow.showModalDialog(...略 )
とかやってHTMLなダイアログボックスを呼び出すツワモノだ。正気か。
195:NAME IS NULL
05/08/18 00:21:34
教えて下さい。
データを削除する方法として、論理削除と物理削除があると思いますが、
どちらが一般的なのでしょうか?
自分は今まで物理削除しかしていませんでしたが、最近仕事で一緒にやっている人間が
論理削除派なのです。
理由はトラぶった時に対応できるからだそうですが、実際にはどちらが良いのでしょうか?
また論理削除の場合、物理削除や復活機能は付ける物でしょうか?
何卒教えて下さい。
196:NAME IS NULL
05/08/18 04:59:59
>>195
ADO.NETとは関係ない話だな。質問の内容にあわせてスレを選べ。
論理削除と物理削除も同じ。データを削除するといってもいろいろなケースがあるだろう。
よく分析して必要に応じてどういう方法をとるかは考えろ。
197:NAME IS NULL
05/08/18 08:49:59
195です。
>>196
ありがとうございます。
ADO.NETとは関係ない話ですね。
もう少しいろいろ考えてみます。
198:NAME IS NULL
05/08/18 09:17:14
>>195
すれ違いだけど、本当に絶対にいらなくなるならば物理削除。
(余分なデータを置いておく理由はない、不具合の元になる可能性もあるし、性能の邪魔・資源の無駄)
業務上無視するデータとなるならば一端論理削除したあと、ある時点で物理削除。
(赤黒とか過去データの参照で必要になる可能性がある。)
199:NAME IS NULL
05/08/18 10:01:13
195です。
>>198
スレ違いでも回答頂きありがとうございます。
自分なりに考えたのですが、マスターデータなど物理削除より論理削除の方が良いのですよね。
これが定番の方法!というのがあればこんなに悩まなくても良いのですが。
200:NAME IS NULL
05/08/23 18:17:38
>>199
定番何て無いのよ。
それと、
マスターの削除、俺だったらストアドで削除レコードを別テーブルに出す。
マスターに残したら整合性が無駄になる。
201:NAME IS NULL
05/08/23 18:18:54
>>193
ADOさへ使ってないじゃん。
202:NAME IS NULL
05/09/07 01:16:42
AGE.NET
203:NAME IS NULL
05/09/18 20:59:43
Webフォーム開発とかあるけど、結局はphpやperlに及ばないって
イメージがあるんだけど、どうなんだろ。
URLリンク(www.amazon.co.jp)
204:NAME IS NULL
05/09/18 21:08:30
及ばないのは人口だけだな。
205:NAME IS NULL
05/09/19 00:34:22
>>203
ASPとphpなら同じ系統だから比較できるが、ASP.NETとphpとperlの3つは違いがありすぎて俺には比較できない。
203氏は相当の眼力をお持ちのようだ・・・ADO.NETとASP.NETの違いには節穴らしいけど。
206:NAME IS NULL
05/09/19 17:51:55 +3i+6Ufz
>>205
かっこいいな、君。
207:NAME IS NULL
05/09/19 18:13:26
2005でまた仕様変更がどっさりあるんだよね。
勘弁してくれよ‥‥。orz
208:NAME IS NULL
05/09/20 00:04:27
なんでこんなに仕様変更するんだろうね。
短期リニューアルによる利益向上のためなかなぁ?
実際に使われるかどうかは関係ないとして、とにかく売れる時に
売ってしまえっていう理論。
209:NAME IS NULL
05/09/20 10:13:48
でも、よっぽどアークテクチャー意思決定者が奇特じゃない限り、2005なんて使うのは来年夏ぐらいからだろ?
特に2005に飛びつく必然(OSが対応しないとか)があるわけじゃないし。
210:NAME IS NULL
05/09/20 12:07:53
2003で作ったのが2005環境でもきちんと動くか心配でさ。
MSDNでも赤字で注釈入ってるのがいっぱいあるし。
211:NAME IS NULL
05/09/20 13:08:18
>>210
それって心配することか?
当然・・・動かないことを前提にするに決まってるんじゃないのか?
MSに何を期待してるのって。
そもそも、今回のバージョンアップ、急いであげる必然性は基本的に無い。
まあ、コンポーネント屋さんだったら別だけど。
212:NAME IS NULL
05/09/20 23:15:22
>209
来年夏と言うと、2006のアナウンスが出ているのでは?
まぁ、M$の通例から言うと、2006が安定版だろうし。
>211
同感。
213:NAME IS NULL
05/09/23 10:38:56
つうか、何の為に>>210は.NET使ってるんだろう。
2003だろうが2005だろうが、対応する.NETFrameworkさえPCに入っていれば、
そのバージョンで動くというのがメリットの1つなのに。
214:NAME IS NULL
05/09/23 12:37:32 3e+NxVel
>>208
DAO、RDO・・・
今に始まったことじゃないじゃん。
ま、今回は仕様追加だけど。
215:NAME IS NULL
05/09/23 14:02:26
MSは実質、内部的にいろんな会社があって、
それらの会社が新しい言語を作って、MSが販売してる構造なの
かもしれないね。
MSはWordを0から作ったわけじゃなくて、
Wordの会社を買収して販売して大きくなったわけだし。
216:NAME IS NULL
05/09/27 22:01:31 0
.net重いです。
古いOSで動かないです。
本当に主流になるんでしょうか。。。
217:NAME IS NULL
05/09/28 17:31:30
>>216
じゃばよりましだとおもうよ
218:NAME IS NULL
05/10/08 07:35:25
javaとADO.NETはどちらが良いのだろうか。。
219:NAME IS NULL
05/10/08 08:55:05
比較がとんちんかん。
違うものをどう比べろと
220:NAME IS NULL
05/10/08 09:08:35
>>218
javaがjdbcなのかHibernateのようなフレームワークなのかはっきりしてもらわないと答えられないね。
ただひとつ思うのは ado.net が adoの上位互換だったら使いやすかったんだけどね。
つまりadoと同等の密結合のAPIをもっててそれプラスで今のado.netの要素があるような作り。
221:NAME IS NULL
05/10/08 18:45:49
>>220
サーバー側でレコードロックしてループして・・・が出来ないのが致命的だよね。
受注とかでヘッダを検索してそれぞれの明細をいじりながら在庫を引き当ててとか。
レコードロックが出来れば簡単なのに、楽観的ロックじゃ実は難しい。
222:NAME IS NULL
05/10/09 13:32:21
>>220-221
もう少し調べてみたら?
知識すらない奴、多過ぎ。
223:NAME IS NULL
05/10/09 14:52:57
>>222
じゃあ、DataReaderがConnnectionを占有するっていう仕様を簡単に回避する方法は?
ADOならば単純に多重ループでカーソル開けたけど。
224:NAME IS NULL
05/10/09 18:31:15
>>222
System.data.sqlserver ならできるとか言い出すんじゃないか。
225:NAME IS NULL
05/10/16 17:18:15
すいません 旧バージョンの質問ですが、エクセル相談所で聞いた所VBスレに行くように言われたのですが、
中身からこちらの方なら、と思いましたので。
EXCEL上でADOでパラメータクエリを作成し、複数のアクセスMDBファイルから
クエリでデータを取得するプログラムを作っています。
このときいくつかのMDBには存在しないフィールドに対しても、クエリを実行するのですが、
当然エラーが出ます。
On Error Resume Next
Set rs = New ADODB.Recordset
Set rs = cmd.Execute
としても、次に飛んでくれないで、黄色い表示のデバッグになってしまうのですが・・・・エラーメッセージは以下です。
"実行時エラー'-2147217904 (80040e10)':
1つ以上の必要なパラメータの値が設定されていません。
クエリや他の部分はフィールドが存在するときは正しく動いています。フィールド名を事前に取得して
チェックさせれば良いのでしょうが、このエラーだけresumeが効かないのが理解できません。
226:NAME IS NULL
05/10/16 19:22:43
>>225
ADO と ADO.NET は名前が紛らわしいけど別物なので関連するスレはこの辺かのう。
スレ立てるまでもない質問・雑談@DB板
ADO DAO など接続方法について
227:NAME IS NULL
05/10/16 21:07:30
>>226
では下のに当って見ます。すみませんでした。
228:NAME IS NULL
05/10/18 16:22:31
ADO.NETでヘッダ+明細形式のDBの入力フォームを作る場合
明細部分をDataGrid以外の方法で実装する方法ってあります?
Accessからのアップグレードなんですけど、お客から、明細項目を
横スクロールさせないで見えるようにして欲しいと言われています。
229:NAME IS NULL
05/10/18 17:08:02
>>228
それはADO.netの問題じゃなく、VB.netのコントロールの問題。プログラムの適切なスレへ。
連結コントロールはGridだけじゃないから。
TrueDBGridとかだと、横スクロール無しで折り返して1レコード複数行みたいなことはできる。
230:NAME IS NULL
05/10/18 17:49:02
>>229
228です。
確かに、コントロールの仕様絡みの話ですね。失礼しました。
このスレの人ならこの手の実装方法について、経験やノウハウがあると思って
聞いてみましたが、該当スレに移動します。
TrueDBGridって文化オリエント(グレープシティー)の奴ですよね。
標準コントロールだとやっぱり無理なのかな…
231:NAME IS NULL
05/10/22 01:30:34
これdatasetの下にO/Rマッピングするもんなのか?
232:NAME IS NULL
05/10/22 01:47:12
今はとりあえずNHibernate
233:NAME IS NULL
05/10/22 08:43:36
O/Rマッピングのデータをインスタンス化する部分は自作かなんかかな?
インスタンス化するクラスはDataSetでOK。
ただ、O/Rマッピングってそんなに必要か?って思う最近。
234:NAME IS NULL
05/10/22 12:42:20
更新処理でごりごりSQL生成する手間が軽減するならいいなぁ。
235:NAME IS NULL
05/10/22 16:34:29
ObjectSpacesだったっけアレが出るまで
ADOでマッピングしてたほうがマシそう
236:NAME IS NULL
05/10/24 00:47:19
>>221
これってどうなん?
1.
MSSQLの場合は SELECT ~ WITH (UPDLOCK) ~
Oracleの場合は SELECT ~ FOR UPDATE
など、明示的にSQLによってレコードロック
2.
Transactionのisolationlevelの設定によってどうにかする
ってなあたりが回答?
237:NAME IS NULL
05/10/24 14:28:23
DataReaderを用いて、従来型のADOのようにカーソル処理がしにくいのが問題なのだけど。
DataReaderを開いている間、Connectionを占有してしまい、他の処理ができないのが糞仕様。
ヘッダをカーソルで開いてロックして更新しながら、そのディティールを更新するような処理。
DataSetの楽観的ロックでよければ問題ないけど、それじゃ拙い場合に使えない。
出して頂いた方法をDataSet生成時に用いても、ロックがかかるわけじゃないでしょ。
238:NAME IS NULL
05/10/24 15:31:44
O/Rマッピングの良いとこ悪いとこ教えて
239:NAME IS NULL
05/10/24 15:37:31
専門すれがどっかにあると思うけど。
良いところ。
SQLを意識せずにオブジェクトを生成し、オブジェクトの操作だけでDB操作が出来てしまう・・・といいな。
悪いところ。
世の中そんなに美味しいことは無い。
正直、論理設計、画面設計からO/Rマッピングすることを意識しないと、メリットを甘受できないと思う。
半端なマネすると、結局ツールを使って出したオブジェクトへ手を入れる数が増えすぎて。
240:NAME IS NULL
05/10/24 18:14:20 ypyJJyo+
>>237
.NET Framework 2.0まで待て。
241:NAME IS NULL
05/10/24 20:53:20
>>237
悲観的行ロックはかけられるよ。後でUPDLOCKつきSELECTを行う側が普通に
待ちになる。以下のようなサンプルで試した。
まあADO風にカーソルまわしつつというIFではないけれど。
サポートしてないのは、サーバーカーソル自体がリソース食いだからってことも
using System;
using System.Data;
using System.Data.SqlClient;
class UPDLOCK
{
public static void Main()
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString
= "server=localhost;database=Northwind;Trusted_Connection=yes";
SqlDataAdapter adapter = new SqlDataAdapter(
"SELECT * FROM Customers WITH(UPDLOCK) " +
" WHERE CustomerID like 'A%'", conn);
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
conn.Open();
Console.WriteLine("Connect完了");
SqlTransaction tx = conn.BeginTransaction();
Console.WriteLine("Transaction開始");
adapter.SelectCommand.Transaction = tx;
builder.GetInsertCommand().Transaction = tx;
builder.GetUpdateCommand().Transaction = tx;
builder.GetDeleteCommand().Transaction = tx;
DataSet dataSet = new DataSet();
Console.WriteLine("EnterキーでSELECTします: ");
Console.ReadLine();
adapter.Fill(dataSet, "Table");
Console.WriteLine("SELECT完了");
dataSet.Tables["Table"].Rows[0]["ContactName"] = "Maria Anders";
dataSet.Tables["Table"].Rows[1]["ContactName"] = "Ana Trujillo_";
adapter.Update(dataSet);
Console.WriteLine("EnterキーでRollbackします: ");
Console.ReadLine();
tx.Rollback();
conn.Close();
}
}
242:NAME IS NULL
05/10/24 21:28:16
>>241
多謝です。参考になります。
基本的に>>240さんの言うとおり2.0待ちなんだろうけど、VS2005が安定するのって2007年ぐらいでしょ。w
ADO.netってサーバーカーソルの非サポート以外は好きなんだけどね。
DataSetとか使いやすいし。
243:NAME IS NULL
05/10/25 08:00:35
SQLServer2005だとテーブル名のフルプリフィックスでも文法エラーにならなくなってる
244:NAME IS NULL
05/10/26 23:45:26
Microsoft Text Driver経由でCSVファイルにアクセスする場合、
デフォルトのフォーマットではない(たとえばタブ区切り)ときは
該当ディレクトリにschema.iniを作成する必要がありますが、
CD-ROMなど読取専用のためディレクトリにファイルを作成できないときは
どうすればいいのでしょうか・・・
245:NAME IS NULL
05/10/26 23:51:16
CSVなんて普通に読み込んでSplitしちゃえばいいじゃん。
246:NAME IS NULL
05/10/26 23:52:27
読み書き可能な手元のディレクトリにschema.iniを用意して、そこに
CSVファイルをコピーしてから処理するってのは?
247:244
05/10/26 23:59:09
>>245, >>246 様、レスありがとうございます。
もちろん、ファイルアクセスでやることも可能なのですが・・・
Microsoft Text Driverのフォーマットオプションを動的に変えることができるのなら
複数のファイルフォーマットに対応するのも容易かなと思いまして。
また、SQL文をそのまま投げれるのも魅力です。
見えるディレクトリにコピーする方法も有力ですが、
ファイルサイズが大きい場合は、無視できないコストになってしまいそうです。
接続文字列で FORAMT=TabDelimited とか設定できたらラクチンなのになぁ
248:NAME IS NULL
05/10/27 08:10:46
どとねっとでregexが使えるからText Driverは使わなくなったな。
249:NAME IS NULL
05/10/27 14:03:24
URLリンク(www.ken3.org)
は参考にならんか?
250:244
05/10/27 17:38:36
>>249 様、レスありがとうございます。
ヘッダーの有効無効は HDR 属性でできるようですね。
しかし、FMT 属性に関しては、どのサイトのどのサンプルを見ても
FMT=Delimited で固定・・・
いろいろたどってみたところ、「ムリ!」っていう
MSの公式見解出てたんですねぇ。
URLリンク(support.microsoft.com)
から引用
You cannot define all characteristics of a text file through the connection string.
For example, if you want to open a fixed-width file,
or you want to use a delimiter other than the comma,
you must specify all these settings in a Schema.INI file.
Access のテキストリンクウィザードとか、どうやってるんだろうなぁ。
読取専用ディレクトリのタフ区切りファイルもちゃんと読み込めるし。
まさか自前なんてことは・・・
251:NAME IS NULL
05/10/27 20:47:45
NHibernate使えそうだ
DataSet/Tableは表示用ですっきりいけそう
252:NAME IS NULL
05/11/06 00:00:10
>>245
CSVを俺は普通に読み込んでSplitなんでとてもじゃないけど出来ないね。
文字コードが何なのか?
改行コードは?
カンマをデータとして持ちたい時はダブルクウォートで括る。
ダブルクウォートで括ってる時、ダブルクウォートをデータとしたいときは、ダブルクウォートを2つ書く。
ダブルクウォートで括ってる時、その中で奇数のダブルクウォートが発見された場合の挙動は?
レコードの最後にカンマだけがあった場合、その後に空白のフィールドがあるとみなすかどうか。
まぁ、本来これだけの処理が必要なCSVを単純にファイルから1行ずつ読み込んで、
Split関数でカンマで切って配列なりに入れるプログラマが、この業界に8割は居るんだがな・・・
俺は、.NETが出る以前から、LogParserを使ってる。
勿論、.NETからの使用も可能。
CSVファイルにSQL文使えるのがいいのよね。
253:NAME IS NULL
05/11/06 00:01:51
>>251
NHibernateって便利そうに思ったんだけど、ふとした疑問が浮かんだんだよね。
例えば、OracleのV$SESSIONとか使いたい場合、やっぱりこのクラスを作るのかねぇ・・・
あとは、DUALとかさ・・・
254:NAME IS NULL
05/11/21 10:30:57
今SqlCommnadのExecutereaderを使ってSqlDataReaderを取得Reader()でぐるぐる回しながら読み込んでいるのですが、選択した行が多いときに全部検索終わってからExecuteReaderを抜けているような気がします。
選択処理(ExecuteReaderのようなもの)実行しながら選択できた行を順次処理できるようなメソッドはないでしょうか?
255:NAME IS NULL
05/11/21 12:25:43
ADO.netで一番変わった部分で、MSが押してる部分だから、このスレとMSDN、関連資料をきちんと読むことをお勧めします。
256:NAME IS NULL
05/11/21 13:33:41
>>255
了解です。なんかちょっとつかいたいだけなのにいろいろ変わってて疲れた・・・orz
257:NAME IS NULL
05/11/21 13:43:55
>>256
Framework 2.0になったら、また変わるから。orz
258:NAME IS NULL
05/11/21 15:13:32
>>257
今2.0です。orz
259:NAME IS NULL
05/11/27 00:06:29
ADO.netで非同期クエリは出来ますか?
260:NAME IS NULL
05/12/25 18:03:34
やっぱ、vb6までの遺産は全部捨てる覚悟でないといけないのかなぁ。。。悩
261:NAME IS NULL
05/12/25 19:12:41
過去の資産は捨てずに「繋ぐ」のが.NET的なんじゃねーの
262:NAME IS NULL
05/12/25 19:59:31
コンパイルしてもエラーが100とか出るプロジェクトを
前に、混乱しております。。。悩
263:NAME IS NULL
05/12/25 20:14:15
vb6のプロジェクトをウィザードで.NETに変換したとか?
264:NAME IS NULL
05/12/26 01:51:04
それ以外に移項の方法ありますか?
265:NAME IS NULL
05/12/26 09:22:19
VB6でも層を意識して分けてるプログラムだと、移植率高いよね。
266:NAME IS NULL
05/12/26 17:25:40
フォームやファイル入出力やActiveXを使っていない場合は移植どころかほぼそのまま動くが、
そんなプログラムはほとんどないよなぁ。
ADOはそのままCOM呼び出しに変更されるだけだよな?ADO,NETには変えてくれなかったと思うが。
267:NAME IS NULL
05/12/26 19:38:17
低機能のものに置き換えは無理だわさ。
268:NAME IS NULL
05/12/26 19:55:50
テーブルのある列に、同じ文字列が何行にも渡って入っていて
その文字列が切り替わったことを判断するには、どうすればいいですか?
例えば
M001
M001
M001
M001
M001
M001
M001
M002
M002
M002
M002
M002
M002
M002
M002
M003
M003
M003
・・・みたいな感じです。
使っている言語はC#.NETなんですが、
if(dr["列名"].ToString() == "M002"){
//キーが変わった時の処理
}
なんてやってしまうと、汎用性がなくなるもので・・・
適切な方法ご教示願います。
269:NAME IS NULL
05/12/26 20:54:31
前の値を変数に代入しておいて、判定をしてはいけないの?
270:NAME IS NULL
05/12/26 22:35:57
>>269
ありがとうございます。
解決致しました。
271:NAME IS NULL
06/01/07 01:14:30
age
272:NAME IS NULL
06/01/11 07:17:30
TrueDBGridって日本じゃ使われてるけど、へぼいよね。
たぶん、ソース見たことないけど、作りもへぼそう。たくさん使われてるから、
バグはあまり出ないかもしれんが、無理やりバグフィックスしてそう。
昔あるGridコンポーネントのソース見たけど、そりゃひどいもんさ。6万くらいのやつかな??
それに対して俺のお勧めはURLリンク(www.devexpress.com) ここのは信頼できる。
まぁ、まだ発展途上だから、バグが結構報告されているけど、すぐにFixしてくれるし、
サポートもすごいよい。でも、とりあえず、機能拡張はSTOPして、Fixに専念してくれよ。
273:NAME IS NULL
06/01/17 14:48:12 zHe27niw
MSDataSetGeneratorで自動生成された型付データセットをテキストボックスにデータバインドしてみたのですが、
Textプロパティが変化してくれません。(エラーはでない)
SqlDataAdapterで拾ってくるときに型付きでない普通のDataSetを使用すると上手くバインドで着ました。
何か解決策をご存じないでしょうか?
SqlDataAdapter da = new SqlDataAdapter("Select ~","Server=~");
Dataset1 ds = new Dataset1();
//DataSet ds = new DataSet();//こっちだと問題なく動作する
da.Fill ( ds );
textBox1.DataBindings.Add ( "Text", ds.Tables[0], "Meishou");
274:NAME IS NULL
06/01/17 18:42:28
>>273
ds.Tables[0] コレクションの0番に目的のテーブルが入ってないのでは。
ds.テーブル名 で指定してみたらどうです。
275:273
06/01/17 21:32:58
>>274
どうもです
いまちょっと試せる環境じゃないので明日試してみます。
でもコメントの部分を入れ替えるとバインドした時点で0行目の内容が適すとボックスに表示されるので
なにか型付DataSetが悪さをしているのかなぁと思ったのですが。
普通に型付DataSetでもデータバインドは可能なんですよね?
(ググっても出てこないところをみるとそうだと思うのですが・・・)
276:NAME IS NULL
06/01/19 01:08:06
質問よろしいですか?
ADO.NET 2.0使って検索画面作ってんですが、
非接続型の場合は
TableAdapterでパターン分だけクエリ作って
FillXXXX(DataTable , para1, ....)
を、それぞれ実行するしかないんですか?
ADO.NET 1.xの時みたいにDataAdapterの
CommandTextをソースから書き換える方法ってないですか?
(動的にSQLをゴリゴリしたい)
どうでしょうか?
277:273
06/01/19 07:43:36
インフルエンザでダウン中・・・
直ったら確認します....
278:NAME IS NULL
06/01/19 09:27:57
>>276
AdapterのReaderにDataReaderを設定できるようになったんじゃなかったんだっけ?
279:NAME IS NULL
06/01/19 13:03:43
DataSetにデータを取得した後、そのデータをグループ化して使う方法はないでしょうか?
DataViewあたりにそんな機能があれば良かったんだけど・・・。
280:273
06/01/24 20:39:09
>>274
まさにそのとおりでした。
型付Datasetにテーブルを一個しか追加していなかったのでds.Tables[0]と
決め付けていました。
調べてみるとds.Tables.Count=3になっていて、
ds.Tables[1]もしくは生成されたテーブル名で正しくバインドできました。
初歩的なミスでした。ありがとう
281:273
06/01/24 20:48:20
ちなみに一番の原因は
da.Fill ( ds, "テーブル名" );
とテーブル名を指定しなかったのが原因でした。
こうすればTables.Count=1になりました。お騒がせしました。
282:NAME IS NULL
06/01/26 14:18:34
>>5
1年前のレスにマジレスだが、
当初はXDO(XML Data Object)という名前にしようとしたんだけど、
開発者側が「また新しい3文字略称かよ」と言ったので、ADO+という名を経て
ADO.NETになったそうだ。
以上、本屋で売ってる「ADO.NET専修講座」より。
俺も最近ようやく基礎的な考え方がわかったきたよ。遅すぎ・・・
283:NAME IS NULL
06/01/26 17:06:57
皆さんはUpdateメソッド使ってる?
うちはFillでDataSetに取り込み&検証したあとは、ExecuteNonQuery
で直接書き戻してるよ。パラメータ設定とか面倒だしさ。
284:NAME IS NULL
06/01/26 22:14:23
>>283
> うちはFillでDataSetに取り込み&検証したあとは、ExecuteNonQuery
> で直接書き戻してるよ。パラメータ設定とか面倒だしさ。
うちもそんな感じ。
テーブル単体で読むことなんてほとんどないから、
JOINしたりしてると目的と違うテーブルが更新されないか、とか心配で怖くて使えません。
285:NAME IS NULL
06/01/26 22:15:54
>>282
>>以上、本屋で売ってる「ADO.NET専修講座」より。
この本は使えないから買わないほうがいい。
VBマガジンの連載(但しN田のは除く)の方がまだ役に立つ。
286:NAME IS NULL
06/01/27 09:20:58
>>284
その辺りは何処までADOの考えに沿ってシステムを作るかだろうね。
O-Rマッピングツールとして使うと考えれば、そのツールがAdapterであってそれに載ればよいと。
そうじゃない思想(旧来型のクラサバ)の延長で考えると、ReaderとExecuteでやればOK。
287:NAME IS NULL
06/01/31 22:43:38 xYIDIRU6
今更だがプログラミングADO.NETを購入してきた。
明日からちょっと節約。
288:NAME IS NULL
06/02/02 00:26:15 l446bGbp
学校の授業で「100万件データがあるテーブルにアクセスして、
クエリなげるプログラム作って、レスポンスタイムを短くするように
チューニングしろ」って課題がでたんだが、普通はどれくらいの時間
かかるんかな?
ADO.NETでSQL Server2000に接続します。テーブルの列は2,3列くらい。
289:NAME IS NULL
06/02/02 00:52:11
クエリによるだろ。
何するのか、もっと説明しる。
290:288
06/02/02 01:41:51 l446bGbp
>>289
そのクエリの内容をどうしようかなーと今考えているわけで。
普通にselect文しか思いつかない・・・OTL
レスポンス短くする(パフォーマンスチューニング)するには
何をしたらいいんだろう?
インデックスのつけ方以外で。
291:NAME IS NULL
06/02/02 09:43:28
あんたの質問は、きれいな絵を書けって課題が出たけどどうすれば?って聞いてるのと同じ。
292:NAME IS NULL
06/02/02 11:19:07 4Msp1fkq
DataViewのFindメソッドを使いたいけど、Sortプロパティは
変更したくない、という状況です。
Dim i As Integer = 0
While (i < View.Count)
If View(i)("列名") = 値 Then Exit While
i += 1
End While
と、値が見つかるまで虱潰しに探す処理しか思い浮かびませんが。
もっとスマートな方法はないですか?
なお、検索したいビューの行数は数行~数千行程度です。
293:NAME IS NULL
06/02/02 12:52:08
別のViewって起せないんだっけ?
294:NAME IS NULL
06/02/02 13:14:03
同一Tableから複数のDataViewを、というのは可能ですが。
今回、検索にかかった行のインデックスを得たいのです。
295:NAME IS NULL
06/02/03 09:20:39
何がいいたいかも何がやりたいかも判らん。
もっと客観的に伝わる言葉で書いてくれよ。
行のIndexって何?
296:NAME IS NULL
06/02/03 12:15:05
開発環境:VB.NET + ADO.NET
DataViewオブジェクトのFindメソッドは、Sortプロパティで指定した
列を検索して、DataView内で検索にかかった行のIndexを返す。
DataView内
(ID) (検索列)
5 非検索値
2 検索値
7 非検索値
(コード)
DataView.Sort = "検索列"
Dim Index As Integer = DataView.Find("検索値")
If Index > -1 Then Debug.WriteLine(CStr(DataView(Index)("ID")))
(出力)
2
ただ、この方法だとSortを設定しないといけないので、DataView
内の元のソート順を崩してしまうことになって困る。
よって、Sortプロパティを設定しないままで同等の処理を行いたい。
ということです。
297:NAME IS NULL
06/02/03 12:18:26 uxDQ2asr
行のIndexというのは、上の例の場合、
Index (ID) (検索列)
1 5 非検索値
2 2 検索値
3 7 非検索値
のようにDataView内部で順に振られた順序のことを指しています。
正しい呼び方が他にあるのかもしれませんが。
上、age忘れ失礼しました。
298:NAME IS NULL
06/02/03 12:20:45
なんでIndexが必要なの?
(IndexってDataTableの行番号?)
別にデータにアクセスするならView越しでOKじゃん。
299:NAME IS NULL
06/02/03 20:05:12
行インデクサかID列か、どちらが欲しいのかわからないよ。
300:299
06/02/03 20:12:34
ああ、ごめん。DataView内の行を特定するインデクサが必要なん
だね。んで、見つけたあとに何をするかがわからないな。
ひとつしかヒットしないようなユニークな検索値なら、DataView
に抽出した時点で一行しか出てこないだろうし、それならインデク
サ0を直接参照して、好きなように読み書きできるかと。
301:NAME IS NULL
06/02/12 00:02:12
age
302:NAME IS NULL
06/02/12 00:39:55
Enterprise LibraryのData Access Application Block使ってる人いる?
ちょっと触ったところだと、ADO.NETの便利なラッパって感じなんだけど。
303:NAME IS NULL
06/02/17 01:52:44
何処で質問するべきか迷ったのですが、使ってるのがVB.NETなのでここで質問させてくださいm(._.)m
【質問内容】
Key値としてユニークな番号を発番したいのですが、良い方法というか一般的な方法ってありますか?
自分で考えれるのはMAX値を一旦取得してその次の番号から発番する方法しか思いつかなかったのですが、
消したり追加したりを繰り返すと空き番号が増えてもったいない気が・・・
環境はVB.NET+MSDE(将来的にはSQL server)です。
初歩的な質問だと思いますがご教授ください
304:NAME IS NULL
06/02/17 07:28:58
空き番号を気にしないならキーにIDENTITYを属性を指定するのが一番パフォーマンスがいい。
MAX+1でやるなら同時実効性が若干損なわれるから、それでもかまわないかよく検討すること。
途中にできた空き番号の再利用までしたいなら発行可能な番号をすべて書き出したテーブルを作って、
使用中かどうかを管理する。または不要になった番号だけを再利用テーブルに書き出して管理する。
PS.教授は留守だ。
305:NAME IS NULL
06/02/17 10:19:19
レコード削除などで発生した空き番号を再利用するのは、よく注意
しておいたほうがいいよ。ソート後の処理や古いリレーションがく
っついたりして悪さをする可能性が無きにしもあらず。
うちは一度発行したインデックスを再利用することもレコード削除
することもしない。消すときには専用のフィールドに使用不可を表
すデータ(日付)を入れておくだけ。
306:308
06/02/17 13:44:26
ありがとうございます。
確かにMAX値を取ってくると弊害が出てきますね。
教えていただいた方法でやってみます。
307:NAME IS NULL
06/02/22 15:27:43 58nXANJY
多分非常に初歩の質問だと思うのですが、、、、
ADO.NETで、別マシンのpostgresqlにODBC接続してSQLを発行したいのですが、
うまくできません。
Private Sub Button1_Click()
Dim strConn As String
Dim strSql As String
strConn = "Driver={PostgreSQL ANSI};database=XXX;..(省略).."
Dim cmd As New Odbc.OdbcCommand
Dim conn As New Odbc.OdbcConnection(strConn)
conn.Open()
conn.BeginTransaction()
strSql = "CREATE TABLE (CUSTOMER USER_BANGO INT(2))"
conn.CreateCommand.CommandText = strSql
conn.CreateCommand()
cmd.CommandText = strSql
cmd.Connection = conn
cmd.ExecuteNonQuery()
conn.Close()
Return
実行すると、いかのメッセージが出てしまいます。
(勿論)テーブルは作成されません。
System.InvalidOperationException はハンドルされませんでした。
Message="ExecuteNonQuery は、コマンドに割り当てられた接続が保留状態であるローカルのトランザクションにあるとき、トランザクション オブジェクトを持つコマンドが必要です。コマンドの Transaction プロパティがまだ初期化されていません。"
Source="System.Data"
StackTrace:(省略)
ちなみに、VS2005です。
どなたか、どうすればSQLが発行できるのか(どこが間違っているのか)
おしえてもらえないでしょうか。
308:NAME IS NULL
06/02/22 15:37:18
よく知らんが、conn.BeginTransaction() の戻り値を
cmd.Transaction にセットするんじゃないの?
309:307
06/02/23 06:40:05 JubXzwgA
308>
ありがとうございました。教えていただいたことで解決しました。
動作するようになったコードは以下です。
Private Sub Button1_Click()
Dim strConn As String
Dim strSql As String
Dim cmd As New Odbc.OdbcCommand
Dim conn As New Odbc.OdbcConnection
Dim transac As Odbc.OdbcTransaction
strConn = "Driver={PostgreSQL ANSI};database=XXX;..(省略).."
conn.ConnectionString = strConn
conn.Open()
transac = conn.BeginTransaction()
cmd.Connection = conn
cmd.Transaction = transac
cmd.CommandText = strSql
cmd.ExecuteNonQuery()
transac.Commit()
conn.Close()
Return
310:307
06/02/23 06:42:48 JubXzwgA
自己レスです。
309で、strSqlにSQL文を設定する処理を書き忘れてました。
311:NAME IS NULL
06/03/04 22:06:46
保守
312:NAME IS NULL
06/03/04 22:20:53 fUeZIVcy
。NETは伸びるでしょうか?
313:NAME IS NULL
06/03/06 11:39:48
コボル、VB、JAVAみたいにこれっていう決め手が無い時代になるんじゃないの?
基本的な言語実装はJAVAも.netも大差ないんだから、両方使えて当然の感じじゃないと。
314:NAME IS NULL
06/03/06 14:58:14 g8ZwN0DS
エラーメッセージ
「は、コマンドに割り当てられた接続が保留状態であるローカルのトランザクションにあるとき、トランザクションオブジェクトを持つコマンドが必要です。コマンドのTransactionプロパティがまだ初期化されていません。」
を受け取りました。
Win XP Pro
.Net Framework SDK 1.1 ASP.NET ADO.NET VB.NET
この環境でWebアプリケーションを開発中、メインプログラムにはデータベースのロジックは一切組み込ます、ユーザーコントロール(.ASCX)内に処理を定義し、メインプログラムから都度サブルーチンをCallしています。
(データベース更新処理は一テーブル一レコード単位でサブルーチンをCallして処理しているのですが、親子関係のレコードの更新は一番最初の処理で接続とトランザクションを設定し、一組の中の最後のレコード処理でコミット後接続断をする必要があります)
ASCX内のコーディングは下記のとおりです:
<%@ Control ClassName="UserMaster" Language="vb" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.Odbc" %>
<script runat="server">
Public con As New OdbcConnection( _
ConfigurationSettings.AppSettings("conStringMySql"))
Public cmd As New OdbcCommand
Public trans As OdbcTransaction
Public Sub ConOpenWithTransaction()
con.Open()
trans = con.BeginTransaction()
cmd.Connection = con
cmd.transaction = trans
End Sub
Public Sub UpdateTable()
Dim intUpdateCtr As Integer
cmd.CommandText = strSQL (Updateの内容を定義済)
intUpdateCtr = cmd.ExecuteNonQuery()
.
.
End Sub
トランザクション処理は初めての経験でメッセージの内容も余り理解できていません。例えば「接続が保留状態」は正しい状態なのか?「プロパティがまだ初期化されていない」はどこで初期化するのか、頭書にしているのではないかと思っていましたが?
前述の#309を参考にさせていただきましたが、まだ何かが足りないみたいです。
「接続、トランザクション開始処理」 と「更新処理」を別サブルーチンで実行しているのに問題がありそうですが、将来データベースサーバーの移行を考慮して、是非分割して処理をしたいのです。
トランザクション処理に詳しい方、アドバイスいただければ幸いで。
315:NAME IS NULL
06/03/07 09:46:09
分割する場合、分割した関数にConnectonとTransを渡せば良いだけじゃないの?
316:NAME IS NULL
06/03/07 19:44:56 XuXd+j4l
#314 を質問したものです。 本件はトランザクション処理途中にSelect文が入っていました。それを回避することにより、問題は解決しました。
改めて分割処理で別の問題が発生しました。
Insert と Update 処理でフィールドがシフトして値が正常にセットされません。
ExecuteNonQuery文を実行する手前で設定されたSelect文の全てを表示させると
値は正しく設定されているのですが、実行すると値がひとつ後ろにシフトされてしまいます。
実情は正規のキーの値がキーフィールドと次のフィールドにも設定されている状況です。
現在Mysqlのデータベースで cmd.Parameters.Add("@fieldid",value)を指定してテストしています。
アトバイスあればお願いいたします。
317:NAME IS NULL
06/03/08 00:53:53
>>316
データベースファイルに対して、ExecuteNonQueryの直前で生成し
ているSQLを直接実行した結果はどうなってるか確認した? 単に
SQLを読んだだけで「正しく設定されてる」とか思ってない?
Common SQL Environmentなんかで直にSQLを動かしてみよう。
318:jaxonnoby
06/03/08 18:27:12 03WY8NAz
>>317
アドバイス有難うございます。
残念ながらデバッグ環境を持っていませんのでどうやれば良いのかわかりません。
ExecuteNonQueryのSelectではなく、cmd.Parametrs.Addに設定する値をResponse.Writeで表示して確認しただけです。
どうやらデータベース接続、トランザクション開始、と更新処理を分割したサブルーチンで実行しているところに
問題がありそうなんですが、最初に述べましたようにデバッグ環境がないので見当がつきません。
319:NAME IS NULL
06/03/09 09:30:30
デバック環境持ってないってどういう状態よ。
今だったら幾らでもフリーでそろえられるでしょ。
320:jaxonnoby
06/03/09 16:43:18 HS5VT+JN
319>>
今回の問題が発生するまでは全くデバッグ機能を使うことなくソースエディタとインターットだけの環境でプログラム開発ができていました。
一度Visual Web Developer 2005 Expressを利用しようと考えましたが、利用開始するまでに、手間がかかりそうだったので、利用をやめました。
おかげさまで、今回の問題は更新サブルーチン内のパラメータ設定でパラメータオブジェクトを
一更新処理の前にクリアしていないことにより、過去のパラメータが累積されていたことがわかりました。
いろいろアドバイス有難うございました。
321:NAME IS NULL
06/03/10 11:18:52
>>320
データベースの更新直前に、どんなSQLコマンドが実行されるのかを
確認していれば、すぐに解決できた事例ですね。パラメータを使って
いると、そのへんの確認が面倒なんでうちでは自力で生成しています。
ウィザードとかパラメータは、見えないところが多いから正直使いに
くいと思う。トラブった時に追跡するのがたいへんだしさ。
322:NAME IS NULL
06/03/11 03:33:39
というか.NET Framework SDKに超立派なGUIデバッガDbgCLR.exeがついてるだろ
323:NAME IS NULL
06/03/13 14:26:43 9SgU+AsX
質問でつ。
あるADO.netを用いたアプリから、SQLSrv2kに、どれぐらいの頻度でどんなSQL文が投げられているのか
知りたいのですけど、これをモニタする便利な機能などあるのでしょうか?
アプリのパフォーマンスアップのために、キャッシュなどを使い始めたのですが、どの程度効いてるのか
知りたいんです。
該アプリが使うデータベースやテーブルは決まっており、他のアプリがそれを使うこともないので
データベース側でモニタしても構わないのです。
簡単なトリガが何かを書けば可能なのでしょうか? よろしくお願いしまつ。
324:NAME IS NULL
06/03/13 21:46:47
>>323
SQL Profiler
325:NAME IS NULL
06/03/14 11:38:28
>324
thx!
こんなのがあったんだ。7年近く使ってきたのに…
思ってた通りのSQLが流れてて満足しました。
ありがとうございました。
326:NAME IS NULL
06/03/15 00:00:56
>>325
こんなに喜んでもらえると嬉しいもんだな。
実行プランも一緒に使って、チューニングしてくださいね。
327:NAME IS NULL
06/03/16 03:58:55
>>325
7年付き合ってた彼女が、ニューハーフだったと気づくことと同じレベル。
328:NAME IS NULL
06/03/16 11:41:56
そいつはうれしいな
329:NAME IS NULL
06/03/17 00:45:02
別スレで質問したのですが教えないと言われてしまいましたので、
こちらで質問させてください。
排他ロックについての質問です。
SQLSERVERにて、
sqlcommand.CommandText="select * from 'テーブル名' with(tablockx,tablockx,holdlock)"
でテーブルロックがかかると思うのですが、
DB全体をロックしたい時は、どのような構文になるのでしょうか?
ご教授お願いします。
330:NAME IS NULL
06/03/17 05:36:39
Datasetが一気にすべてのレコードをサーバーからもってくるの何とかならんかな。
つまり、非接続型とかいう。Webアプリ前提の仕様やめてけれ。
331:NAME IS NULL
06/03/17 08:50:21
>330
DataReaderでガリガリ頑張れ!
332:NAME IS NULL
06/03/17 09:25:18
>>330
何が問題なのか判らんが。
画面一覧に表示してる間、レコードロックでもかけるの?
333:NAME IS NULL
06/03/17 10:36:35
DBメンテと称してケーブル引っこ抜いてローカルで作業するとか
334:NAME IS NULL
06/03/17 13:45:22
>>332
例えば、CSEみたいなSQL発行ツールを作ると、SELECT文で100万件返されると、
全レコード返るまで、結果が見れん・・・
335:NAME IS NULL
06/03/17 14:15:04
いや、発行ツールとはいかなくても、例えば、過去の売上データをユーザーが指定した
条件によって検索する画面とかで、レコード件数が多いと明らかに、不利だ。
クラサバアプリでは、非接続型は明らかに、つかえん。
もうちょっとインテリジェンスにレコードが要求されたら、その都度サーバーからフェッチしてほしいものだ。
ClickOnceなどの自動配布機能を提供するなど、MSもスマートクライアントに時代は移ると呼んでるふしがあるが、
非接続型じゃ駄目だ。
336:NAME IS NULL
06/03/17 14:32:00
別にそれは非接続型云々関係ないように思うが。
もし検索を件数で打ち切りたいなら、DataAdapterを使わずにDataReaderで取得した結果をDataSetに押し込めばいいだけだし。
クラサバアプリで使えないってのは、貴方の考えが着いていけないだけなのでは?
337:NAME IS NULL
06/03/17 15:19:03
>>336
禿同
テーブルなめるバッチ処理のプログラムでDataSetを使ったプログラム見たときは目眩がしたもんだ
338:NAME IS NULL
06/03/17 17:20:26
>>336
いや、件数で打ち切りたくないのです。例えば、グリッドに表示するとき、
初め、グリッドに最低限表示する分をフェッチして、スクロールバーでスクロールされて、
表示に新たな行が必要な時に、初めてフェッチされるイメージです。
元々、私Delphi人間なんですが、DelphiのあるDatasetはまさに、それをプログラムレスで
自動でやってくれるもので。
遂、比較してしまいます。
DataReaderって接続型なんですね。確かに、おっしゃる通りで、できそうですね。
すみません。