• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB DB更新時にパラメーターへ値のセット)

VBデータベース更新時のパラメータ値セット方法についてのご質問

このQ&Aのポイント
  • VB2010からSQLサーバーのデータベースに接続しており、dataAdapter.Updateを使用してデータベースを更新する際に、パラメーターへ値をセットする方法を教えてください。
  • フォームの変数として定義されたdataAdapterにはSelectCommandとUpdateCommandが設定されており、それぞれのSQLコマンドのパラメーターに値をセットしています。
  • データ表示時には正しくデータが表示されるのですが、更新時にはデータが更新されません。どのようにすればパラメーター化したところにデータをセットできるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • shockatz
  • ベストアンサー率80% (153/191)
回答No.2

DataAdapterやTableAdapterを使った更新だと、@parameterはまず使わないのでは? ていうか、そのためのDataTableではないかと。 DataTableは自分の各Rowの状態をRowStateとして記憶してるんで。 どうしても項目列を部分的に書き直したい場合は、DataAdapterでなく、SQLCommand使う。 1レコ単位じゃなくて一括更新する場合なんかもそのように。

kutsusuzu
質問者

お礼

shockatz様、ご回答ありがとうございます。 今まではDataGridViewを使って一括更新しておりました。 1レコ単位の場合は直接SQLを実行しておりました。 そこで、1レコ単位の処理もパラメーターを使えるのでは?と勘違いした次第です。 私の勉強不足です。ご指導ありがとうございます。

その他の回答 (1)

  • shockatz
  • ベストアンサー率80% (153/191)
回答No.1

DataAdapterの挙動に誤解があります。 DataAdapterの更新機能は、指定したテーブルの行データ内容が変更されている場合、追加されている場合、削除されている場合を自動的に判定し、Update一発で自動更新を行うための、高度に抽象化されたDAO(データアクセスオブジェクト)です。 なので、dataSet内のDataTable/DataRowデータを更新し、dataAdapter.Update(dataTable)すれば自動的に更新されます。

kutsusuzu
質問者

お礼

shockatz様、ご回答ありがとうございます。 ご指摘頂きました、datasetにデータを入れてみました。 ○DataRowを更新,Updateを行うことで更新が確認されました。 For Each dr As DataRow In dataSet.Tables(0).Rows   dr("Name") = TextBoxName.Text   dataAdapter.Update(dataSet) Next ○またこちらの方法でも更新が確認出来ました。 dataSet.Tables(0).Rows(0).Item("Name") = TextBoxName.Text dataAdapter.Update(dataSet) ありがとうございます。 しかし私の書き方ではパラメーターがどこかに行ってしまいました(汗)