mysql++ in Borland C++Builder 5 installieren.



  • Wunderschönen Guten Abend,

    seid ca. 6 Wochen versuchen ein Kumpel und ich die MySQL Api in den Borland C++ Builder 5 einzubinden. Wir haben ca. 6 Milliarden Foren-Beiträge gelesen und doppelt so viele Turtorials ausprobiert. Ohne Erfolg.

    Wir bitten euch, nein wir flehen euch an, bitte sagt uns, wie das funktioniert.

    P.S. Das Tutorial von MySQL.com produziert nur Fehler.

    P.P.S Das Prog das wir schreiben wollen muss bis zum 26.06.04 fertig sein. Bitte helft uns!

    Liebe Grüße phigor & der kumpel



  • Hallo.

    Bitte beschreibt mal was für Fehler kommen und so.
    Welche lib, da von MySQL rein soll, weil es gibt viele davon. :|

    Das von MySQL.com produziert nur Fehler, aber er sagt auch welche.
    Ihr müßt das alles schon mehr beschreiben, wenn einer nur "Hilfe" ruft (wie ihr 2), dann weiß man net was sache ist.

    Also beschreibt was für Fehler, was ihr gemacht habt.



  • Eigentlich wollten wir ja nur ein verständliches Tutorial aber bitte schön,
    unsere Fehler:

    In der mysqlplus.mak steht:

    BCB = C:\Programme\Borland\CBuilder5

    Folgende Fehler macht der beim ausführen folgendem Befehles

    C:\Programme\Borland\CBuilder5\mysql\src\sqlplus>make -fmysqlplus.mak
    MAKE Version 5.2 Copyright (c) 1987, 2000 Borland
    C:\Programme\Borland\CBuilder5\BIN\bcc32 -Od -Vx -Ve -X- -r- -a8 -5 -b-
    -k -y -v -vi- -c -tW -tWM -w-par -IC:\Programme\Borland\CBuilder5\include;..\..\
    include\mysql -D_DEBUG;NO_STRICT -n .\coldata.cpp .\connection.cpp .\datetime.cp
    p .\field_names.cpp .\field_types.cpp .\manip.cpp .\query.cpp .\result.cpp .\set
    .cpp .\sql_query.cpp .\string_util.cpp .\type_info.cpp .\vallist.cpp
    Borland C++ 5.5.1 für Win32 Copyright (c) 1993, 2000 Borland
    .\coldata.cpp:
    Warnung W8038 .\type_info1.hh 23: Konstantenelement 'mysql_ti_sql_type_info::_ba
    se_type' wurde nicht initialisiert. in Funktion mysql_ti_sql_type_info::mysql_ti
    _sql_type_info()
    Warnung W8038 .\type_info1.hh 23: Konstantenelement 'mysql_ti_sql_type_info::_de
    fault' wurde nicht initialisiert. in Funktion mysql_ti_sql_type_info::mysql_ti_s
    ql_type_info()
    .\connection.cpp:
    Warnung W8038 .\type_info1.hh 23: Konstantenelement 'mysql_ti_sql_type_info::_ba
    se_type' wurde nicht initialisiert. in Funktion mysql_ti_sql_type_info::mysql_ti
    _sql_type_info()
    Warnung W8038 .\type_info1.hh 23: Konstantenelement 'mysql_ti_sql_type_info::_de
    fault' wurde nicht initialisiert. in Funktion mysql_ti_sql_type_info::mysql_ti_s
    ql_type_info()
    Fehler E2303 .\resiter1.hh 56: Typname erwartet
    Fehler E2275 .\resiter1.hh 56: { erwartet
    Fehler E2275 .\resiter1.hh 56: { erwartet
    *** 3 Fehler bei der Compilierung ***
    .\datetime.cpp:
    Warnung W8038 .\type_info1.hh 23: Konstantenelement 'mysql_ti_sql_type_info::_ba
    se_type' wurde nicht initialisiert. in Funktion mysql_ti_sql_type_info::mysql_ti
    _sql_type_info()
    Warnung W8038 .\type_info1.hh 23: Konstantenelement 'mysql_ti_sql_type_info::_de
    fault' wurde nicht initialisiert. in Funktion mysql_ti_sql_type_info::mysql_ti_s
    ql_type_info()
    .\field_names.cpp:
    Warnung W8038 .\type_info1.hh 23: Konstantenelement 'mysql_ti_sql_type_info::_ba
    se_type' wurde nicht initialisiert. in Funktion mysql_ti_sql_type_info::mysql_ti
    _sql_type_info()
    Warnung W8038 .\type_info1.hh 23: Konstantenelement 'mysql_ti_sql_type_info::_de
    fault' wurde nicht initialisiert. in Funktion mysql_ti_sql_type_info::mysql_ti_s
    ql_type_info()
    Fehler E2303 .\resiter1.hh 56: Typname erwartet
    Fehler E2275 .\resiter1.hh 56: { erwartet
    Fehler E2275 .\resiter1.hh 56: { erwartet
    *** 3 Fehler bei der Compilierung ***
    .\field_types.cpp:
    Warnung W8038 .\type_info1.hh 23: Konstantenelement 'mysql_ti_sql_type_info::_ba
    se_type' wurde nicht initialisiert. in Funktion mysql_ti_sql_type_info::mysql_ti
    _sql_type_info()
    Warnung W8038 .\type_info1.hh 23: Konstantenelement 'mysql_ti_sql_type_info::_de
    fault' wurde nicht initialisiert. in Funktion mysql_ti_sql_type_info::mysql_ti_s
    ql_type_info()
    Fehler E2303 .\resiter1.hh 56: Typname erwartet
    Fehler E2275 .\resiter1.hh 56: { erwartet
    Fehler E2275 .\resiter1.hh 56: { erwartet
    *** 3 Fehler bei der Compilierung ***
    .\manip.cpp:
    Warnung W8038 .\type_info1.hh 23: Konstantenelement 'mysql_ti_sql_type_info::_ba
    se_type' wurde nicht initialisiert. in Funktion mysql_ti_sql_type_info::mysql_ti
    _sql_type_info()
    Warnung W8038 .\type_info1.hh 23: Konstantenelement 'mysql_ti_sql_type_info::_de
    fault' wurde nicht initialisiert. in Funktion mysql_ti_sql_type_info::mysql_ti_s
    ql_type_info()
    .\query.cpp:
    Warnung W8038 .\type_info1.hh 23: Konstantenelement 'mysql_ti_sql_type_info::_ba
    se_type' wurde nicht initialisiert. in Funktion mysql_ti_sql_type_info::mysql_ti
    _sql_type_info()
    Warnung W8038 .\type_info1.hh 23: Konstantenelement 'mysql_ti_sql_type_info::_de
    fault' wurde nicht initialisiert. in Funktion mysql_ti_sql_type_info::mysql_ti_s
    ql_type_info()
    Fehler E2303 .\resiter1.hh 56: Typname erwartet
    Fehler E2275 .\resiter1.hh 56: { erwartet
    Fehler E2275 .\resiter1.hh 56: { erwartet
    *** 3 Fehler bei der Compilierung ***
    .\result.cpp:
    Warnung W8038 .\type_info1.hh 23: Konstantenelement 'mysql_ti_sql_type_info::_ba
    se_type' wurde nicht initialisiert. in Funktion mysql_ti_sql_type_info::mysql_ti
    _sql_type_info()
    Warnung W8038 .\type_info1.hh 23: Konstantenelement 'mysql_ti_sql_type_info::_de
    fault' wurde nicht initialisiert. in Funktion mysql_ti_sql_type_info::mysql_ti_s
    ql_type_info()
    Fehler E2303 .\resiter1.hh 56: Typname erwartet
    Fehler E2275 .\resiter1.hh 56: { erwartet
    Fehler E2275 .\resiter1.hh 56: { erwartet
    *** 3 Fehler bei der Compilierung ***
    .\set.cpp:
    Warnung W8038 .\type_info1.hh 23: Konstantenelement 'mysql_ti_sql_type_info::_ba
    se_type' wurde nicht initialisiert. in Funktion mysql_ti_sql_type_info::mysql_ti
    _sql_type_info()
    Warnung W8038 .\type_info1.hh 23: Konstantenelement 'mysql_ti_sql_type_info::_de
    fault' wurde nicht initialisiert. in Funktion mysql_ti_sql_type_info::mysql_ti_s
    ql_type_info()
    .\sql_query.cpp:
    .\string_util.cpp:
    .\type_info.cpp:
    Warnung W8038 .\type_info1.hh 23: Konstantenelement 'mysql_ti_sql_type_info::_ba
    se_type' wurde nicht initialisiert. in Funktion mysql_ti_sql_type_info::mysql_ti
    _sql_type_info()
    Warnung W8038 .\type_info1.hh 23: Konstantenelement 'mysql_ti_sql_type_info::_de
    fault' wurde nicht initialisiert. in Funktion mysql_ti_sql_type_info::mysql_ti_s
    ql_type_info()
    .\vallist.cpp:
    Warnung W8038 .\type_info1.hh 23: Konstantenelement 'mysql_ti_sql_type_info::_ba
    se_type' wurde nicht initialisiert. in Funktion mysql_ti_sql_type_info::mysql_ti
    _sql_type_info()
    Warnung W8038 .\type_info1.hh 23: Konstantenelement 'mysql_ti_sql_type_info::_de
    fault' wurde nicht initialisiert. in Funktion mysql_ti_sql_type_info::mysql_ti_s
    ql_type_info()
    Fehler E2303 .\resiter1.hh 56: Typname erwartet
    Fehler E2275 .\resiter1.hh 56: { erwartet
    Fehler E2275 .\resiter1.hh 56: { erwartet
    *** 3 Fehler bei der Compilierung ***



  • Habt Ihr diesen schon ausprobiert?

    MySQL++ 1.7.1 von Arturs Aboltins
    http://www.mysql.de/downloads/api-mysql++.html

    Wenn ich MySQL benutzte, eigentlich immer über dieses Ding und im Anhang die Klasse, welche die gröbsten Funktionen enthalten. (Fehler nicht ausgeschlossen)

    //---------------------------------------------------------------------------
    
    #ifndef DatabaseH
    #define DatabaseH
    #include "Classes.hpp";
    #include "mysql.h"
    //---------------------------------------------------------------------------
    class TMySQLDatabase {
      private:
        MYSQL *mysql;
        void __fastcall Error();
      protected:
      public:
        __fastcall TMySQLDatabase();
        __fastcall ~TMySQLDatabase();
        bool __fastcall RealConnect(AnsiString Host, AnsiString Username, AnsiString Password, AnsiString Database);
        bool __fastcall Connect(AnsiString Host, AnsiString UserName, AnsiString Password);
        bool __fastcall Query(AnsiString query);
        AnsiString __fastcall Abfrage(AnsiString abfrage);
        bool __fastcall ChangeUser( AnsiString Username, AnsiString Password, AnsiString Database);
        int __fastcall InsertID();
    
    };
    //---------------------------------------------------------------------------
    extern TMySQLDatabase *MySQLDatabase;
    //---------------------------------------------------------------------------
    #endif
    
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Database.h"
    
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    TMySQLDatabase *MySQLDatabase;
    //---------------------------------------------------------------------------
    __fastcall TMySQLDatabase::TMySQLDatabase()
    {
      mysql = new MYSQL();
    }
    //---------------------------------------------------------------------------
    __fastcall TMySQLDatabase::~TMySQLDatabase()
    {
      mysql_close(mysql);
    }
    //---------------------------------------------------------------------------
    bool __fastcall TMySQLDatabase::RealConnect(AnsiString Host, AnsiString Username, AnsiString Password, AnsiString Database)
    {
      if (mysql_init(mysql))
        if (mysql_real_connect(mysql,Host.c_str(),Username.c_str(),Password.c_str(),Database.c_str(),NULL,NULL,NULL))
          return true;
        else
        {
          Error();
          return false;
        }
      else
      {
        Error();
        return false;
      }
    }
    //---------------------------------------------------------------------------
    bool __fastcall TMySQLDatabase::Query(AnsiString query)
    {
      if (!mysql_real_query(mysql,query.c_str(),query.Length() - 1))
        return true;
      else
      {
        Error();
        return false;
      }
    }
    //---------------------------------------------------------------------------
    AnsiString __fastcall TMySQLDatabase::Abfrage(AnsiString abfrage)
    {
      TStringList *strRet = new TStringList();
      AnsiString strTemp;
      MYSQL_RES *result;
      MYSQL_ROW row;
      unsigned int num_fields;
      unsigned int i;
      AnsiString test;
    
      if (!mysql_real_query(mysql,abfrage.c_str(),abfrage.Length()))
      {
        result = mysql_store_result(mysql);
        num_fields = mysql_num_fields(result);
        while ((row = mysql_fetch_row(result)) != 0)
        {
          for(i = 0; i < num_fields; i++)
          {
              strTemp = AnsiString(row[i]);
              strRet->Add(strTemp);
          test = strTemp;
          }
        }
        mysql_free_result(result);
      }
      else
        Error();
      AnsiString temp = strRet->CommaText;
      delete strRet;
      return temp;
    
    }
    //---------------------------------------------------------------------------
    void __fastcall TMySQLDatabase::Error()
    {
      ShowMessage(mysql_error(mysql));
    }
    //---------------------------------------------------------------------------
    bool __fastcall TMySQLDatabase::Connect(AnsiString Host, AnsiString UserName, AnsiString Password)
    {
      if(mysql_connect( mysql, Host.c_str(), UserName.c_str(), Password.c_str()))
        return true;
      else
      {
        Error();
        return false;
      }
    }
    //---------------------------------------------------------------------------
    bool __fastcall TMySQLDatabase::ChangeUser( AnsiString Username, AnsiString Password, AnsiString Database)
    {
      if(mysql_change_user(mysql, Username.c_str(), Password.c_str(), Database.c_str()))
        return true;
      else
      {
        Error();
        return false;
      }
    }
    //---------------------------------------------------------------------------
    int __fastcall TMySQLDatabase::InsertID()
    {
      return mysql_insert_id(mysql);
    }
    


  • Das ist toll, ziemlich genau das habe ich auch gesucht.

    @goergisi:
    Nicht, dass es einen Unterschied machen würde, eher aus Neugier: Ist die Klasse von Dir oder von Aboltins mitgeliefert?


Anmelden zum Antworten