トップ回答者
SqlDataSourceコントロールについて

質問
-
いつも、大変お世話になってます。
開発環境 VS2010, ASP.NET4.0, C#, SQL Server Express
基本的なことかもしれませんが、現在、WebページのTextBoxの記入内容をデータベースに登録しようとしています。
そこで、WebページにSqlDataSourceコントロールを配置して、「InsertQuery」にて、テーブルパラメータと、TextBoxを結びつけました。
また、このテーブルには、登録時刻のパラメータもありまして、上記、結びつけとは別に、設定します。
Webページのtexbox記入後、登録ボタンをクリックして、下記コードを実行しましたが、
// 現在の日付時刻を取得しセットする
DateTime dtNow = DateTime.Now;
SqlDataSource1.InsertParameters.Add("Date", dtNow.ToString());// 入力データをデータベースに保存する
SqlDataSource1.Insert();としたのですが、
”変数名 '@Date' は既に宣言されています。変数名は、クエリ バッチまたはストアド プロシージャ内で一意にしてください。”
のエラーが発生します。
アドバイスを頂ければありがたいです。よろしくお願い致します。
回答
すべての返信
-
SqlDataSource1.InsertParameters.Add("Date", dtNow.ToString());
これはDateというパラメータを追加しようとしています。.aspxファイルでDateというパラメータは既に定義されているため、さらにDateというパラメータを追加しようとしてエラーになっているのだと思います。Dateとうパラメータに値を入れたいのであれば、以下のようになります。
SqlDataSource1.InsertParameters("Date").DefaultValue = dtNow.ToString();
#訂正。正しくはInsertParameters["Date"]です。
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
- 編集済み trapemiyaModerator 2012年7月12日 0:48 訂正を追記
-
見れないとは表示されていないということですか? 私の環境では見えています。ブラウザはIE9です。
ソースを再掲載します。今度はコードブロックで囲まず、単なる文字列で掲載します。SqlDataSource1.InsertParameters("Date").DefaultValue = dtNow.ToString();
#訂正。正しくはInsertParameters["Date"]です。
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
- 編集済み trapemiyaModerator 2012年7月12日 0:48 訂正を追記
-
terapemiya さん>
言語は C# のようですが、以下のところで ( ) は [ ] でなくて
問題ないのでしょうか?> InsertParameters("Date")
noriyasu さん>SqlDataSource の InsertParameters に、
<asp:Parameter Name="Date" Type="String" />
のようにパラメータを設定済みなのに、同じ名前のパラメータ
を追加しようとしたからではないのですか?そうであれば、SqlDataSource.Inserting イベントのハンドラ
で、以下のように、設定済みのパラメータに代入すればうまく
いくはずです。protected void SqlDataSource1_Inserting(object sender,
SqlDataSourceCommandEventArgs e)
{
e.Command.Parameters["@Date"].Value = DateTime.Now.ToString();
}- 編集済み SurferOnWww 2012年7月11日 13:18
-