最近、私はデータバインディングで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();
}
私はあなたがテーブル自体を見ることができれば、それが役立つだろうにも関わらず、そのグリッドを追加することができず、画像を投稿することができ、まだいませんよ...しかし、とにかく、一度ボタンをクリックするとテーブルは変わらず、データベースを見ると新しい値は追加されません。
"release_date"]。DefaultValue = "01/01/2008"; リリース日は実際には文字列ですか? –
@SteveWellens release_dateタイプは、ユーザコントロールフォームで指定されたDateTimeタイプです。私はあなたがパラメータを挿入しているときは、すべて引用符で囲む必要があると思います。とにかくおかげです。 –
右のように、明示的に型を設定するのに役立ちます。例:SqlDataSource1.SelectParameters [0] .DbType = DbType.Date; –