ASP NET Регистрация и добавление клиентов в базу данных tutorial 9

returnt

01.11.2014

ф3

Прежде всего, давайте создадим непосредственно страницу сайта, которая  будет отвечать за выдачу кредита клиенту (то, как создавать страницы, было рассмотрено здесь).

Создав пустую страницу, мы добавляем ей следующие компоненты с панели элементов: Label1 (будет отвечать за надпись «фамилия»), TextBox (поле ввода фамилии), Label1 (будет отвечать за надпись «Имя»), TextBox (поле ввода имени), Label1 (будет отвечать за надпись «отчество»), TextBox (поле ввода отчества), и конечно же кнопка «Добавить».

ф3

Далее накинем на страничку компонент GridViev в котором мы и будем выводить нашу информацию о клиентах.

Ну что ж с подготовкой страницы закончили, приступим непосредственно к проектированию БД, а точнее создадим таблицу клиенты. Подключившись к нашей базе через обозреватель серверов в microsoft visual studio.

ф4

Создадим таблицу клиенты (как работать с MSSQL), Добавляемы в нее поля, как показано на скриншоте ниже.

ф5

И сохраняем все изменения. После открываем таблице в режиме добавления записей и вносим одного клиента. Теперь возвращаемся в наш визуальный конструктор сайта, и добавляем элемент SqlDataSource, расположив его в произвольном месте. Далее на нём нажимаем «Настроить источник данных», в открывшемся окне указываем нашу БД, жмём «Далее» и здесь не меняя ничего, перейдя по кнопке «Дополнительно» ставим все галочки, которые позволят нам в дальнейшем получить сгенерированный код на редактирование и удаление записей в БД.

ф6

Теперь нажимаем «Далее» и «Готово». Теперь возвращаемся к элементу таблица и щёлкнув на него выберем источник данных, указав наш SqlDataSource1 который мы только что создали. Выставим галочки: «Включить сортировку», «Включить правку», «Включить удаление».

ф7 Выбрав элемент «Правка столбцов» мы попадаем на страницу редактирования столбцов нашей таблицы. Здесь можно под редактировать переименовать их.

ф8

Работа с настройкой подключения к БД закончена, обратите внимание мы подключились к БД вывели все записи в таблицу, поскольку запустив проект мы получим отображение того пользователя которого мы ввели в начале создания таблицы, при этом не написали ни строчки кода! Удобно! 🙂 Более того, мы получаем таблицу, которая уже позволяет вносить правку в созданных ранее записях, а так же удалять их.

Приступим к написанию логики добавления клиента. Для этого двойным кликом по созданной ранее кнопке «Добавить» переходим в код C# и пишем логику обработки события код в листинге 1.

Листинг 1:

protected void Button1_Click(object sender, EventArgs e)

{

klientDBDataContext db = new klientDBDataContext();

klient tebl = new klient();

tebl._familia = TextBox1.Text;

tebl._ima = TextBox2.Text;

tebl._otchestvo = TextBox3.Text;

db.klient.InsertOnSubmit(tebl);

db.SubmitChanges();

Response.Redirect(«/klient.aspx»);

}

Но теперь, когда мы напишем выше приведённый код, он не будет пока функционировать, поскольку мы не создали класс Linq. Создать его модно добавлением нового файла в проект из раздела Данные, выбрав Класс Linq to SQL. Вот и всё что я бы хотел рассказать связанное с добавление отображения данных с базы дынных и внесением записи в БД при помощи Linq запросов.

Более подробная инструкция приведена ниже в обзоре.


  • Oleksandr

    Подскажите:
    В базе klient у вас поля familia , ima . А при добавлении новых клиентов в БД на странице klient.aspx.cs у вас используются уже _familia , _imA, как они изменились, или как вы их связали ?

    • returnt

      Так получается потому что когда мы генерируем класс linq система создает автоматически реализацию этой таблицы в самом классе, поэтому когда мы инициализирует класс linq, в контекстном меню подсказки добавляется само обозначение с нижним подчеркиванием.

  • Лиза

    А подскажите, пожалуйста, у меня ругается на строки tebl._familia = TextBox1.Text; Пишет что недоступен из-за уровня защиты. Немного не понимаю где что менять надо

    • returnt

      Подобная ошибка может быть связана с недоступностью свойства класса. Как правило подобное сообщение, вызвано наличием соответствующего модификатора доступа у данного свойства. Рекомендую обратить на это внимание и пересмотреть код.

      • Лиза

        Работает только когда нижнее подчеркивание убираю, но в таком случае не добавляет уже существующий объект tabl

  • Жора

    klientDBDataContext db = new klientDBDataContext();
    эта херь подчеркнута и хоть усрись.

    • returnt

      Скорее всего не видит класс klientDBDataContext возможно у Вас он называется иначе или просто не видит его, проверьте пространство имён и using.

  • Данил

    Ругается на db.SubmitChanges();выдает ошибку Violation of PRIMARY KEY constraint ‘PK_stud1’. Cannot insert duplicate key in object ‘dbo.stud1’. The duplicate key value is (0).
    The statement has been terminated.

    что можно сделать??

  • Светлана

    Добрый вечер, можно задать вопрос, данный код работает только при первом и единственным добавлением записи в таблицу, добавляя вторую запись, программа выдает ошибку: Нарушение ограничения первичного ключа ‘PK_Table’. Не удается вставить повторяющийся ключ в объект ‘dbo.Таблица1’. Повторяющееся значение ключа: (0).
    Выполнение данной инструкции было прервано.

    Что нужно сделать чтобы данной ошибки не выдавалось?

    • Никола Тесла

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

      • Виктор

        а как это сделать, у вас в видео это показано как делается ?

        • krekerkreker07

          К сожалению в видео этого нет, вот подробная документация https://www.w3schools.com/sql/sql_autoincrement.asp

          • Виктор

            System.Data.SqlClient.SqlException: «Невозможно вставить явное значение для столбца идентификаторов в таблице «client», когда параметр IDENTITY_INSERT имеет значение OFF.»

            Уже все перепробовал, но постоянно выдает эту ошибку…