Originariamente inviato da JackInTheGreen
No no io uso SQL Server
se usi sqlserver dal 7.0 in su ti consilio di utilizzare i metodi e le classi offerte dal namespace system.data.sqlclient e non system.data.oledbclient. Sulle differenze tra i due dataprovider ti invito a leggere le rispettive docuemntazioni.
Mi sa che è sbagliato proprio il concetto e dovrei usare Sqlconnection e Sqlcommand per creare un Sqldatareader. Vero?
premesso che utilizzi le classi a partire dal namespace System.Data.OleDb
un oggetto di tipo OleDbDataReader serve per essere riempito di record e letto dal primo all'ultimo. Non ha nessuna utilita' quando devi far un update dei dai presenti nel db. Per quest'ultima operazione hai bisogno di un oggetto di tipo OleDbCommand. Detto questo per quello che vuoi fare tu dovresti specificare meglio le operazioni che vuoi fare con il command dopo averlo inizializzato.
codice:
Dim strQuery As String
Dim objConnessione As New OleDbConnection(strConnessione)
Dim objCommand As OleDbCommand
Dim param As Integer = 1
strQuery = strQuery .Format("UPDATE tbTabella SET Campo = 'Pippo' WHERE Codice = {0}", param)
objCommand = objConnessione.createcommand ' un metodo come un altro pper inizializzare il command associando la connection
objCommand.CommandType = CommandType.Text
objCommand.CommandText = strQuery
objConnessione.Open()
objCommand.ExecuteNonQuery()
objConnessione.Close()
Nel tuo codice, utilizzi un oggetto parameter che di solito si utilizza quando hai a che fare con delle storedprocedures. Da dire che non lo inizializzi e valorizzi molto bene.
Forse quando usi i parametri dovresti comunque fare cosi
codice:
objCommand.Parameters.Add("("@Codice", OleDb.OleDbType.Integer).Value = 1
in modo da diminuire il riscio di errori (se il campo Codice della tua tabella e' un intero non credo che passargli 001 sia una buona idea).
Il codice inserito non e' stato verificato ma puo' servirti come indicazione e approfondito con la documentazione.