Jayeshkumar M Patel Ответов: 2

Сохранение данных из datagridview к базе в vb.net 2008


Уважаемый Сэр / Мадам

Я сделал проект, который содержит Datagridview в форме, а также я использую базу данных в качестве sql 2005

теперь у меня есть проблема сохранить данные из строк datagridview в базу данных в событии нажатия кнопки

Мой код сохранить только данные последней строки в базе данных как сохранить все строки данные из datagridview в базу данных вот мой код

RS.Open("select * from purchasebill where entryno like '" & TextEntryNo.Text & "'", CN, CursorTypeEnum.adOpenKeyset, LockTypeEnum.adLockPessimistic)

        If (RS.EOF And RS.BOF) Then

            RS.AddNew()
            MsgBox(TextEntryNo.Text & "   Is Saved")

        Else

            If RS("EntryNo").Value = TextEntryNo.Text Then

                MsgBox(TextEntryNo.Text & "    User Ia Allready Exist")
                   
                CmdNew.Focus()

               Exit Sub

            End If

        End If
       
        RS("EntryNo").Value = TextEntryNo.Text
        RS("Entrydate").Value = MaskEntryDate.Text
        RS("BillNo").Value = TextBillNo.Text
        RS("billDate").Value = MaskBillDate.Text
        RS("SupplierName").Value = TextSupplierName.Text
        RS("Billtype").Value = ComboBillType.Text
         
     For i As Integer = 0 To DGVRecord.RowCount - 1

            RS("productname").Value = Me.DGVRecord.Rows(i).Cells("Product").Value
            RS("batchno").Value = Me.DGVRecord.Rows(i).Cells("batchno").Value
            RS("expirydate").Value = Me.DGVRecord.Rows(i).Cells("Expiry").Value

        Next

        RS.Update()

        RS.Close()


Please Help me to solve this 
Thanking you
Jayeshkumar m Patel

2 Ответов

Рейтинг:
2

ryanjayson

Попробуйте включить

RS.Update()
на вашей петле:

 For i As Integer = 0 To DGVRecord.RowCount - 1

           RS("productname").Value = Me.DGVRecord.Rows(i).Cells("Product").Value
           RS("batchno").Value = Me.DGVRecord.Rows(i).Cells("batchno").Value
           RS("expirydate").Value = Me.DGVRecord.Rows(i).Cells("Expiry").Value

       RS.Update()
Next



если этот код не работает попробуйте следующий код:

''Declare this to your class
 Public Const CONNECTION_STRING As String = "Data Source=YOUR_HOSTNAME;Initial Catalog=DATABASE_NAME; Integrated Security=True"
    Dim dbConnection As SqlConnection = New SqlConnection(CONNECTION_STRING)
Dim ds As DataSet = New DataSet
Dim da As SqlDataAdapter
''//Declare this to your class

 Private Sub updateDGV() 
        Dim SQLText As String = "SELECT Field1,Field2,Field3,Field4,Field5 FROM TEST"

        Try
            If dbConnection.State = ConnectionState.Open Then dbConnection.Close()
            dbConnection.Open()
            da= New SqlDataAdapter(SQLText, dbConnection)
            da.Fill(ds, "TEST")
            dbConnection.Close()
 
        Dim cb As SqlCommandBuilder = New SqlCommandBuilder(da)
        da.Update(ds, "TEST")
     
       Catch ex As Exception
            MessageBox.Show(ex.ToString)
       End Try
  
  End Sub



Вызовите метод updateDGV для кнопки сохранения.
Надеюсь, это вам поможет.


Рейтинг:
0

JonCox

Проблема заключается в том, что вы переписываете значения на каждой итерации. Вы можете попытаться переместить вызов обновления внутрь цикла for. Однако это будет не очень эффективно, так как вы сделаете n вызовов обновления в БД.

[Просто объединил оба ответа от пользователя в 1]

For i As Integer = 0 To DGVRecord.RowCount - 1

            RS("productname").Value = Me.DGVRecord.Rows(i).Cells("Product").Value
            RS("batchno").Value = Me.DGVRecord.Rows(i).Cells("batchno").Value
            RS("expirydate").Value = Me.DGVRecord.Rows(i).Cells("Expiry").Value
'The update is moved into the loop creating multiple calls to the update
RS.Update()
        Next
        RS.Close()


Лучший способ-создать динамическую строку обновления. Я не очень хорошо разбираюсь в vb, но незнание того, как кодируется ваш объект RS, не помогает.

Вот реализация, которая использует набор данных и адаптер данных для заполнения datagridview (в c#)

SqlDataAdapter da=new SqlDataAdapter("select * from product",strcon);
SqlCommandBuilder cb=new SqlCommandBuilder(da);
DataSet ds = new DataSet();
da.Fill(ds);
dataGridView1.DataSource=ds.Tables[0];

//now u can save changes to back end with
da.Update(ds);


это не мой код, а от кого-то другого.:
http://forums.devshed.com/net-development-87/update-table-in-database-through-datagridview-in-winform-350445.html[^]


Jayeshkumar M Patel

Спасибо за ваш ответ
я очень новой для vb.net
однако ваш ответ маленькая помощь полная мне
можете ли вы дать мне точный код для сохранения данных из datagridview в vb.net