- ベストアンサー
VBデータベース更新時のパラメータ値セット方法についてのご質問
- VB2010からSQLサーバーのデータベースに接続しており、dataAdapter.Updateを使用してデータベースを更新する際に、パラメーターへ値をセットする方法を教えてください。
- フォームの変数として定義されたdataAdapterにはSelectCommandとUpdateCommandが設定されており、それぞれのSQLコマンドのパラメーターに値をセットしています。
- データ表示時には正しくデータが表示されるのですが、更新時にはデータが更新されません。どのようにすればパラメーター化したところにデータをセットできるのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
DataAdapterやTableAdapterを使った更新だと、@parameterはまず使わないのでは? ていうか、そのためのDataTableではないかと。 DataTableは自分の各Rowの状態をRowStateとして記憶してるんで。 どうしても項目列を部分的に書き直したい場合は、DataAdapterでなく、SQLCommand使う。 1レコ単位じゃなくて一括更新する場合なんかもそのように。
その他の回答 (1)
- shockatz
- ベストアンサー率80% (153/191)
DataAdapterの挙動に誤解があります。 DataAdapterの更新機能は、指定したテーブルの行データ内容が変更されている場合、追加されている場合、削除されている場合を自動的に判定し、Update一発で自動更新を行うための、高度に抽象化されたDAO(データアクセスオブジェクト)です。 なので、dataSet内のDataTable/DataRowデータを更新し、dataAdapter.Update(dataTable)すれば自動的に更新されます。
お礼
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) ありがとうございます。 しかし私の書き方ではパラメーターがどこかに行ってしまいました(汗)
お礼
shockatz様、ご回答ありがとうございます。 今まではDataGridViewを使って一括更新しておりました。 1レコ単位の場合は直接SQLを実行しておりました。 そこで、1レコ単位の処理もパラメーターを使えるのでは?と勘違いした次第です。 私の勉強不足です。ご指導ありがとうございます。