Avatar billede donnib Nybegynder
03. marts 2004 - 09:35 Der er 8 kommentarer og
1 løsning

Apostrofer i SQL sætning

Hej alle,
Jeg har noget C# kode som indsætter/opdaterer nogle ting i min MS SQL database. Jeg har nogle strenge som indeholder apostrofer og dem ændrer jeg til to med Replace funktionen men nu er jeg træt af at der kommer for mange på. Hvordan gør jeg så jeg kan få apostroferne korrekt ind. Jeg har hørt noget om at jeg skal lave min sql sætninger på en anden måde. Noget med parametre. Nogle der ved hvordan og kan give nogle eksempler ?

Lige nu ser det således ud :

test= test.Replace("'","''");
sql = string.Format("INSERT INTO test VALUES('{0}'",test);
myCommand = new SqlCommand(sql, myConnection);
myCommand.ExecuteNonQuery();
Avatar billede nielsbrinch Nybegynder
03. marts 2004 - 09:45 #1
Nøgleordet er vistnok "Prepared Statement" ...
Avatar billede donnib Nybegynder
03. marts 2004 - 09:51 #2
synes ik den eksisterer i C#. Den er vist kun i Java.
Avatar billede alpapa Nybegynder
03. marts 2004 - 10:59 #3
Jeg gør sådan her, der kommer hverken flere eller færre apostrofer end der skal være.

string test = txtTest.Text.Replace("'","''");
string SQL = "INSERT INTO test (test) VALUES ('"+test+"')";

alpapa
Avatar billede donnib Nybegynder
03. marts 2004 - 11:32 #4
Det gav det samme resultat. Det virker ikke hos mig.
Avatar billede alpapa Nybegynder
03. marts 2004 - 12:37 #5
Okay - det lyder dælme mystisk???

Min Data Type i kolonnen hvor teksten bliver sat ind i MSSQL2000 databasen er:
ntext eller nvarchar
Collation: <database default>
Avatar billede askhoej Praktikant
03. marts 2004 - 12:41 #6
her er et hurtigt eksempel med parameter:

OleDbConnection con = new OleDbConnection(_DBConnection);
OleDbCommand cmd = con.CreateCommand();

string SQL = "INSERT INTO Test (name,email) VALUES (?,?)";

cmd.CommandText = SQL;

cmd.Parameters.Add("name",name);
cmd.Parameters.Add("email",email);

con.Open();
cmd.ExecuteNonQuery();
con.Close();
Avatar billede donnib Nybegynder
03. marts 2004 - 12:59 #7
Se jeg havde skrevet lidt forkert. Det er sådan her jeg har prøvet :

string test = txtTest.Text.Replace("'","''");
string SQL = "INSERT INTO test (test) VALUES (N'"+test+"')";

Forskellen er at der står et N foran det jeg indsætter som fortæller at det er Unicode. Jeg gør det fordi på et tidspunkt indsætter jeg japanske tegn men tror ikke det er det der gør at jeg får for mange apostrofer i min kode.

Til asjhoej :

hvis jeg har to strings henholdsvis string1 og string2 hvordan indsætter jeg dem i SQL sætningen som du har bygget op. Jeg er ikke helt med med parameterne men jeg tror det er der der skal gøres noget så den netop indsætter string1 og string2 i sqlen.
Avatar billede askhoej Praktikant
03. marts 2004 - 13:03 #8
Den første parameter er feltet i SQL sætningen og den anden er den streng du vil sætte ind.

cmd.Parameters.Add("name",string1);
cmd.Parameters.Add("email",string2);
Avatar billede donnib Nybegynder
03. marts 2004 - 16:39 #9
Tak for det. Det fungerede fint. Denne måde er vist også den smarteste måde at arbejde med databaser. Det gør det mere fejltolerant for input.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester