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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
insert1つの処理でもトランザ...
-
PEARのgetOneでレコードが見つ...
-
<VB.NET>INSERT文でDBにデータ...
-
Pro*Cの構文エラー
-
SQLインジェクション対策
-
VBA ACCESS SQL...
-
phpmyadminにタグを格納するには
-
mysqlの命令文をPDOに書き換...
-
PHPからデータベースに接続した...
-
VB.NET エラーになる箇...
-
sqliteの構造体
-
【初歩】配列の格納データ数だ...
-
C# で発生したException.Messag...
-
配列をループさせてUPDATE
-
MySQLでデータベースにデータin...
-
PHP4でのSmarty派生クラスの定...
-
実行時エラー3131 FROM 句の構...
-
Accessのテーブルへ複数の主キ...
-
PHP、SQLite3のデーターでログ...
-
csvをDBへ読み込んだら、NULLが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
insert1つの処理でもトランザ...
-
データベースに存在するデータ...
-
JAVA SQLServerException 列名 ...
-
<VB.NET>INSERT文でDBにデータ...
-
ResultSetインターフェイスでの...
-
Pro*Cの構文エラー
-
phpで複数の検索語を検索対象に...
-
INSERT,DELETEを同時に
-
VBA ACCESS SQL...
-
phpでforeach ($stmt as $row)...
-
MySQLのINSERT時にたまに重複に...
-
MYSQL UPDATE
-
配列をループさせてUPDATE
-
VB.NET エラーになる箇...
-
PHPからデータベースに接続した...
-
php postgres Insert と updat...
-
PHPのSQL文のデバッグ方法とコ...
-
PHP+PDO+MYSQL で実行されたSQ...
-
phpのupdate,sql文にて連番カラ...
-
PHPよりMySQLの操作のコードの...
おすすめ情報