none
Как с веб-формы внести изменения в базу данных RRS feed

  • Вопрос

  • Есть база данных SQL. В ней таблица, которая имеет столбцы типа text и datetime. Как сделать, чтобы с веб-формы в базу данных вносилась информация (не стирая преведущей). Понимаю что надо использовать LINQ to SQL, но не знаю как. Справка MSDN не помогает (в ней только как получить данные). Если кто поможет, имя таблицы, столбцов и переменных с данными берите любые.

    19 ноября 2009 г. 18:55

Ответы

  • Необходимо добавлять строки в таблицы средствами Linq?Какие контролы?
    Как вставить строки в базу данных(linq to sql)
    • Предложено в качестве ответа I.Vorontsov 23 ноября 2009 г. 6:47
    • Помечено в качестве ответа I.Vorontsov 2 декабря 2009 г. 16:12
    20 ноября 2009 г. 10:10
  • Если хотите использовать L2S, то примерно так:

    • Добавляете поддержку L2S в ваш код и перетаскиваете на дизайнер те таблицы, которые нужны. У самого объекта есть название, скажем Stats.

    • Далее берете из формы данные, вставляете их в сущность.

    • Используете InsertOnSubmit()

    • Сохраняете иземения

    Вот пример с базой Stats и объектом Persons:

    using (var dc = new StatsDataContext())
    {
      // названия контролов только для примера
      Person p = new Person(tbName.Text, int.Parse(tbAge.Text));
      dc.Persons.InsertOnSubmit(p); // добавляем
      dc.SubmitChanges(); // сохраняем
    }

    Вот и всё.


    - Dmitri Nesteruk
    • Предложено в качестве ответа Dmitri Nesteruk 22 ноября 2009 г. 9:10
    • Помечено в качестве ответа I.Vorontsov 2 декабря 2009 г. 16:11
    21 ноября 2009 г. 22:44
  • Есть база данных SQL. В ней таблица, которая имеет столбцы типа text и datetime. Как сделать, чтобы с веб-формы в базу данных вносилась информация (не стирая преведущей). Понимаю что надо использовать LINQ to SQL, но не знаю как. Справка MSDN не помогает (в ней только как получить данные). Если кто поможет, имя таблицы, столбцов и переменных с данными берите любые.


    По моему задача достаточно тривиальна вот кусок кода который заносит в БД новую строку с записями
    СПРАВКА:Здесь в три табл. БД добавляются записи (строки)

    'Обработка события щелчка кнопки (по которому производится добавление в БД)
    Public Sub ThemePageAddThemeLinkBtnClick(ByVal sender As Object, ByVal e As EventArgs) 'Здесь из текстового поля для добавления новой темы извлекается текст и добавлятся в БД 'Ниже два текстовых поля (у вас это любой контрол, с которого надо внести инфу в БД)
    Dim AddNewThemeTextBox As TextBox
    Dim NewThemeFirstMessageTextBox As TextBox Dim strKey As String = "VotecoForumDataBaseConnectionString" Dim cns As String = ConfigurationManager.ConnectionStrings(strKey).ConnectionString 'Строка соединения 'Это запросы
    Dim strSQL As String = "SELECT * FROM ForumTopics" 'Для добавления в табл.ForumTopics Dim strSQL1 As String = "SELECT * FROM ForumMessages" 'Для записи первого сообщения Dim strSQL2 As String = "SELECT * FROM ForumUsers" 'Для определения наличия пользователя в БД форума Using cn As New SqlConnection(cns) cn.Open() Dim cmd2 As New SqlCommand(strSQL2, cn) Dim rdr2 As SqlDataReader = cmd2.ExecuteReader() 'Чтение в цикле поля UserName и установка флага IsForumUser Do While rdr2.Read If rdr2("UserName") = HttpContext.Current.User.Identity.Name Then 'Если пользователь обнаружен IsForumUser = True 'то устанавливаем флаг Exit Do 'и выходим из цикла Else IsForumUser = False 'Если не обнаружен, то добавляем его в БД Форума End If Loop rdr2.Close() If IsForumUser = False Then AddNewForumUserInDB() End If Dim cmd As New SqlCommand(strSQL, cn) 'Dim rdr As SqlDataReader = cmd.ExecuteReader() Dim ds As New VotecoForumDataBaseDataSet Dim ta As New VotecoForumDataBaseDataSetTableAdapters.ForumTopicsTableAdapter Dim strSQL_forCalculateUserID As String = "SELECT UserID FROM ForumUsers" 'Для определения ID пользователя, добавляющего тему Dim cmd_forCalculateUserID As New SqlCommand(strSQL_forCalculateUserID, cn) Dim rdr_forCalculateUserID As SqlDataReader = cmd_forCalculateUserID.ExecuteReader() 'Вычисление значения UserID для записи добавляемой темы Dim UID_max As Integer Do While rdr_forCalculateUserID.Read UID_max = Math.Max(rdr_forCalculateUserID("UserID"), 0) Loop rdr_forCalculateUserID.Close() 'Создание и инициализация экземпляра темы Dim Theme As New Theme() With Theme '.TopicID = 0 'инициализация нулем (возможно, не надо) .ForumID = 1 .UserID = UID_max .IsClosed = False .IsSticky = False .LastMessageID = 0 .RepliesCount = 0 .Subject = AddNewThemeTextBox.Text .Visible = True .ViewCount = 0 'инициализация нулем (возможно, не надо) .RepliesCount = 0 'инициализация нулем (возможно, не надо) End With Dim rdr_forCalculateTopicID As SqlDataReader = cmd.ExecuteReader() 'Вычисление значения TopicID добавляемой темы Do While rdr_forCalculateTopicID.Read Theme.TopicID = Math.Max(rdr_forCalculateTopicID("TopicID"), 0) Theme.TopicID = Theme.TopicID + 1 Loop rdr_forCalculateTopicID.Close() 'Добавление записей (новой записи TopicID и других) Dim rw As DataRow rw = ds.Tables("ForumTopics").NewRow() rw("TopicID") = Theme.TopicID rw("ForumID") = Theme.ForumID rw("UserID") = Theme.UserID rw("Subject") = Theme.Subject rw("Visible") = Theme.Visible rw("LastMessageID") = Theme.LastMessageID rw("IsSticky") = Theme.IsSticky rw("IsClosed") = Theme.IsClosed rw("ViewsCount") = Theme.ViewCount rw("RepliesCount") = Theme.RepliesCount ds.Tables("ForumTopics").Rows.Add(rw) ta.Update(ds)
    DataSet Вы должны создать предварительно либо программно, либо в дизайнере.
    • Предложено в качестве ответа VOTECO 30 ноября 2009 г. 13:53
    • Помечено в качестве ответа I.Vorontsov 2 декабря 2009 г. 16:11
    30 ноября 2009 г. 12:45

Все ответы

  • Через сервер конторол или собственной функцией?
    19 ноября 2009 г. 19:25
  • Необходимо добавлять строки в таблицы средствами Linq?Какие контролы?
    Как вставить строки в базу данных(linq to sql)
    • Предложено в качестве ответа I.Vorontsov 23 ноября 2009 г. 6:47
    • Помечено в качестве ответа I.Vorontsov 2 декабря 2009 г. 16:12
    20 ноября 2009 г. 10:10
  • Если хотите использовать L2S, то примерно так:

    • Добавляете поддержку L2S в ваш код и перетаскиваете на дизайнер те таблицы, которые нужны. У самого объекта есть название, скажем Stats.

    • Далее берете из формы данные, вставляете их в сущность.

    • Используете InsertOnSubmit()

    • Сохраняете иземения

    Вот пример с базой Stats и объектом Persons:

    using (var dc = new StatsDataContext())
    {
      // названия контролов только для примера
      Person p = new Person(tbName.Text, int.Parse(tbAge.Text));
      dc.Persons.InsertOnSubmit(p); // добавляем
      dc.SubmitChanges(); // сохраняем
    }

    Вот и всё.


    - Dmitri Nesteruk
    • Предложено в качестве ответа Dmitri Nesteruk 22 ноября 2009 г. 9:10
    • Помечено в качестве ответа I.Vorontsov 2 декабря 2009 г. 16:11
    21 ноября 2009 г. 22:44
  • А как добавить поддержку L2S на сайт? И что это такое?
    24 ноября 2009 г. 16:05
  • А как добавить поддержку L2S на сайт? И что это такое?

    L2S это LINQ to SQL (компонент для управления данными). По том как им пользоваться написано огромное количество документации.
    25 ноября 2009 г. 6:56
  • Есть база данных SQL. В ней таблица, которая имеет столбцы типа text и datetime. Как сделать, чтобы с веб-формы в базу данных вносилась информация (не стирая преведущей). Понимаю что надо использовать LINQ to SQL, но не знаю как. Справка MSDN не помогает (в ней только как получить данные). Если кто поможет, имя таблицы, столбцов и переменных с данными берите любые.


    По моему задача достаточно тривиальна вот кусок кода который заносит в БД новую строку с записями
    СПРАВКА:Здесь в три табл. БД добавляются записи (строки)

    'Обработка события щелчка кнопки (по которому производится добавление в БД)
    Public Sub ThemePageAddThemeLinkBtnClick(ByVal sender As Object, ByVal e As EventArgs) 'Здесь из текстового поля для добавления новой темы извлекается текст и добавлятся в БД 'Ниже два текстовых поля (у вас это любой контрол, с которого надо внести инфу в БД)
    Dim AddNewThemeTextBox As TextBox
    Dim NewThemeFirstMessageTextBox As TextBox Dim strKey As String = "VotecoForumDataBaseConnectionString" Dim cns As String = ConfigurationManager.ConnectionStrings(strKey).ConnectionString 'Строка соединения 'Это запросы
    Dim strSQL As String = "SELECT * FROM ForumTopics" 'Для добавления в табл.ForumTopics Dim strSQL1 As String = "SELECT * FROM ForumMessages" 'Для записи первого сообщения Dim strSQL2 As String = "SELECT * FROM ForumUsers" 'Для определения наличия пользователя в БД форума Using cn As New SqlConnection(cns) cn.Open() Dim cmd2 As New SqlCommand(strSQL2, cn) Dim rdr2 As SqlDataReader = cmd2.ExecuteReader() 'Чтение в цикле поля UserName и установка флага IsForumUser Do While rdr2.Read If rdr2("UserName") = HttpContext.Current.User.Identity.Name Then 'Если пользователь обнаружен IsForumUser = True 'то устанавливаем флаг Exit Do 'и выходим из цикла Else IsForumUser = False 'Если не обнаружен, то добавляем его в БД Форума End If Loop rdr2.Close() If IsForumUser = False Then AddNewForumUserInDB() End If Dim cmd As New SqlCommand(strSQL, cn) 'Dim rdr As SqlDataReader = cmd.ExecuteReader() Dim ds As New VotecoForumDataBaseDataSet Dim ta As New VotecoForumDataBaseDataSetTableAdapters.ForumTopicsTableAdapter Dim strSQL_forCalculateUserID As String = "SELECT UserID FROM ForumUsers" 'Для определения ID пользователя, добавляющего тему Dim cmd_forCalculateUserID As New SqlCommand(strSQL_forCalculateUserID, cn) Dim rdr_forCalculateUserID As SqlDataReader = cmd_forCalculateUserID.ExecuteReader() 'Вычисление значения UserID для записи добавляемой темы Dim UID_max As Integer Do While rdr_forCalculateUserID.Read UID_max = Math.Max(rdr_forCalculateUserID("UserID"), 0) Loop rdr_forCalculateUserID.Close() 'Создание и инициализация экземпляра темы Dim Theme As New Theme() With Theme '.TopicID = 0 'инициализация нулем (возможно, не надо) .ForumID = 1 .UserID = UID_max .IsClosed = False .IsSticky = False .LastMessageID = 0 .RepliesCount = 0 .Subject = AddNewThemeTextBox.Text .Visible = True .ViewCount = 0 'инициализация нулем (возможно, не надо) .RepliesCount = 0 'инициализация нулем (возможно, не надо) End With Dim rdr_forCalculateTopicID As SqlDataReader = cmd.ExecuteReader() 'Вычисление значения TopicID добавляемой темы Do While rdr_forCalculateTopicID.Read Theme.TopicID = Math.Max(rdr_forCalculateTopicID("TopicID"), 0) Theme.TopicID = Theme.TopicID + 1 Loop rdr_forCalculateTopicID.Close() 'Добавление записей (новой записи TopicID и других) Dim rw As DataRow rw = ds.Tables("ForumTopics").NewRow() rw("TopicID") = Theme.TopicID rw("ForumID") = Theme.ForumID rw("UserID") = Theme.UserID rw("Subject") = Theme.Subject rw("Visible") = Theme.Visible rw("LastMessageID") = Theme.LastMessageID rw("IsSticky") = Theme.IsSticky rw("IsClosed") = Theme.IsClosed rw("ViewsCount") = Theme.ViewCount rw("RepliesCount") = Theme.RepliesCount ds.Tables("ForumTopics").Rows.Add(rw) ta.Update(ds)
    DataSet Вы должны создать предварительно либо программно, либо в дизайнере.
    • Предложено в качестве ответа VOTECO 30 ноября 2009 г. 13:53
    • Помечено в качестве ответа I.Vorontsov 2 декабря 2009 г. 16:11
    30 ноября 2009 г. 12:45