MySQL und ADOQuery



  • Ich habe mir 2 MySQL Datenbanken angelegt:
    1. benutzer
    2. kunden

    In der 1. "benutzer" Datenbank befindet sich eine Tabelle "user", in dieser sind benutzername, passwort, rechte, etc hinterlegt.

    In der 2. "kunden" sind Kundendaten hinterlegt (Tabelle 'gruppe', etc.)

    Beim Programmstart lasse ich die "benutzer" Datenbank abfragen und überprüfe die User-Rechte.

    Im Anschluss daran soll die Datenbank gewechselt werden, zu "kunden" .... nur hier liegt das Problem.

    Sourcecode:

    AnsiString db_user = "daxxxx", db_password = "xxxx";
        AnsiString verbindung = "Provider=MSDASQL.1;Password="+db_password+";Persist Security Info=True;User ID="+db_user+";Data Source=MySQL;";
    
        abfrage->ConnectionString = verbindung;
    
        // Abfrage der Datenbank (Datenbank 'kunden')
        abfrage->SQL->Clear();
        abfrage->SQL->Add("SELECT * FROM gruppe;");
        abfrage->Open();
    
        abfrage->First();
    
        ShowMessage(abfrage->Fields->FieldByName("name")->AsString);
    

    Die Abfrage der 'benutzer' DB - läuft problemlos.
    Bei der anschließenden Abfrage der Datenbank 'kunden' findet er die Tabellen nicht, die in dieser Datenbank angelegt sind. Ich habe das gefühl, das er die Datenbank nicht wechselt (benutzer -> kunden).

    Wißt ihr wie man mit mehreren Datenbank problemlos arbeitet? Wie wechsel ich mit der ADOQuery zwischen Datenbanken?

    😮



  • Zitat: Data Source=MySQL

    muss da nicht stehen: Data Source=Kunden ?

    wenn dass nicht das problem ist,

    1. Userrechte prüfen siehe ( AnsiString db_user = "daxxxx", db_password = "xxxx"; )
    2. noch mal userrechte prüfen ( AnsiString db_user = "daxxxx", db_password = "xxxx"; )

    wenn das nichts hilft, dann geh ins SQLStudio oder Access( über odbc) und meld dich genau so an, wie im Programm an. Prüfe, ob es nun geht.


  • Mod

    Hallo

    greif lieber so zu

    abfrage->SQL->Add("SELECT * FROM kunden.gruppe");
    

    MfG
    Klaus



  • Soweit so gut, das mit 'kunden.gruppe' habe ich auch getestet. Er scheint die Datenbank und Tabelle zu finden. Aber auf eine SQL Abfrage bekomme ich keine Datensätze zurückgeliefert, obwohl welche vorhanden sind.

    Sourcecode:

    // Abfrage der Datenbank (Tabelle 'gruppe')
        abfrage->SQL->Clear();
        abfrage->SQL->Add("SELECT * FROM kunden.gruppe");
        abfrage->Open();
    
        abfrage->First();
    
        ShowMessage(abfrage->Fields->FieldByName("name")->AsString);
    

    Mit diesem Quelltext müßte er alle Datensätze aus der Datenbank 'kunden' Tabelle 'gruppe' zurückgeben. Danach springt er zum ersten Datensatz und müßte den Datensatz der Spalte 'name' anzeigen.

    Nur leider bekomme ich nur eine blanko / leere Messagebox!? Nur kann ich damit nicht viel anfagen, habe ich dort etwas übersehen? Eine kleiner Formfehler?

    Vielleicht sollte ich erwähnen das beiden Abfragen (benutzer und kunden) über jeweils 2 verschiedene Funktionen in verschiedenen Klassen realisiert wird.


  • Mod

    Hallo

    ich wuerde eher schreiben

    // Abfrage der Datenbank (Tabelle 'gruppe')
        abfrage->SQL->Clear();
        abfrage->SQL->Add("SELECT * FROM kunden.gruppe");
        abfrage->Open();
    
        abfrage->First();
    
        ShowMessage(abfrage->FieldByName("name")->AsString);
    

    wenn das auch nichts bringt verbinde deinen Query dochmal mit einem DBGrid
    und schau ob du da Datensaetze bekommst

    MfG
    Klaus



  • Hallo zusammen.
    Kann mir jemand erklären wie ich mit Sql auf meine DB zugreifen kann?
    Die Potsings hier sind da schon hilfreich aber ich weiß immernoch nicht wie ich z.B. den Pfad zur DB angeben soll.

    Vielleicht sollte ich erwähnen das beiden Abfragen (benutzer und kunden) über jeweils 2 verschiedene Funktionen in verschiedenen Klassen realisiert wird.

    Brauche ich also für jede Datenbank eine Klasse???
    grüße mephos


Anmelden zum Antworten