C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: C# 更新操作時の行のロックに関して伺いたいです。


(過去ログ 71 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■41586 / inTopicNo.1)  C# 更新操作時の行のロックに関して伺いたいです。
  
□投稿者/ ミネ (1回)-(2009/09/25(Fri) 09:20:27)

分類:[C#] 

こんにちは。

C#を初めに勉強していますが、更新処理時の行のロックに関して、教えて頂きますと幸いです。

参考になるものでも、かまいません。

よろしく、お願いいたします。
引用返信 編集キー/
■41587 / inTopicNo.2)  Re[1]: C# 更新操作時の行のロックに関して伺いたいです。
□投稿者/ επιστημη (2173回)-(2009/09/25(Fri) 09:44:18)
επιστημη さんの Web サイト
> 更新処理時の行のロックに関して、教えて頂きますと幸いです。

...C#のお話ですか? もしかしてデータベース?
ロックのナニが知りたいのでしょか? 質問の体裁を成してないんですけど。


引用返信 編集キー/
■41588 / inTopicNo.3)  Re[2]: C# 更新操作時の行のロックに関して伺いたいです。
□投稿者/ ミネ (2回)-(2009/09/25(Fri) 09:58:38)
No41587 (επιστημη さん) に返信
>>更新処理時の行のロックに関して、教えて頂きますと幸いです。
>
> ...C#のお話ですか? もしかしてデータベース?
> ロックのナニが知りたいのでしょか? 質問の体裁を成してないんですけど。
>
>

今C#でプログラムを組んでいますが、排他処理にて行のロックは可能ですか?

一個の排他処理を作りたいです。でも、ヒント来ないです。
よろしく、お願いいたします。


引用返信 編集キー/
■41589 / inTopicNo.4)  Re[3]: C# 更新操作時の行のロックに関して伺いたいです。
□投稿者/ ミネ (3回)-(2009/09/25(Fri) 10:26:13)
No41588 (ミネ さん) に返信
> ■No41587 (επιστημη さん) に返信
> >>更新処理時の行のロックに関して、教えて頂きますと幸いです。
>>
>>...C#のお話ですか? もしかしてデータベース?
>>ロックのナニが知りたいのでしょか? 質問の体裁を成してないんですけど。
>>
>>
>
> 今C#でプログラムを組んでいますが、C#で排他処理を作りたいです。
> でも、ヒント来ないです。
> よろしく、お願いいたします。
>
>
引用返信 編集キー/
■41590 / inTopicNo.5)  Re[3]: C# 更新操作時の行のロックに関して伺いたいです。
□投稿者/ επιστημη (2174回)-(2009/09/25(Fri) 10:35:00)
επιστημη さんの Web サイト
> 今C#でプログラムを組んでいますが、排他処理にて行のロックは可能ですか?

いやだから、「何」の行ロックですか?
データベース・テーブル上の一つの行(record)に対してなら、
なにもせんでも大抵のデータベースでは排他制御されていると思うけど。
# そうでないと使い物にならないし

引用返信 編集キー/
■41591 / inTopicNo.6)  Re[4]: C# 更新操作時の行のロックに関して伺いたいです。
□投稿者/ すがり (84回)-(2009/09/25(Fri) 10:41:04)
明示的に行ロック→更新
みたいなことがしたいのでしょうか?

「SELECT 時に明示的な行ロックを行なう方法 」
http://www.shift-the-oracle.com/sql/select-for-update.html

oracleの向けですが、ほかのDBMSでも似たようなことは可能かと。
引用返信 編集キー/
■41593 / inTopicNo.7)  Re[1]: C# 更新操作時の行のロックに関して伺いたいです。
□投稿者/ はつね (1078回)-(2009/09/25(Fri) 11:13:57)
はつね さんの Web サイト
No41586 (ミネ さん) に返信
> C#を初めに勉強していますが、更新処理時の行のロックに関して、教えて頂きますと幸いです。

C#に行ロックの概念はありません。
ADO.NETなどでデータベースに接続した場合、使用しているデータベースによっては行ロックの
概念があり、その場合は行ロックが行えます。
ですのでC#という情報だけではなくADO.NETでどんなデータベースに接続するのかを明示して
もらわないと具体的な回答は誰もできません。

なお、データベースにおける行ロックとは、更新中の行は他から更新しようとしてもロック解除
待ちになって更新できないことを意味します。
このときの「更新中」はその1行だけの話ではなく、トランザクション単位になりますので、
1トランザクション内で複数行を更新していたら、その更新している行すべてがロックされて
います(単純に言えば)。

引用返信 編集キー/
■41594 / inTopicNo.8)  Re[5]: C# 更新操作時の行のロックに関して伺いたいです。
□投稿者/ ミネ (4回)-(2009/09/25(Fri) 11:25:53)
答えありがとうございました。

先の質問は大変失礼しました。

自分考えた事と質問したことが異なりました。

日本語の勉強頑張ります。大変申し訳ございませんでした。

C#で 一つの トランザクション処理をつくりたかったんでした。

例:  トランザクション開始
      update1();//ここでは成功
      update2();//ここで失敗
    トランザクション終了

    update1()では成功して、update2()で失敗したら、何とかupdate1()とupdate2を全部ロールバックさせたいです。

なんか、ADOを使っているらしいですが、自分C#よく分かりません。
よろしく、お願いいたします。



引用返信 編集キー/
■41595 / inTopicNo.9)  Re[6]: C# 更新操作時の行のロックに関して伺いたいです。
□投稿者/ επιστημη (2175回)-(2009/09/25(Fri) 11:42:20)
επιστημη さんの Web サイト
2009/09/25(Fri) 11:58:40 編集(投稿者)
> C#で 一つの トランザクション処理をつくりたかったんでした。
> 
> 例:  トランザクション開始
>       update1();//ここでは成功
>       update2();//ここで失敗
>     トランザクション終了
> 
>     update1()では成功して、update2()で失敗したら、何とかupdate1()とupdate2を全部ロールバックさせたいです。

それで、何がわかりませんか?

/*
 * update1(), update2() がいずれも 
 * 成功/失敗に応じて true/false を返すなら:
 */
BEGIN TRANSACTION する。
if ( update1() && !result2() ) {
  ROLLBACK TRANSACTION する。
} else {
  COMMIT TRANSACTION する。
}

↑きっと間違い。やりたいことは:
- update1() と update2() が両方成功したときに限り COMMIT
- update1() が失敗したら update2() は行わずに ROLLBACK
じゃないかしらね。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -