Zeichen in SQL INSERT Statement maskieren?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Original von thomas13
    Schlagt mich jetzt aber ich kenne ODBC eigentlich z.B. Möglichkeit aus Anwendungen wie z.B. Excel heraus mir Daten von einer DB zu holen oder bin ich jetzt völlig falsch?


    Das ist ein Anwendungsbeispiel, ja.
    Excel implementiert nicht für jede mögliche DB eine Schnittstelle sondern verwendet ODBC.
    ODBC spricht wiederum über einen Treiber/Lib mit der DB.
  • Das ist der ODBC-Admin.

    Du benötigst einen ODBC-Treiber um die Verbindung zum DB-Server aufzubauen. Um den Treiber anzumelden, benötigst du den ODBC-Admin. Dann hast du wieder einen Zugang zum Admin-System. Es ist also noch komplizierter als ich oben schrieb, was auch nicht ganz richtig war. besser wäre es so:

    App
    Zugriffslib App->ODBC-Admin
    ODBC-Admin
    Spezieller ODBC-Treiber, etwa für PostgreSQL
    ...
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • App
    --> Cocoa (wäre zumindest schön) <--
    ODBC
    ODBC-Admin
    Libs (bzw. ODBC-Treiber)
    Client
    Server

    Genau hieran fehlt es.Cocoa bietet aber Tidscha eine transparente Anbindung von MySQLlite. Die ist aber eben transparent und kokal.

    Bei mir sieht das etwa so aus:

    Quellcode

    1. DBDatabase* db = [DBDatabase databaseWithName:@"MyDB"];
    2. DBTable* table = [[db tablesByName] objectForValue:@"myTable"];
    3. NSArray* rows = [table rows];


    usw. Aber ich setze eigentlich auf Bindings.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • ODBC Interfaces haben die meisten DBs. Ich hab schonmal mit Java, das normalerweise ja nur JDBC kennt, aber eine JDBC/ODBC bridge dabei hat, auf eine Filemaker DB zugegriffen.
    Kenn mich da auch nicht so genau aus, denke aber, dass ODBC ein standardisiertes Interface ist um auf DBs zuzugreifen.
    Entweder bringt das entsprechende Framework die Moeglichkeit der Kommunikation gleich mit, wie bei Java, oder es braucht auf der Seite spezielle Bibliotheken.


    so long,
    Manfred
  • Klar ist das standardisiert und wird von den mir bekannten DBMS unterstützt. Damit hast du ODBC-Fähigkeiten im System. Ein Framework benötigst du dennoch, sei es es bereits vorhanden oder eben selbst programmiert.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Original von asrael
    ODBC Interfaces haben die meisten DBs. Ich hab schonmal mit Java, das normalerweise ja nur JDBC kennt, aber eine JDBC/ODBC bridge dabei hat, auf eine Filemaker DB zugegriffen.
    Kenn mich da auch nicht so genau aus, denke aber, dass ODBC ein standardisiertes Interface ist um auf DBs zuzugreifen.
    Entweder bringt das entsprechende Framework die Moeglichkeit der Kommunikation gleich mit, wie bei Java, oder es braucht auf der Seite spezielle Bibliotheken.


    so long,
    Manfred


    So kann man es auch sagen.
    Für die App/Framework standard. DB-Anbieter stellt Brücke ODBC<->DB.
    Ich nahm nur an, dass eben Cocoa diese Unterstützung bietet.

    Was genau ODBC-Admin ist hab ich allerdings noch nicht verstanden. Das Tool in Dienstprogramme?
    Wenn ja, wie greift man per Code darauf zu?
  • ja, genau dieses Tool.

    Du greifst eben über ein Framework darauf zu - wie sonst auch. Wie sollte es auch sonst gehen?

    Nochmal, vllt ging es ja zu schnell:
    _Jede_ App benötigt für _jeden_ Zugriff auf _irgendwas_ im System ein Framework. Man kann nicht Bildschirme, Tastaturen, USB-Geräte oder eben DB ansteuern, ohn ein Framework dafür zu haben. [C|C++|Objective-C] ohne Libs/Frameworks kann gar nichts.

    Für den Zugriff auf eine DB, ganz gleich ob über MySQL, PSQL, ODBC, SOMETHINGIPROGRAMMED benötigt man eben ein entsprechendes Framework, wenn es nicht schon im System-Framework enthalten ist. CoreData ist ein _transparentes_ Framework für den _lokalen_ Zugriff. Das bemerkt man gar nicht. Wir sprechen hier aber über den gezielten (= intransparenten) Zugriff auf eine riesige DB.

    Dafür gibt es auch Libs. Für ODBC und für PSQL. Dassind aber C-Libs. Ich bilde das ganze zweistufig oo auf Objective-C ab. Als gewollten Nebeneffekt habe ich dann Bindings-Fähigkeiten. Das heißt, man kann sich im IB TableViews in ein Fenster ziehen und die mittels den Bindings an die DB binden. Außerdem soll da mal eine Trigger-Notification-Bridge herein, so dass eine datenbankweite Aktualisierung über die ganze Welt läuft. Sozusagen world-wide Bindings.

    Derzeit sieht das in etwa so aus:

    YourApp
    Database-Framework
    Database-Framework-Connection (derzeit libfe=PSQL)
    Database Lib (libfe, ODBC-Lib)
    Irgendeine Clientsoftware, wenn nicht bereits in der Lib enthalten. Möglicherweise TCP/IP Support usw.
    ...

    Was darunter kommt, interessiert mich nicht. Die Connection ist jetzt für eine PSQL-Datenbank geschrieben, weil ich libfe includiere. Wenn ich jetzt MySQL wollte, dann müsste ich die entsprechenden Header von MySQL nehmen und Die DBFW-Connection anpassen usw. Die Idee bei ODBC ist, dass ich nur noch die ODBC-Lib nehme und ODBC darunter eine Anpassung an die verschiedenen DBMS anpasse. Das sähe dann so aus:

    YourApp
    Database-Framework
    Database-Framework-Connection (Nur noch für ODBC, gleich welches DBMS)
    Database Lib (Nur noch ODBC-Lib)
    ODBC-Admin
    ODBC-Treiber für PostgresQL, MySQL, Oracle, FileMaker ...
    ...
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Original von Tom9811
    Nochmal, vllt ging es ja zu schnell:
    _Jede_ App benötigt für _jeden_ Zugriff auf _irgendwas_ im System ein Framework. Man kann nicht Bildschirme, Tastaturen, USB-Geräte oder eben DB ansteuern, ohn ein Framework dafür zu haben. [C|C++|Objective-C] ohne Libs/Frameworks kann gar nichts.


    Das ist mir schon klar. Bin ja nicht erst seit 3 Tagen Softwareentwickler.
    Ich hatte nur die Erwartung, dass mir Cocoa einfache Zugriffsmöglichkeiten gibt.
    Mein Gedanke ging dann eben zu ODBC.
    Bin auf Dein Framework gespannt.
  • Original von asrael
    Wobei ODBC auch wieder der kleinste gemainsame Nenner ist.
    D.h. so ein Framework, wie es der Tom macht, dass fuer eine DBMS gemacht ist, kann die natuerlich viel besser ausreizen wie der andere Kram.
    so long


    Jein. Da jeder DB-Hersteller eigene Treiber liefert ist es schon DB-spezifisch.
    Aber direkt auf die Libs der DB geschneiderte Frameworks sind mit Sicherheit mächtiger, klar.
    Solange es allerdings bei SQL bleibt ist ODBC ok.
    Will man mehr (DB-status, DB-stop, DB-start...) kommt man an den Libs nicht vorbei.

    Wollte da keinen "ewigen Streit" lostreten, sorry.
  • Neee, du musst dich nicht entschuldigen. Man liest nur auf jeder ODBC - Seite gleich: "Nein, es stimmt nicht, ODBC ist nicht langsamer!!!!!!!!98!!!!!!!!!!!!!!!" ;)

    Ich habe ursprünglich bewusst auf PSQL gesetzt, weil es gut für meine Anforderungen war: OS X + Win, Netzwerkfähigkeit, lange eingeführt, kostenlos.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • RE: Zeichen in SQL INSERT Statement maskieren?

    hmm habe ein aehnliches problem. allerdings in cocoa.
    ich stelle folgende anfrage an den mysql server mit dem SMySQL.framework:

    Quellcode

    1. theRes = [theConnec queryString:[NSString stringWithFormat:@"SELECT * FROM %@ WHERE %@ LIKE '%@' order by 'date' desc LIMIT 0, %i", [transArray objectAtIndex:6], [transArray objectAtIndex:8], [transArray objectAtIndex:7], [[transArray objectAtIndex:9] intValue]]];


    das

    Quellcode

    1. LIKE '%@'
    sucht nach der genauen eingabe. besser waere den suchbegriff mit % % zum umschliessen (mit dem effekt: der begriff auto findet auch superautomobil):

    Quellcode

    1. LIKE '%%@%'
    funktioniert aber leider nicht.

    auch die hier vorgeschlagenen maskierungen haben nicht zum erfolg gefuehrt.
    jemand eine idee wie ich das hinkriege ?

    danke

    jens
    malloc: *** vm_allocate(size=1665622016) failed (error code=3)
  • RE: Zeichen in SQL INSERT Statement maskieren?

    Original von Michael
    Versuch es mal so:

    Quellcode

    1. LIKE '%%%@%%'

    Was -stringWithFormat: so alles verarbeitet steht hier.
    Michael


    mercie vielmals. das wars ! =)

    gruesse,
    jens
    malloc: *** vm_allocate(size=1665622016) failed (error code=3)