Oppure

Loading
29/01/21 8:23
pacifico
Gent.mi,

in un programma in Mdf, ho inserito tramite le TextBox in DataGridView dei record aventi l'apostrofo con il metodo: Replace("'", "''";).
Regolarmente modifico e non riesco ad eliminiare tali record.
Il codice che uso per la eliminazione:

string Prova1Rimozione = DataGridView.Rows  [DataGridView.SelectedRows[0].Index].Cells[1].Value.ToString();
  string sqlQuery = "DELETE FROM [tblDatabase] WHERE [Prova1] = '" + Prova1Rimozione + "';";
  SqlCommand QueryDatabase = new SqlCommand(sqlQuery, connessioneDB);


le prove effettuate sono diversi senza ottenere un risultato e gradirei un Vostro gradito aiuto per risolvere.

Anticioatamente ringrazio e fiducioso, saluto.
Domenico.
aaa
29/01/21 11:24
Thejuster
Per la mia esperienza, il metodo usato causa un bel pò di problemi.

In generale, per andare sul sicuro si dovrebbero eliminare record a partire da un ID o come di regola andrebbero create le tabelle. e non da un determinato tipo di valore.
Cioè puoi cercare il valore in una query e ci sta.
Ma eliminare un record partendo da un valore senza specificare un ID rischi di eliminare più record o magari un record per un'altro.


un esempio corretto è:

| ID | Nome | Congome
+---+------+-----------
| 0 | 'GG' | Tofy
| 1 | AB | Tofy
+----------------------


Una volta che hai trovato il record corrispondente ottieni ID di una chiave primaria
(l'ID essendo progressivo non è mai uguale) in seguito elimini il record specificando esattamente l'ID e non un valore.
Cosa accadrebbe se esempio in una tabella ci sono due record diversi ma entrambi un valore uguale in cognome?
Se fai un query di ricerca, come detto va bene.
Se invece fai un delete specificando il valore potrebbe eliminare il primo record con il valore trovato e non quello che esattamente cerchi di eliminare.


Le cause possono essere tante, tra cui nomi riservati, magari uno spazio non visibile ed altri fattori.

Se la tua tabella non ha una chiave primaria progressiva, credo si possa ancora aggiungere.
Sono un pò arrugginito sul sql che non uso da parecchio tempo. Ma la logia e questa.

Altrimenti ti consiglio di inserire un breakpoint in fase di debug e controllare esattamente cosa succede
nella variabile e se la modifica viene effettuata.

Il Metodo Replace non dovrebbe causare nessun problema, esiste proprio per quello.

Il tuo codice va benissimo, non presenta errori.
Magari il problema e proprio questo che ti ho indicato.


Ultima modifica effettuata da Thejuster 29/01/21 13:15
mire.forumfree.it/ - Mire Engine
C# UI Designer
29/01/21 13:12
Carlo
Hai fatto questo controllo?:

string Test = "DELETE FROM [tblDatabase] WHERE [Prova1] = '" + Prova1Rimozione + "';";

e verificato che Test contenga quello che ti aspetti?

Condivido inoltre quello che dice Thejuster.
Ultima modifica effettuata da Carlo 29/01/21 13:15
in programmazione tutto è permesso
29/01/21 21:19
nessuno
Devi usare i parametri per le frasi SQL

SqlParameter
docs.microsoft.com/it-it/dotnet/api/…

e non avrai problemi del genere (né altri problemi)

Ma te l'hanno già detto ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.