최근 데이터 바인딩에서 Plural Sight ASP.NET 비디오를 보았고 <asp:SqlDataSource />
과 같은 선언적 데이터 소스 컨트롤을 발견했습니다.SqlDataSource를 통해 데이터베이스 테이블에 데이터 삽입
SQL Server 2008 데이터베이스의 내 영화 테이블에 기본 영화 제목 및 출시일을 삽입 할 수없는 이유를 이해하는 데 문제가 있습니다. 이 시점까지 아무런 문제가 없었으며 SelectCommand를 통해 gridView를 통해 테이블에 액세스 할 수있었습니다.하지만 동영상 삽입 버튼을 클릭하면 수동으로 만든 새 동영상 매개 변수가 테이블에 추가되지 않습니다. 여기
더 나은 모습을 위해 내 코드입니다 : 위 알 수 있습니다으로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 및 string에 대한 문자열과 동일한 유형. 문제는 데이터베이스에서 설정 한 값이 위에서 선언 한 값과 다를 수 있습니까?
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; –