Avatar billede e_c Nybegynder
07. november 2003 - 18:31 Der er 19 kommentarer og
1 løsning

Indhold af RichTextBox til sql-streng.

Hep.
Jeg har en richtextbox (rtb), som jeg gerne vil have indholdet af smidt ned i en sql-streng. Problemet er at, hvis indholdet af rtb indeholder tegn som ', " osv. så kan jeg ikke smide det ned i sql-strengen. F.eks. "INSERT INTO txt VALUES('" + someValue.Text + "'" + rtb.Text + "')";

Nogen der kan hjælpe?

Mvh E_C
Avatar billede e_c Nybegynder
07. november 2003 - 18:34 #1
Rettelse : Jeg kan godt, men ikke hvis der står meget i rtb'en!
/E_C
Avatar billede arne_v Ekspert
07. november 2003 - 18:43 #2
rtb.Text.Replace("'","''")

måske ?
Avatar billede e_c Nybegynder
07. november 2003 - 18:46 #3
Det er ikke det, jeg mener. Hvis der i rtb'en f.eks står: She's the one...så bliver tegnet ' opfattet som en del af sql'en. Jeg vil på en eller anden måde indkapsle trb.Text.
Avatar billede arne_v Ekspert
07. november 2003 - 18:48 #4
Ja.

Og løser mit forslag ikke det problem ?

'' opfattes i sql som ikke en slut ' men som tegnet ' ...
Avatar billede e_c Nybegynder
07. november 2003 - 19:04 #5
Jeg tror måske problemet ligger i, at der er for mange karakterer i rtb'en. Hvor lang må en string være? Og kan man gøre det på en anden måde?
Avatar billede arne_v Ekspert
07. november 2003 - 19:18 #6
Jeg ved det ikke. Den kan være meget lang. Bedste gæt er 2GB.
Avatar billede quaser Nybegynder
08. november 2003 - 09:32 #7
Mener at det er 8000 for et varchar felt i MSSQL, men ikke sikker.

Omend jeg tror at arne's forslag skal løse problemet.
Avatar billede quaser Nybegynder
08. november 2003 - 09:33 #8
Kom evt. med fejlen.
Avatar billede arne_v Ekspert
08. november 2003 - 09:36 #9
Hvis feltet i databasen er varchar så er det max. 8000 i MS SQLServer.

(der findes andre data typer som kan tage længere strenge)

Mit 2 GB gæt var for C# string.
Avatar billede e_c Nybegynder
11. november 2003 - 22:19 #10
Ok Arne v, du har ret, sådan skal det selvfølgelig gøres. Jeg ka bare ikk det til at virke, dog! Harogså  prøvet at smide rtb.Text ned i en String, men det virkede selvfølgelig heller ikke :-)
Avatar billede arne_v Ekspert
11. november 2003 - 22:24 #11
Hvilken fejl får du når du bruger den Replace ?
Avatar billede arne_v Ekspert
11. november 2003 - 22:25 #12
Nu kigger jeg lig epå din SQL:
  "INSERT INTO txt VALUES('" + someValue.Text + "'" + rtb.Text + "')"
skal det ikke være:
  "INSERT INTO txt VALUES('" + someValue.Text + "','" + rtb.Text + "')"
?

(og så med Replace tilføjet)
Avatar billede e_c Nybegynder
11. november 2003 - 22:29 #13
jo, så'n står der også i min kode. Det ovennævnte var bare et eksempel jeg skrev :-)
Avatar billede arne_v Ekspert
11. november 2003 - 22:31 #14
Har du checket at ' bliver korrekt erstattet med '' ved Replace ?

Og hvilken fejl får du så ?
Avatar billede e_c Nybegynder
11. november 2003 - 22:40 #15
Det gør det ikke. Og jeg får en sql-fejl :

rtb.Text.Replace("'", "^");
og texten i trb'en er i dette tilfælde Was' og fejlen er som nedenstående :

System.Data.OleDb.OleDbException: Syntax error in string in query expression ''Was'')'.
  at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(Int32 hr)
  at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
  at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
  at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
  at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
  at System.Data.OleDb.OleDbCommand.ExecuteNonQuery()

Jeg skriver indholdet af rtb'en ud før den ryger videre til sql'en, men der er ikk replace't noget.
Avatar billede arne_v Ekspert
11. november 2003 - 22:46 #16
Hov text boxen skal ikke ændres ved replace.

Den returnerer en ny værdi !

Altså:

"INSERT INTO txt VALUES('" + someValue.Text.Replace("'","''") + "','" + rtb.Text.Replace("'","''") + "')"
Avatar billede e_c Nybegynder
11. november 2003 - 22:52 #17
Glimrende!! Nu virker det. Tak for hjælpen og værsgo :-)
Avatar billede e_c Nybegynder
11. november 2003 - 22:53 #18
hvordan fanden giver jeg dig point? Nu var lige ved selv at ta dem :-)
Avatar billede arne_v Ekspert
11. november 2003 - 22:54 #19
Jeg ligger et svar.
Avatar billede e_c Nybegynder
11. november 2003 - 22:59 #20
Danke!
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