- PR -

Webアプリについて

投稿者投稿内容
kagura
常連さん
会議室デビュー日: 2003/03/26
投稿数: 27
投稿日時: 2004-03-16 20:02
#あぁ・・・書けないウチにタイミングを逃してしまった・・・
http://slashdot.jp/articles/03/02/19/2219212.shtml?topic=54
登録商標ですねぇ・・・
ichiro
会議室デビュー日: 2004/03/15
投稿数: 12
投稿日時: 2004-03-16 20:56
皆さん、ご意見ありがとうございます。
顔爺さん、
引用----------
4. A1が確定処理(WHERE VER =100 は成立しないので UPDATE 対象は 0 -> 失敗)
--------------
とありますが、対象0ってどうやって取得するのでしょうか?

s_sql = "UPDATE wktbl SET komoku1 = 'saaaaa'"
s_sql += ", komoku2 = 'bbbbbbbb' "
s_sql += ", ・・・・"

CreateMySqlCommand(s_sql, myConn)

Public Sub CreateMySqlCommand(ByVal myExecuteQuery As String, ByVal myConnection As SqlConnection)
Dim myCommand As New SqlCommand(myExecuteQuery, myConnection)
myCommand.Connection.Open()
myCommand.ExecuteNonQuery()
myConnection.Close()
End Sub 'CreateMySqlCommand

こんな感じにしたいのですが。
顔爺
ベテラン
会議室デビュー日: 2003/10/03
投稿数: 52
投稿日時: 2004-03-16 21:50
引用:

ichiroさんの書き込み (2004-03-16 20:56) より:
皆さん、ご意見ありがとうございます。
顔爺さん、
引用----------
4. A1が確定処理(WHERE VER =100 は成立しないので UPDATE 対象は 0 -> 失敗)
--------------
とありますが、対象0ってどうやって取得するのでしょうか?

s_sql = "UPDATE wktbl SET komoku1 = 'saaaaa'"
s_sql += ", komoku2 = 'bbbbbbbb' "
s_sql += ", ・・・・"

CreateMySqlCommand(s_sql, myConn)

Public Sub CreateMySqlCommand(ByVal myExecuteQuery As String, ByVal myConnection As SqlConnection)
Dim myCommand As New SqlCommand(myExecuteQuery, myConnection)
myCommand.Connection.Open()
myCommand.ExecuteNonQuery()
myConnection.Close()
End Sub 'CreateMySqlCommand

こんな感じにしたいのですが。



ExecuteNonQuery の戻り値って、UPDATE 文の場合更新件数じゃありませんでしたっけ?

# 現在、自宅で酔っ払っております(<-だったら書くな)
# 確認してください。
He
大ベテラン
会議室デビュー日: 2002/12/18
投稿数: 141
投稿日時: 2004-03-16 22:09
引用:

顔爺さんの書き込み (2004-03-16 21:50) より:
ExecuteNonQuery の戻り値って、UPDATE 文の場合更新件数じゃありませんでしたっけ?



ですね。『影響を受けた行数』が返ります。
それと、コネクションを確実にCloseするためにTry-Catch-Finallyで括っておいたほうがよいでしょう。

【参考】
SqlCommand.ExecuteNonQuery メソッド
DB 設計者のための明解 ADO.NET
顔爺
ベテラン
会議室デビュー日: 2003/10/03
投稿数: 52
投稿日時: 2004-03-17 21:50
引用:

Heさんの書き込み (2004-03-16 22:09) より:
引用:

顔爺さんの書き込み (2004-03-16 21:50) より:
ExecuteNonQuery の戻り値って、UPDATE 文の場合更新件数じゃありませんでしたっけ?



ですね。『影響を受けた行数』が返ります。
それと、コネクションを確実にCloseするためにTry-Catch-Finallyで括っておいたほうがよいでしょう。




He 様、フォローありがとうございました。


以下、追記。

Optimistic Offline Lock を使う場合の注意点。

データ更新時にほかのセッションですでに変更されていないかを判断する方法ですから、
ユーザーにいろいろ入力させたあげくにその入力は無駄だったということになることが
あります。
システム的にそれが許されないときは、Jitta 様の書いているとおり適切な排他ロック
を使うなどしてください。

あと、ものの本を確認したら、Jitta 様の書いたところの「オプティミスティック同時
実行」も Optimistic Offline Lock の一種ですね。

この発言は修正します。
引用:

簡単に実装できる DB の排他制御としては、Optimistic Offline Lock というものもあります。


->
Optimistic Offline Lock を簡単に実装する方法としては、以下のようなものがあります。

スキルアップ/キャリアアップ(JOB@IT)