ADO.NETの質問・雑談スレ2

このエントリーをはてなブックマークに追加
345NAME IS NULL:2010/11/23(火) 19:16:17 ID:???
今のVB.NET質問スレにはDB詳しい人おらんようだで
346NAME IS NULL:2010/11/23(火) 19:26:05 ID:???
347NAME IS NULL:2010/11/27(土) 12:27:43 ID:???
ム板で見つけた関連スレを貼っておきます。

データベースプログラミング全般スレ
http://hibari.2ch.net/test/read.cgi/tech/1097295557/l50

このスレッドも、DB関連話題という枠組みよりも、プログラムとして
どうなのかという話題にする意味合いで、板を移ったほうがいいかもね。
348NAME IS NULL:2010/12/02(木) 23:45:51 ID:???
テーブルアダプタの連想配列みたいなことを実現する方法はありますか?
イメージとしては

Using ta as New myDataAdapters(DataSetName)
 Dim dt as DataTable
 ta.Tables(TableName).fill
dt.Rows(0)(TargetColumnName)="hoge"
ta.Update(dt)
End Using

こんな感じで
349NAME IS NULL:2010/12/02(木) 23:48:04 ID:???
ta.Tables(TableName).fill

じゃなくて

ta.Tables(dt,TableName).fill
もしくは
dt=ta.Tables(TableName).GetData()

こうか
350NAME IS NULL:2011/02/04(金) 13:23:01 ID:???
保守しときます
351NAME IS NULL:2011/03/09(水) 08:20:57.40 ID:???
多分基本的なことなんだろうと思うんですが
どう調べたらいいのかわからないので教えてください
ADO.NET+OLEDBでaccessに接続するときのSQL構文は
MDBファイルをAccessで開いて「クエリ」で入力するものと違いますよね
(例えばワイルドカードが*と%)
この構文は具体的には何の構文になるのでしょうか?
ADO.NET固有のものなのかOLEDB固有のものなのかもよくわからないし
詳細はどこに載っているのですか?

また、executeNonQuery等を実行する直前のsql文をDebug.printして
それをAccessのクエリで動かすと普通に動くのに
コード経由ではエラーになったりすることがあって困ってます
コード経由で実行されるのと同じ構文で
SQLの動作かチェック出来るようなツールが
Visual Studioとかに付属しているとデバッグしやすいのですが
そういうのはあったりしますか?
352NAME IS NULL:2011/03/09(水) 19:58:25.17 ID:???
>>351
> MDBファイルをAccessで開いて「クエリ」で入力するものと違いますよね

 何故そう思った
353NAME IS NULL:2011/03/09(水) 20:02:36.36 ID:???
>>351
> コード経由ではエラーになったりすることがあって困ってます

 エラーになったりしない。
 そもそもSQLが悪いのか?
354NAME IS NULL:2011/03/09(水) 20:16:32.50 ID:???
>>352
実際にMDBファイルをAccessで開いて
クエリ→SQLビューでコピペしてちゃんとINSERT文が動くからです。
ttp://msdn.microsoft.com/ja-jp/library/ms187442.aspx
ttp://msdn.microsoft.com/ja-jp/library/ms189086%28v=sql.90%29.aspx
この辺とかが該当するのかな、とも思ったのですが
後述するようにここは関係なくて、ANSI構文というのが該当するのかもしれません
そういう辺りの話は何を見れば載っているのかよくわからんです

>>353
今回エラーになっていた箇所は「Image」が
予約語になっていたのが原因で、[Image]とすることで回避出来ました
ただ、これは、Accessの予約語ではないです(使用しているバージョンは2002)
ttp://support.microsoft.com/kb/286335/ja
実際、MDBを開いてクエリ実行した場合は[]を付けずにちゃんと登録出来ます
プログラムからは、[]つきじゃないと動きません

もうちょっとググって辿りついたのがこれ(Imageが予約語に含まれている)。
ttp://support.microsoft.com/kb/248738/ja
そうだとするとOLEDBとかは関係なくて
JET&ANSI構文の話になるのかな?
355NAME IS NULL:2011/03/09(水) 20:32:17.29 ID:???
解決、ここにありましたわ
ttp://en.w3support.net/index.php?db=so&id=719115
ADOはデフォルトでSQL92準拠の構文
AccessはデフォルトでSQL89準拠の構文+一部準拠してない(VBのワイルドカード)
特にAccess2000はSQL89しか対応していない
また、mdbの設定でモードを変更出来る
ということでした
356NAME IS NULL:2011/05/20(金) 10:26:08.66 ID:8jU7fHP3
VS2005のデータアダプターの同時実行制御オプションONで
生成されるUpdateクエリのWHERE句は、
全列チェックではなく、SELECTで選択した列だけチェックされていますが、
これは、複数のユーザが同じクエリ(選択列)を実行した場合はOKだけど、
そうでない場合はNGじゃない。
357NAME IS NULL:2011/06/20(月) 16:42:47.59 ID:???
LEDいいよね

358NAME IS NULL:2011/06/20(月) 18:11:59.09 ID:???
EPI使ってるやついる?
ActiveRecordでinsert時のkey取得するのってどうやるの?
あと、QPEの接続パラメーター教えて

359NAME IS NULL:2011/07/14(木) 19:09:35.92 ID:???
質問があります。
以下のテーブルをDataAdapterで更新します。

変更前のテーブル
ID DATA
1 晴れ
2 曇り

変更後のテーブル
ID DATA
2 晴れ
1 曇り

IDは主キーに設定してあります。
この場合一意制約違反のエラーが起こります。
DataAdapterを使った更新方法で回避する方法はありますか?
360NAME IS NULL:2011/07/14(木) 22:48:45.40 ID:???
>>359
1 曇り
2 晴れ
 UPDATEすればいいだろ
361359:2011/07/15(金) 00:25:19.89 ID:???
>>360
回答ありがとうございます。
質問はテーブルを単純に書きましたがUPDATE以外にINSERTとDLEATEも同時にやりたいので、
DataAdapterを使用しています。
ID部分の入れ替え動作中に一意制約違反になってしまうので、どうにか回避出来る方法がないか探してます。
362NAME IS NULL:2011/07/15(金) 07:54:05.68 ID:???
>>361
仮に ID の最大値が 99 なら、
100足して、100引いたら、どうだべ。
363NAME IS NULL:2011/07/15(金) 13:15:58.50 ID:???
DataAdapter使ってんなら、ID以外の部分を入れ替えればいいだろ
364NAME IS NULL:2011/07/15(金) 14:36:36.64 ID:???
IDを書き換えるって発想がまずおかしい
IDを書き換えてダブったらエラーになるのは当然で
DataAdapterでどうこうするような話じゃないと思うが

UPDATEするのやめて、変更行はDELETEしてINSERTするようにすれば?
365NAME IS NULL:2011/07/15(金) 18:19:31.42 ID:???
>>364
DataRowに元テーブルの情報まで入っちまってるんで元情報を取っておくことが出来ない
やるとするとInsert用のRowを新規作成して元Rowからカラムを一つ一つコピーしていくアホ臭いことしないとならない
しょうがないので俺はカラム列挙してコピーするメソッド自作したよ
366NAME IS NULL:2011/07/16(土) 22:15:46.61 ID:???
俺ずっとADOのこと「アド」って読んでたんだけど・・・・


367NAME IS NULL:2011/07/23(土) 12:48:32.26 ID:ooK807YS
DataAdapterで更新っていうことにこだわってる理由がいまいちわからない。
どうして他の方法ではダメなのか、それを書かないとと思うのだが。
ExecuteNonQueryとか。
368NAME IS NULL:2011/07/23(土) 16:43:22.93 ID:???
エスパーすると
スキーマが度々変わってめんどい or カラム型チェックがなくなるのはヤダヤダ
あたりじゃないか
369NAME IS NULL:2011/08/02(火) 23:29:38.05 ID:???
!!!【ADO.netのソース流出】!!!

http://cdn1.publicphoto.xtube.com/photos/20110621/13/l76RjrQpn3yj.jpg

!!!【DANGER!!】【DANGER!!】【DANGER!!】!!!



370NAME IS NULL:2011/08/10(水) 10:12:46.30 ID:???
Visual Studio 2008 でSQL Server 2005 上のデータを表示・更新をするWindows Form
アプリケーションを作ろうとしています。

下のようなSQLで取得できるデータが対象。
SELECT D.DataNo, D.Hizuke, D.CustomerID, C.CustomerName
FROM TableData D JOIN Customer C on D.CustomerID=C.CustomerID

各カラムはフォーム上のTextboxに連結。
CustomerIDのTextboxを入力すると、CustomerNameのTextboxの表示が書き換えられる。

というのをやりたいんですが。

Windows Form アプリケーションのプロジェクトを新規作成。
データソースを新規作成。
使いそうなSQL Server上のテーブルを選んで追加。
データセットデザイナで、追加-TableAdapter。TableAdapter構成ウィザードを起動
ウィザードに従い、上のようなSQLを貼り付け、完了。
データセットデザイナ上にこんなのができた。
DataTable1
DataTable1TableAdapter
Fill, GetData()
Form1をデザイナで開き、DataTable1をドラッグ&ドロップ。
データが表示されるところまではできた。

あとどうしたらいいんですか。
371NAME IS NULL:2011/08/10(水) 13:44:23.26 ID:???
TextBoxのチェンジイベント補足してSelectしろ
372NAME IS NULL:2011/08/10(水) 16:35:14.36 ID:???
そんな蛸足配線みたいなことが出来るか。
次。
373NAME IS NULL:2011/08/10(水) 17:04:42.62 ID:???
>>372
回答者はお前だけじゃない。
答えられないからと”次”とかお前様主動でスレ進行させんな
374NAME IS NULL:2011/08/10(水) 17:36:49.88 ID:???
次も何も>>371で回答終わってんだろ
375NAME IS NULL:2011/08/23(火) 09:49:57.31 ID:???
TextBoxのチェンジイベントでSelectが嫌なら、
Formオープン時にSelectして適当な変数に格納、TextBoxのチェンジイベントでその値を取得
って流れになると思う。
結局はTextBoxのチェンジイベントを使うんじゃないの?
376NAME IS NULL:2011/09/03(土) 16:52:43.26 ID:???
バインドしたらいいだけ
377NAME IS NULL:2011/09/19(月) 17:37:25.62 ID:???
バインドしたらいいだけと言う対処方法を取る場合、
それの為だけに新しくテーブル作ったりするものなの?
バインドの為にローカルでmdbファイル準備するとか。
378NAME IS NULL:2011/09/20(火) 03:41:39.47 ID:???
お前バインドなんだと思ってんだ?
379NAME IS NULL:2011/09/20(火) 11:31:35.13 ID:???
わずか1ミリ秒でバインドを完了する
380NAME IS NULL:2011/09/20(火) 21:56:55.32 ID:???
Accessで言う連係だと思ってました。スマソ
非接続型になるから、メモリに読み込んでいて表示させても、
バインドしても処理内容は同じだったんだね。。。
381NAME IS NULL:2011/11/26(土) 10:33:19.73 ID:???
俺が使ってみた感想としては、DataTableは配列の塊として使いやすいよね。
後は要らんって感じなんだがな。
DataSetの有効活用方法ってあるのだろうか?型指定されたDataSetを使わない
場合には必要あるのかな?
382NAME IS NULL:2011/11/26(土) 13:13:40.69 ID:???
あげぽよ〜ん
383NAME IS NULL:2011/11/27(日) 03:47:20.24 ID:???
>>381
複数のDataTableをぶち込んで受け渡し
非接続だからいちいちdtoクラスとか作らなくていい
384NAME IS NULL:2011/11/27(日) 20:01:24.52 ID:???
>>383
なるほど。サンクス。
リレーション情報の活用ってしてますか?
俺はプログラム上で実現してるから、リレーションの
設定やらって基本しない。
開発時にエラーが出たりするのが逆に面倒だったりする。
385NAME IS NULL:2011/12/01(木) 16:46:12.13 ID:NE/R2Q2K
informixへの接続文字列わかる方いませんか?
odbcを使わずに接続できるらしいんですが調べても全然分からないんです
386NAME IS NULL:2011/12/02(金) 01:41:29.39 ID:???
>>385
ぐぐったらすぐ出てきたけど?
387NAME IS NULL:2011/12/02(金) 01:41:55.70 ID:???
388NAME IS NULL:2011/12/02(金) 11:38:19.59 ID:uq6jKSUZ
385です情報ありがとうございます。

●●.ConnectionString="Provider=Ifxoledbc;Data Source=データベース名@サーバー名;User ID=ユーザー名;Password=パスワード;"

でしてみたのですがエラー0x80040E21が出たので解決策を模索中です。
なにか根本的に間違ってるかもしれないです…
389NAME IS NULL:2011/12/11(日) 12:23:56.82 ID:55w2N/S/
検索エンジンGoogleで「インターネットテレビ 朝鮮総連 少頭劣一族 マイクロソフト社(又は経済産業省等気になる省やインターネットや原発、地震 波動砲)」を検索。
警察と自衛隊の武器は少頭劣一族が奪い、朝鮮に送ったらしい。知能障害以前の頭が悪い家族達。「工作員」の意味を知らない「工作員」家族。
390NAME IS NULL:2012/02/14(火) 20:45:35.48 ID:q17BHHig
すみません。質問いいですか?

C#でデータベースをdataset(データグリッドビューにバインドして作りました)にして扱っているのですが

訳あって同じ構造の別名テーブルに差し替える必要がでました。

クエリビルダでテーブルを差し替えると列の並びが狂うのですが、なにがおかしいのでしょうか?

また、列の並びをそのままに差し替えるいい方法はないでしょうか?

よろしくお願いします。
391NAME IS NULL:2012/02/14(火) 20:51:57.22 ID:???
すみません。急ぐもので。。C#スレに行かせて頂きます
392NAME IS NULL:2013/10/16(水) 03:55:42.10 ID:7O1WvKyT
いってらっしゃい
393NAME IS NULL:2014/07/20(日) 11:54:22.83 ID:usQ+cISA
★2ch勢いランキングサイトリスト★

◎ +ニュース板
・ 2NN
・ 2chTimes
◎ +ニュース板新着
・ 2NN新着
・ Headline BBY
・ unker Headline
◎ +ニュース板他
・ Desktop2ch
・ 記者別一覧
◎ 全板
・ 全板縦断勢いランキング
・ スレッドランキング総合ランキング
・ ログ速
◎ 全板実況込み
・ 2勢
・ READ2CH
・ i-ikioi

※ 要サイト名検索
394NAME IS NULL
データベースデザイナ、便利だとの宣伝に釣られて使ってしまい、いま地獄を味わっている。