Roger Rainey Ответов: 4

VB.net: как обновить базу данных из datagridview


Я пытаюсь прочитать datagridview и опубликовать изменения обратно в базу данных SQL. У кого-нибудь есть какой-нибудь простой код, который будет работать? Я новичок в этом деле. VB.net.

[смущенный]

4 Ответов

Рейтинг:
2

vijitizer

У меня есть соединение доступа с textbox в качестве фидера данных для базы данных, измените его на SQL, если хотите.
Код таков:

Imports System
Imports System.Data
Imports System.Data.OleDb
Public Class Form2
    Dim conaccess As New OleDbConnection
    Dim conreader As OleDbDataReader
    Dim concmd As New OleDbCommand


    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        DataGridView1.EditMode = False
        conaccess.ConnectionString = "Provider=Microsoft.jet.oledb.4.0;data source=d:\vijay.mdb"
        conaccess.Open()
        loadGrid()
    End Sub

    Private Sub loadGrid()
        Dim access As String
        access = "select * from vijay"
        Dim DataTab As New DataTable
        Dim DataAdap As New OleDbDataAdapter(access, conaccess)
        DataAdap.Fill(DataTab)
        DataGridView1.DataSource = DataTab
    End Sub

    Private Sub new_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles new_btn.Click

        Dim no As String
        no = "select Max(ID) from vijay"
        Dim concmd As New OleDbCommand(no, conaccess)
        conreader = concmd.ExecuteReader
        If (conreader.Read) Then
            If (IsDBNull(conreader(0))) Then
                id_txt.Text = "1"
            Else
                id_txt.Text = conreader(0) + 1
            End If
            name_txt.Clear()
            branch_txt.Clear()
            age_txt.Clear()
            class_txt.Clear()
            gen_txt.Clear()
        End If
    End Sub

    Private Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick
        Dim i As Integer

        i = DataGridView1.CurrentRow.Index
        Try
            id_txt.Text = DataGridView1.Item(0, i).Value
            name_txt.Text = DataGridView1.Item(1, i).Value
            class_txt.Text = DataGridView1.Item(2, i).Value
            gen_txt.Text = DataGridView1.Item(3, i).Value
            branch_txt.Text = DataGridView1.Item(4, i).Value
            age_txt.Text = DataGridView1.Item(5, i).Value
        Catch ex As Exception

        End Try
        
    End Sub


    Private Sub del_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles del_btn.Click
        Dim delcmd As New OleDbCommand("delete from vijay where id=" & id_txt.Text & " ", conaccess)
        delcmd.ExecuteNonQuery()
        MsgBox("Record is deleted")
        loadGrid()
        id_txt.Clear()
        name_txt.Clear()
        branch_txt.Clear()
        age_txt.Clear()
        class_txt.Clear()
        gen_txt.Clear()
    End Sub

    Private Sub save_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles save_btn.Click
        Dim access As String = String.Format("INSERT INTO vijay (Name,Class,Branch,Gender,Age) VALUES('{0}','{1}','{2}','{3}','{4}')", name_txt.Text, class_txt.Text, branch_txt.Text, gen_txt.Text, age_txt.Text)
        concmd.Connection = conaccess
        concmd.CommandText = access
        concmd.ExecuteNonQuery()
        MsgBox("Record Successfully Saved")
        loadGrid()
        id_txt.Clear()
        name_txt.Clear()
        branch_txt.Clear()
        age_txt.Clear()
        class_txt.Clear()
        gen_txt.Clear()
    End Sub

    Private Sub up_btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles up_btn.Click
        Dim access As String
        access = "UPDATE vijay SET Name = '" & name_txt.Text & "', Age = '" & age_txt.Text & "', Gender ='" & gen_txt.Text & "' , Branch ='" & branch_txt.Text & "' , Class = '" & class_txt.Text & "' where id=" & id_txt.Text & ""
        Dim cmd As New OleDbCommand(access, conaccess)
        cmd.ExecuteNonQuery()
        loadGrid()
        id_txt.Clear()
        name_txt.Clear()
        branch_txt.Clear()
        age_txt.Clear()
        class_txt.Clear()
        gen_txt.Clear()

    End Sub
End Class


Sandeep Mewara

Всегда оборачивайте свой код в предварительные теги. Это делает вопрос читаемым, поскольку он форматирует его.

Member 8600075

После загрузки данных из DBase с ключом поиска (транзакция No), как я хочу редактировать данные в DgView с несколькими строками и чем я сохраняю снова после изменения значения или редактирования в DgV

Извините за мой английский

Рейтинг:
1

Kschuler

Привет Роджер,
Когда люди просят "простой код", на него невозможно ответить. Весь код адаптирован к индивидуальным потребностям, и никто не будет иметь именно тот код, который вы хотите. (И они не создадут его для вас, если вы сами не захотите приложить к нему некоторые усилия.) Лучший способ начать такой проект-прочитать несколько статей о том, что вы делаете. Вы можете искать в codeproject статьи, например этот.[^Затем, когда вы реализуете код, который вы нашли в статье, если у вас возникнут проблемы, опубликуйте свой код и сообщения об ошибках, а также описание того, что делает ваша программа и что вы хотите, чтобы она делала. Тогда мы сможем вам помочь. Надеюсь, это даст вам хорошее место для начала.


Рейтинг:
0

Member 10192835

Я сделал проект в visual basic 2010 и sql server, я хочу обновить запись в party master в другой форме, где при нажатии на кнопку update откроется другая форма обновления и там в dtagrid будут представлены все записи таблицы данных , на этой форме есть три кнопки: update, delete, cancel, я просто хочу, чтобы при нажатии на кнопку update после редактирования строки данных данные сохранялись в datagrid и то же самое в таблицу данных в sql server.

код формы обновления приведен ниже.


Система Импорта.Данных.Поставщики sqlclient
Система Импорта
Система Импорта.Сведения
Импортирует System.Data.Для oledb
Система Импорта.Окна.Формы.Практическое руководство
Публичный класс frmupdate
Наследует Систему.Окна.Форм.Форма
Дим CNN как новое sqlconnection("источник данных=.\Именем sqlexpress;ключевое слово attachdbfilename=С:\Пользователи\документы\админ\визуальная студия 2010\проекты\Вриндаван REALTECH\Вриндаван REALTECH\Вриндаван.МДФ;Комплексная безопасность=true;в пользовательский экземпляр=true в ")
Dim cmd как новая SqlCommand
Дим ДР в качестве объекта sqldatareader
Dim da As SqlDataAdapter
Dim ds как новый набор данных()




Частная суб frmupdate_Load(как byval отправителя как объект, как byval E Как системы.EventArgs) Обрабатывает Меня. Load

'TODO: эта строка кода загружает данные в таблицу' VrindavanDataSet3.p_master'. Вы можете переместить или удалить его по мере необходимости.
Me.P_masterTableAdapter.Заполнить(Мне.VrindavanDataSet3.p_master)
Dim sql как строка
Попробуй
телеканал CNN.Открыть()
Dim da As SqlDataAdapter
Dim ds как новый набор данных()
среда SQL = "выбрать * из p_master;"
da = New SqlDataAdapter(sql, cnn)

да.Заполнить(ДС, "p_master")
DataGridView1.Источник данных = ДС
DataGridView1.DataMember = "p_master"
DataGridView1.Источник данных = ДС.DefaultViewManager

телеканал CNN.Рядом()

Поймать ex как исключение
MsgBox(ex. Message, MsgBoxStyle.Критично, Я. Текст)
Конец Попытки

Конец Подводной Лодки

Private Sub btnupdate_Click(ByVal sender As System.Объект, бывал е как система.EventArgs) обрабатывает btnupdate.Щелчок
ДС.Столы("p_master").Метод acceptchanges()
da. Update(ds, "p_master")
Тусклый элемент как новый DataGridViewRow
DataGridView1.AllowUserToAddRows = True
пункт.CreateCells(DataGridView1)
Ящик для сообщений.Show ("запись успешно обновлена")


Конец Подводной Лодки
Конец Класса


Пожалуйста, дайте мне решение, это очень срочно.


Рейтинг:
0

Member 13011121

Private Sub frmupdate_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load