Toon posts:

SQL/VB6 query's versturen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Im mijn programma (VB6) wordt een string opgebouwd met de text uit textboxes vanuit mijn programma, die als query naar een SQL server wordt gestuurd. Als er <ENTERS> in de string zijn verwerkt ziet die dit als meerdere strings, en wordt de query niet (goed) uitgevoerd.

Wie kan mij helpen met dit probeem ?????


Simon

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
hangt een beetje af van wat je doet, maar je zou dit kunnen doen:

bij Opslaan:

Replace(text1.text,vbCrLf,"<br>")

en bij ophalen:

Replace(rsres.fields("mijnveld"),"<br>",vbCrLf)

<br> kun je natuurlijk vervangen met whatever (zoals "*&%@" of "|")

[ Voor 28% gewijzigd door RobIII op 29-11-2002 11:16 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Check meteen of 'ie een single quote (') ook goed opslaat. Zo niet, probeer dan

bij Opslaan:

Replace(Replace(text1.text,vbCrLf,"<br>"),"'","''")

en bij ophalen:

Replace(rsres.fields("mijnveld"),"<br>",vbCrLf)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB/AI

Front verplichte underscores

simon says.... welkom op GoT :)

Deze vraag past beter bij de buren van Programming & Webscripting, ik verplaats je vraag dan ook. Lees de topics bovenaan P&W (met een Afbeeldingslocatie: http://gathering.tweakers.net/global/templates/got/images/icons/Sticky_off.gif) even voor je volgende vraag aldaar, zo ook de algemene FAQ, waar wordt uitgelegd dat we liever niet hebben dat je binnen 24 uur je topic 'omhoogschopt' door een post als 'ok'. Heb even wat meer geduld, je topic wordt vanzelf wel gezien ;)

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • whoami
  • Registratie: December 2000
  • Laatst online: 19:35


Je hoeft niet zo snel te kicken hoor....

Hoe bouw je jouw query dan wel op?

https://fgheysels.github.io/


  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Als er <ENTERS> in de string zijn verwerkt ziet die dit als meerdere strings, en wordt de query niet (goed) uitgevoerd.
Print je SQL string eens naar je debug window en post 'm hier ff, want we zijn niet helderziend.

It’s nice to be important but it’s more important to be nice


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 19:27

Crazy D

I think we should take a look.

Ik zou je query nog maar eens goed bekijken, want ik heb nog nooit gehad dat, doordat er een vbCrLf in een string voorkwam, de insert query opeens niet goed werkte. En plaats hier idd je query, dan kunnen we zien wat je doet ;) (hoewel het me wel een beetje tegenvalt dat whoami z'n glazenbol niet werkt :P)

Exact expert nodig?


  • whoami
  • Registratie: December 2000
  • Laatst online: 19:35
Crazy D schreef op 29 november 2002 @ 13:31:
En plaats hier idd je query, dan kunnen we zien wat je doet ;) (hoewel het me wel een beetje tegenvalt dat whoami z'n glazenbol niet werkt :P)


Die is spijtig genoeg vorige week van tafel gevallen. Bol kapot.
Trouwens, die heeft nooit gewerkt bij VB topics.

https://fgheysels.github.io/


Verwijderd

Een tip:
Laat je queries niet opbouwen op deze manier.
Waarom?
Omdat het op deze manier erg makkelijk wordt om er queries in mee te sturen.
Voorbeeld:
Stel je syntax is als volgt:
code:
1
"Select * from klant where klantnummer = "+Textbox1.Text


Als ik je Database wil wil legen geef ik de volgende waarde op in Textbox1.text
code:
1
1=1;DROP TABLE klant


Laat er in ieder geval een aantal regular expressions op los.

Maar goed.. corrigeer me als ik het fout heb begrepen....

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Jeroen_de_G: Ten eerste is de query zoals je die in je voorbeeld geeft bedoeld voor ID's (of een numerieke waarde). Dat moet je dus zowieso checken voordat je die aan SQL dorgeeft. En als je strings gebruikt zoals in onderstaand voorbeeld kan het geen kwaad:
code:
1
"Select * from klant where klantnaam = '" & Replace(Textbox1.Text,"'","''") & "'"


In jouw geval zou dat dus de query:
code:
1
Select * from klant where klantnaam = 'RobIII;DROP TABLE KLANT'

Er wordt dus gewoon gezocht op "RobIII;DROP TABLE KLANT".
Escapen m.b.v. een single quote (') lukt ook niet dankzij de replace. Dus de waarde:
code:
1
RobIII';DROP TABLE KLANT

in je textbox gooien levert gewoon dit op:
code:
1
Select * from klant where klantnaam = 'RobIII;''DROP TABLE KLANT'

En dus wordt er gewoon gezocht op "RobIII;DROP TABLE KLANT". No problemo lijkt me.

En als je het echt op safe wilt spelen, dan moet je niet eens query's doorgeven, maar stored procedures aanroepen, en die m.b.v. het Parameter object z'n parameters geven. Veiliger dan dat kan <haast?> niet...

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1