MySQL über Borland Formular



  • Hallo, das Verbinden über den C++ Code funktioniert.

    mysql = mysql_real_connect(mysql,HOST, USER,PASSWD, DB_NAME, PORT, NULL, 0);

    Aber sobald ich eine Variable under eine Editbox bzw. DBEditbox machen will

    USER = Form1->DBUser->Name

    Muss USER ein String sein aber mysql_real_connect erwartet nur char vars.

    Programm soll ein Login werden.

    Bitte um Hilfe ist für ein Schulprojekt und muss mit Borland Builder 6.0 gemacht werden



  • Ist DBUser dein (BDE-) Table-Objekt und hast du es mit dem entsprechenden ODBC-Treiber verknüpft ?



  • Nein ein TDBEdit Feld



  • Bitte suche auch im Forum.

    Wichtig: Zwischen dem (über C++ ansprechbaren) API der Datenbank und den Funktionalitäten (Objekten) der Entwicklungsumgebung/ des Frameworks unterscheiden.

    Für deine Konfiguration musst du die BDE-Verwaltung nutzen. Den erzeugten Alias kannst du dann in der Table-Komponente auswählen.



  • Um es noch mal etwas deutlicher zu machen:
    TDBEdit ist gedacht, wenn du die BCB-Komponenten für den Datenbankzugriff über ODBC nutzt (das TDBEdit nimmt dir das laden und speichern ab, da es direkt mit einer Tabelle und einem Feld verknüpft wird).
    Wenn du die MySQL-C-API nutzen willst/musst, musst du ein normales TEdit nutzen.
    AnsiString bekommst du in ein char* umgewanndelt indem du schreibst

    DerString.c_str();
    //z.B.
    Edit1->Text.c_str();
    

    mfg
    xXx



  • Super es klappt zu 50%
    sobald ich aber
    char* USER=Edit1->Text.c_str();
    char* PASSWD=Edit2->Text.c_str();
    ist USER und PASSWD immer gleich und wenn ich was falsches Eingebe bekomme ich eine Zugriffsverletzung bei libmysql.



  • Ich würde dir von char* abraten. im BCB würde ich nur mit AnsiString arbeiten. Der ist erheblich einfacher zu bearbeiten, da er dir das allocoieren und freigeben von Speicher abnimmt und du ganz einfach Strings addieren kannst, oder strcpy.

    AnsiString Ip=IPEdit->Text;
    AnsiString User=UserEdit->Text;
    AnsiString PWD= PwdEdit->Text;
    AnsiString DB=DBEdit->Text;
    MYSQL mysql;
    mysql_init(&mysql);
    mysql = mysql_real_connect(pMysql,Ip.c_str(),User.c_str(),PWD.c_str(),DB.c_str(),0,NULL,0);
    

    Und ich kann dir das BCB-Texteditor-Tutorial nur wärmstens empfehlen...

    mfg
    xXx



  • Danke für die Hilfe es funtzt 😃


Anmelden zum Antworten