0

최근 데이터 바인딩에서 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(); 
} 

내가 그렇게 그리드를 추가, 이미지를 게시 할 수 아직 아니에요하면 테이블 자체를 볼 수 있다면 도움이 될 비록 수 없습니다 .. 그러나 어쨌든, 일단 버튼을 클릭하면 테이블이 그대로 유지되고 데이터베이스를 볼 때 새 값이 추가되지 않습니다.

+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은 허용되지 않거나 나의 경우에는 원하지 않았다).

@ 스티브 웰 렌스, 노력에 감사드립니다! 누군가가이 작은 팁에서 배울 수 있기를 바랍니다!

관련 문제