
No.7ベストアンサー
- 回答日時:
あ、ちょっと誤解があるようなので一言。
ADOのRecordSetオブジェクトや、ADO.NETのDataAdapterオブジェクトは、利用者が『泥臭いSQL文字列の直接記述』をしなくていいように、DBへの一般的な基本操作がラップされたもので、DataAdapterはその内容をウィザードで自動設定できるようになってます。すごく便利。
だけどその中身は、しっかりSQLが書かれているわけで、使っていないわけではありません。
もちろん、そのSQLの内容は自由に変更できます。
VisualStudioのプロパティウィンドウでも修正できますが、SelectCommandなら、
adapter.SelectCommand.CommandText = "SQLの取得文";
adapter.Fill(dataset);
んで、今回のような「全体一括更新」は、DataAdapterのUpdateCommandに割り当ててでもできますが、行データを返す必要がないので、より軽いSqlCommandオブジェクトを使ったほうがよいです。
(SqlCommandつうのはDataAdapterの内部オブジェクト)
using (var conn = new SqlConnection(connectionString)) {
var cmd = new SqlCommand("一括更新SQL文", conn);
cmd.Connection.Open();
cmd.ExecuteNonQuery();
// var n = cmd.ExecuteQuery(); // 処理件数を取得する必要がある場合
}
要するに、SQL文も、ストアドプロシージャも、DataAdapterからでも、SQLCommandからで実行します。
ようり高次元のTableAdapterや、LINQ for SQL、Entity Frameworkでも同じように、SQLやストアドを直実行するためのめそっどがあります。
No.6
- 回答日時:
C#で行カーソルを使って行単位の処理がしたい、ということでしょうか……。
ADOでは行単位の取得・更新ができていたのですが、
ADO.NETでは行単位の取得(DataReaderクラスを使用)しかできなくなってしまいました。
なので、
・ストアドプロシージャにしてDB側で行う
・大人しくSQLで処理する
・ORマッピングツールを使う
・DataAdapter.FillメソッドでDataTableにテーブルを読み込んだ上で、
DataTableの各行を更新し、DataAdapter.UpdateメソッドでDBに書き戻す
http://msdn.microsoft.com/ja-jp/library/dd297827 …
のいずれかの方法を取ることになるんじゃないかと思います。
No.5
- 回答日時:
> keyのないDBでどうやってSQLを組むでしょうか。
DBの種類は何ですか?
SQL ServerとかOracleとかMySQLとかAccessとかありますよね?
「keyのないDB」がどういう意味かよくわかりませんが、
テーブルに主キーや外部キーがなくても、SQLで特定列のみ更新できます。
例:「売上」テーブルの「売上額」をすべて1.05倍したい場合
UPDATE 売上
SET 売上額 = 売上額 * 1.05
(WHEREを省くとすべての行を更新します)
No.4
- 回答日時:
> たくさんの処理系があるので、.NetもDBも色々です。
DBによってやり方も色々ですし、そのすべてをここで網羅するのは不可能です。
ここで聞くより「C# DB名 更新」とかのキーワードで探す方が早いです。
> 問題なのはSQLでは処理できないテーブルです。
よく意味が分かりませんが、DBの種類が分からないと何とも言えません。
No.3
- 回答日時:
順に処理したければ
#include <stdio.h>
exec sql include sqlca;
void main() {
exec sql connect to sample;
if(SQLCODE!=0) printf("SQL CONNECT %d", SQLCODE);
exec sql declare c1 cursor for select col1, col2 from Test1 for update;
if(SQLCODE!=0) printf("SQL DECLARE %d", SQLCODE);
exec sql open c1;
if(SQLCODE!=0) printf("SQL open %d", SQLCODE);
while (SQLCODE == 0){
exec sql fetch c1 into :col1, :col2;
if(SQLCODE == 0) {
printf("%s %s\n", col1, col2);
exec sql update Test1 set col2 = 'abababab' where CURRENT OF c1;
if(SQLCODE!=0) printf("SQL UPDATE %d", SQLCODE);
}
else {
if(SQLCODE!=100) printf("SQL FETCH %d", SQLCODE);
}
}
exec sql close c1;
if(SQLCODE!=0) printf("SQL CLOSE %d", SQLCODE);
exec sql connect reset;
}
No.2
- 回答日時:
一括更新なら
#include <stdio.h>
exec sql include sqlca;
void main() {
exec sql connect to sample;
if(SQLCODE!=0) {
printf("SQL CONNECT %d", SQLCODE);
}
else {
exec sql update Test1 set col2 = 'bababa';
if(SQLCODE!=0) printf("SQL UPDATE %d", SQLCODE);
}
exec sql connect reset;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- 国産車 ホンダフィット2代GE6に乗っていますが RSというのはスポーティーですか 1 2023/06/01 15:09
- Access(アクセス) 実行時エラー3131 FROM 句の構文エラーです について 7 2022/06/13 15:45
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- 風邪・熱 RSウイルスについて 息子がRSウイルスに感染してます。 3月14日~発熱、咳、嘔吐の症状が出始めま 1 2023/03/21 18:05
- 子供の病気 RSについて 何度も質問ごめんなさい。 息子がRSになってから、だいぶ経ちます。 14日からRSの症 5 2023/03/26 13:29
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- 査定・売却・下取り(バイク) Z900 2019年 ブラック 7000キロ 修復なし 純正デカールキレイに剥がしてる。 立ちごけ1 1 2023/08/25 17:28
- 赤ちゃん 生後1週間の新生児がいます。 上に5歳と2歳の子もいるのですが 2人とも鼻水と咳が出て下の子に 移ら 1 2023/03/07 21:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JAVA SQLServerException 列名 ...
-
PDOを使って複数キーワード検索...
-
php postgres Insert と updat...
-
データベースに存在するデータ...
-
phpのupdate,sql文にて連番カラ...
-
VBA ACCESS SQL...
-
like検索の複数キーワードで、...
-
<VB.NET>INSERT文でDBにデータ...
-
アラートでyes noを作りたいです。
-
テキストボックスに入れた内容...
-
PHP 10件表示 "前へ" "次へ"
-
SQL文が実行できません
-
PHP(PDO)でDBの情報を完全一...
-
データベースのページング出力...
-
実行時エラー3131 FROM 句の構...
-
MySQLでデータベースにデータin...
-
【PHPとDBの連動】時刻表作成
-
重複データをカウントするのに...
-
VBAをつかってクエリの情報を抽...
-
phpでmysqlを使ってデータベー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
insert1つの処理でもトランザ...
-
<VB.NET>INSERT文でDBにデータ...
-
JAVA SQLServerException 列名 ...
-
Pro*Cの構文エラー
-
VBA ACCESS SQL...
-
PHP&MySQLでの文字列+数列の一...
-
【初歩】配列の格納データ数だ...
-
mysqliを使ってデータベースを...
-
配列で受け取った値がUPDATEで...
-
MySQLのINSERT時にたまに重複に...
-
一度検索されたものに対するソ...
-
cakePHPでSQLが実行できない。
-
PHP4とORACLE接続について
-
phpでforeach ($stmt as $row)...
-
phpmyadminにタグを格納するには
-
zendframework
-
データベースに存在するデータ...
-
データに「,」があると「"」で...
-
Q&Aサイトを作成していてURLの...
-
PHP+PDO+MYSQL で実行されたSQ...
おすすめ情報