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)
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
File contenente la gestione del Database (solo lo spezzone che interessa):
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