• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ASP.NET C# SQLパラメータ)

ASP.NET C# SQLパラメータの設定方法は?

このQ&Aのポイント
  • グリッドビューの編集、更新キャンセル機能でのUpdateCommandにSQL文を設定する方法がわからない。
  • SqlConnectionとSqlCommandを使用してSQLパラメータを設定したいが、UpdateCommandに対するパラメータの設定方法が不明。
  • パラメータを使用してUpdateCommandにSQL文を設定したいが、具体的な設定方法が分からない。

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

  • ベストアンサー
  • Xaval
  • ベストアンサー率58% (61/105)
回答No.2

UpdateParameters["@param"].DefaultValue の「@」は要りません。SQL文の中でのみ必要です。 UpdateCommandのSQL文は変更しないでください。 初期状態のままで。 それを設定すると、またSqlCommandParameterのコレクションも入れなおす必要が出るかもしれないので(詳細不明)。 また、UpdateParameters["@param"].DefaultValueの値に合わせて、 e.Keys, e.NewValuesなどのSqlのパラメータが詰め込まれます。 つまり、e.Keysなどから UpdateParameters["@param"].DefaultValue につっこんでも順序が逆です。 (ような気がする。ただし、GridViewのRowUpdatingならセーフ?) ※ちょっといま開発環境がないので、確認できません。ごめんなさい。 SqlDataSourceコントロールを配置したら、そこに登録されているものの変更は、VisualStudio上のデザイン時のみ設定してください。 プログラムからは、UpdateParametersなどだけを変更してください。 1)GridViewを配置 2)SqlDataSourceを配置(GridViewのデータソースに指定) 3)SqlDataSourceにSelect,UpdateなどのSQL文(@パラメータつき)を登録 4)実行。必要ならUpdatingイベントなどで、UpdateParameters["Param1"].DefaultValueなどを設定。 もしくは、SqlDataSource.Updatingイベントの e.NewValues["Param1"] = (int)x などの入力でも可能 それと今後のため。。 基本的に、.NETのフレームワークは層が厚いので、コードをガリガリ書く20世紀型JAVA的開発はしません。 ひたすらイベントの実行順序やそのアーキテクチャを学習してくださいね。 この機会にほかのイベントやその引数、実行順序などを調べてみるといいと思います。

arnk
質問者

お礼

ご丁寧に教えていただき本当に助かりました! ありがとうございました、感謝します!

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • Xaval
  • ベストアンサー率58% (61/105)
回答No.1

SlqDataSourceのUpdatingイベントではだめですか? あのへんならありそうですが。 また、 SqlDataSourceの UpdateParameters["Param1"].DefaultValue = "xxx"; でも可です。

arnk
質問者

お礼

SelectDataSource.UpdateParameters["@param1"].DefaultValue = e.NewValues[0].ToString(); SelectDataSource.UpdateParameters["@param2"].DefaultValue = e.NewValues[1].ToString(); SelectDataSource.UpdateParameters["@param3"].DefaultValue = e.Keys[0].ToString(); SelectDataSource.UpdateParameters["@param4"].DefaultValue = e.Keys[1].ToString(); string strsql = "update mst_attribute_selection set selection = @param1, seq = @param2 where attribute_no = @param3 and selection = @param4"; SelectDataSource.UpdateCommand = strsql; でやってみたんですがだめでした。。 ど素人なものですいません。。 やり方が間違っているんでしょうか。。

すると、全ての回答が全文表示されます。

関連するQ&A