Salve,
ho trovato questo link http://www.adszone.org/vbnet.aspx?page=adonet3 in cui è riportato un esempio di come utilizzare DataSet, DataTable e aggiornare il database dopo aver aggiornato i due oggetti. Ho modificato questo esempio lanciando il metodo di Inserimento() da un pulsante. I dati da inserire vengono letti riga per riga da un file e la DataTable del DataSet mi si riempie normalmente. Subito dopo il metodo Inserimento lancio anche il metodo AggiornaDatabase() ma non aggiorna nulla. Dove è l'errore?
File contenente il Form (è solo lo spezzone che interessa)
File contenente la gestione del Database (solo lo spezzone che interessa):codice:Dim db As New GestioneDatabase Private Sub Leggi() 'Dim oFile As System.IO.File Dim oRead As System.IO.StreamReader Dim indirizzo As String = "" Try oRead = IO.File.OpenText("C:\elencocomuni.txt") While oRead.Peek <> -1 indirizzo = oRead.ReadLine().ToString() 'MsgBox(oRead.ReadLine()) Riempi(indirizzo) End While oRead.Close() Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub Riempi(ByVal indirizzo As String) Dim chiavi As String = "comune territorio arte cultura sociale vita" Dim home As Boolean = False Dim visite As Int32 = 0 Dim ind As String = indirizzo db.Inserimento(ind, chiavi, home, visite) db.AggiornaDatabase() End Sub
codice:Public Sub AggiornaDatabase() If objDataSet Is Nothing Then Exit Sub Dim objDataAdapter As SqlCeDataAdapter Try Open() Dim sQuery As String = "select * from sitipermessi" Dim sInsert As String = "insert into sitipermessi " & _ "(Indirizzo, ParoleChiavi, Home, Visite) values (?, ?, ?, ?)" Dim sDelete As String = "delete from sitipermessi where ID = ?" Dim sUpdate As String = "update sitipermessi " & _ "set Indirizzo = ?,ParoleChiavi = ?, Home = ?, Visite = ? where ID = ?" Dim objInsertCmd As New SqlCeCommand(sInsert, objConn) Dim objDeleteCmd As New SqlCeCommand(sDelete, objConn) Dim objUpdateCmd As New SqlCeCommand(sUpdate, objConn) Dim objParam As SqlCeParameter ' Insert objParam = objInsertCmd.Parameters.Add("@ind", _ SqlDbType.NVarChar, 100) objParam.SourceColumn = "Indirizzo" objParam.SourceVersion = DataRowVersion.Original objParam = objInsertCmd.Parameters.Add("@chiavi", _ SqlDbType.NText) objParam.SourceColumn = "ParoleChiavi" objParam.SourceVersion = DataRowVersion.Original objParam = objInsertCmd.Parameters.Add("@home", _ SqlDbType.Bit) objParam.SourceColumn = "Home" objParam.SourceVersion = DataRowVersion.Original objParam = objInsertCmd.Parameters.Add("@visite", _ SqlDbType.Int) objParam.SourceColumn = "Visite" objParam.SourceVersion = DataRowVersion.Original ' Delete objParam = objDeleteCmd.Parameters.Add("@id", _ SqlDbType.Int) objParam.SourceColumn = "ID" objParam.SourceVersion = DataRowVersion.Original ' Update objParam = objUpdateCmd.Parameters.Add("@Indirizzo", _ SqlDbType.NVarChar) objParam.SourceColumn = "Indirizzo" objParam.SourceVersion = DataRowVersion.Current objParam = objUpdateCmd.Parameters.Add("@chiavi", _ SqlDbType.NText) objParam.SourceColumn = "ParoleChiavi" objParam.SourceVersion = DataRowVersion.Current objParam = objUpdateCmd.Parameters.Add("@home", _ SqlDbType.Bit) objParam.SourceColumn = "Home" objParam.SourceVersion = DataRowVersion.Current objParam = objUpdateCmd.Parameters.Add("@visite", _ SqlDbType.Int) objParam.SourceColumn = "Visite" objParam.SourceVersion = DataRowVersion.Current objParam = objUpdateCmd.Parameters.Add("@id", _ SqlDbType.Int) objParam.SourceColumn = "id" objParam.SourceVersion = DataRowVersion.Original objDataAdapter = New SqlCeDataAdapter(sQuery, objConn) Dim cmdBldr = New SqlCeCommandBuilder(objDataAdapter) objDataAdapter.InsertCommand = objInsertCmd objDataAdapter.DeleteCommand = objDeleteCmd objDataAdapter.UpdateCommand = objUpdateCmd ' table.AcceptChanges() 'MessageBox.Show("Number of rows: " & objDataSet.Tables(0).Rows.Count) Try objDataAdapter.Update(objDataSet.Tables(0)) Catch ex As Exception MsgBox(ex.Message) End Try If Not Nothing Is objDataAdapter.InsertCommand Then objDataAdapter.InsertCommand.Dispose() End If Catch e As Exception MsgBox(e.Message) End Try Close() End Sub Public Sub Inserimento(ByVal ind As String, ByVal chiavi As String, ByVal home As Boolean, _ ByVal visite As Int32) If objDataSet Is Nothing Then Exit Sub Try With objDataSet.Tables("sitipermessi") 'Dim table As DataTable = objDataSet.Tables("sitipermessi") Dim objRow As DataRow = .Rows.Add objRow.BeginEdit() objRow("Indirizzo") = ind objRow("ParoleChiavi") = chiavi objRow("Home") = home objRow("Visite") = visite objRow.EndEdit() 'table.Rows.Add(objRow) End With Catch e As Exception MsgBox(e.Message) End Try End Sub

Rispondi quotando

