realbasic-nug.de
[Top] [All Lists]

Re: Datenbankfrage

To: REALbasic NUG German <realbasic-nug dot de at lists dot realsoftware dot com>
Subject: Re: Datenbankfrage
From: "J. Van Loon" <cdr_spock at yahoo dot com>
Date: Thu, 3 May 2007 13:56:12 -0700 (PDT)
Delivered-to: listarchive at realsoftware dot com
Delivered-to: realbasic-nug dot de at lists dot realsoftware dot com
--- Achim Kredteck <mm-systems at t-online dot de> wrote:

> Hab eine Anwendung, die zusammen mit einer
> REALSQLDatabase arbeitet. 
> Über ein Editfeld werden dort Text abgelegt, geht
> alles gut. 
> 
> Nun stelle ich fest, dass, wenn in dem Text ein '
> vorkommt, ein "cannot
> commit, no transaction is active" Fehler gemeldet
> wird. Ich nehme an,
> weil dieses Sonderzeichen in den SQL-statements
> vorkommt.....?? 

Einfache und doppelte Anführungszeichen sind in SQL
reservierte Zeichen, mit welchen Strings
eingeschlossen werden. Wenn die dann innerhalb eines
Strings vorkommen, weiss der SQL Interpreter nicht,
dass du den String an der Stelle gar nicht beende
wolltest.

Du musst daher diese Zeichen "escapen", d.h. du
stellst denen, wenn sie in einem String erscheinen,
einen Backslash voran. Wenn du dann den Text wieder
aus der DB holst, musst du entsprechend die
Backslashes wieder entfernen. Obs dafür eine
vorgefertigte Funktionen in RB gibt, weiss ich nicht,
es sollte aber nicht schwer sein, diese mittels
Replace() selbst zu schreiben. 

Umlaute und andere Sonderzeichen brauchst du innerhalb
eines Strings nicht escapen, da die keine
Sonderbedeutung haben (allenfalls musst du
Konvertierungen zwischen TextEncodings vornehmen)

Grüsse
Jef

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 


<Prev in Thread] Current Thread [Next in Thread>