0

最近、私はデータバインディングでPlural Sight ASP.NETビデオを見ていて、<asp:SqlDataSource />などの宣言型データソースコントロールに出くわしました。SqlDataSourceを使用してデータベーステーブルにデータを挿入

なぜSQL Server 2008データベースのムービーテーブルにデフォルトムービータイトルとリリース日を挿入できないのか理解できません。私はこの時点までに何のトラブルもなく、gridViewを介してSelectCommandを介してテーブルにアクセスできましたが、ムービーの挿入ボタンをクリックすると、新しい手動で作成されたムービーパラメータはテーブルに追加されません。ここで

はよりよい一見のための私のコードです:

InsertCommand="INSERT INTO movies (title, release_date) VALUES (@title, @release_date)" 
SelectCommand="SELECT TOP 30 movie_id, title, release_date FROM movies ORDER BY movie_id DESC" 
runat="server" ID="_moviesDataSource" DataSourceMode="DataReader"> 
<InsertParameters> 
    <asp:Parameter Name="title" /> 
    <asp:Parameter Name="release_date"/> 
</InsertParameters> 
</asp:SqlDataSource> 
<asp:Button ID="Button1" runat="server" Text="Insert new movie" 
    onclick="Button1_Click" /><br /><br /> 
<asp:GridView ID="_moviesGridInsert" runat="server" DataSourceID="_moviesDataSource"> 
</asp:GridView> 

あなたは上記気づくこととして、私は、パラメータASPタグに「...」=タイプを持っていなかったが、この前に、私が持っていましたrelease_dateのtitleとdateTimeの文字列に等しい型。私のデータベースで設定した値が、上で宣言した値と異なるかもしれませんか?

Cそれの#バックエンド:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    Page.MaintainScrollPositionOnPostBack = true; 

    // TODO - Insert movie (manually inserted with just user input of button click) 
    _moviesDataSource.InsertParameters["title"].DefaultValue = "My movie"; 
    _moviesDataSource.InsertParameters["release_date"].DefaultValue = "01/01/2008"; 
    _moviesDataSource.Insert(); 
} 

私はあなたがテーブル自体を見ることができれば、それが役立つだろうにも関わらず、そのグリッドを追加することができず、画像を投稿することができ、まだいませんよ...しかし、とにかく、一度ボタンをクリックするとテーブルは変わらず、データベースを見ると新しい値は追加されません。

+0

"release_date"]。DefaultValue = "01/01/2008"; リリース日は実際には文字列ですか? –

+0

@SteveWellens release_dateタイプは、ユーザコントロールフォームで指定されたDateTimeタイプです。私はあなたがパラメータを挿入しているときは、すべて引用符で囲む必要があると思います。とにかくおかげです。 –

+0

右のように、明示的に型を設定するのに役立ちます。例:SqlDataSource1.SelectParameters [0] .DbType = DbType.Date; –

答えて

0

をSqlDataSourceタグの内部またはのButton1 Click()方法で何かが間違って絶対に何もありませんでした。

問題:

  1. 私はPage.Validate()を持っていたので、フォームが記入されるまでページを検証できませんでした検証フォームがありました。私はグループIDにすべてのフォーム検証を追加し、Page.Validate( "form1")を設定してこれを修正しました。
  2. 上記を修正した後、テーブル設定(Visual StudioでSQL管理を簡単に行うことができます)に移動し、movie_idを自動インクリメントに設定する必要がありました。これは、この値がパラメータにないため、自動インクリメントしない場合は、この列の値をNULLに設定しようとします(ほとんどの場合、NULLは許可されません)。私の場合は望んでいない)。

@スティーブ・ウェレンズ、努力のおかげで!誰かがこの小さなヒントから学ぶことができることを願っています!

関連する問題