Вставка данных в таблицу базы данных через SqlDataSource - PullRequest
0 голосов
/ 18 января 2012

Недавно я смотрел видео Plural Sight ASP.NET о привязке данных, и я столкнулся с декларативными элементами управления источниками данных, такими как <asp: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>

Как вы могли заметить выше, у меня не было Type = "..." в теге asp параметра, но доэто, у меня были типы, равные string для title и dateTime для release_date.Может ли быть проблема в том, что значения, которые я установил в своей базе данных, отличаются от тех, которые я объявил выше?

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();
}

Мне не разрешеноразмещать изображения пока нет, поэтому добавить сетку невозможно, хотя это поможет, если вы сможете просмотреть саму таблицу ... Но в любом случае таблица после нажатия кнопки остается прежней, и когда я смотрю вбаза данных, новые значения не добавляются.

1 Ответ

0 голосов
/ 19 января 2012

Ничего плохого не было внутри тега SqlDataSource или Button1_Click () .

Проблемы:

  1. Существовала форма проверки, которая не позволяла бы странице проверяться, пока форма не была заполнена, потому что у меня было Page.Validate () .Я исправил это, добавив все проверки формы к идентификатору группы и установив: Page.Validate ("form1") .
  2. После исправления вышеуказанного,Затем мне нужно было перейти к настройкам таблицы (что проще сделать в Visual Studio, чем в SQL Management) и установить movie_id в режим автоматического увеличения.Причина этого заключается в том, что это значение отсутствует в параметрах, и поэтому, если оно не будет автоматически увеличиваться, оно попытается установить для этого значения столбца значение NULL (и в большинстве случаев NULL не допускается илине хотел в моем случае).

@ Стив Уэлленс, спасибо за усилия!Надеюсь, кто-то может извлечь уроки из этого небольшого совета!

...