mikrocontroller.net

Forum: PC-Programmierung Datenbank ODBC Rückgabewert


Autor: Student (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, wir sitzen zur Zeit an einer Semesterarbeit, für eine 
Kundenverwaltung mit Datenbankverbindung. Als Datenbankschnittstelle 
habe wir ODBC gewählt, nun scheitern wir allerdings daran, wie wir die 
Daten aus der Datenbank "herausbekommen", vielleicht hat da jemand einen 
Ansatz nach was man suchen muss, oder vielleicht ein kleines 
Beispielprogramm für Visual C++, unsere Datenbank ist MySql, weil diese 
uns vom Rechenzentrum bereitgestellt wird.

Schonmal dankeschön, wir verzweifeln langsam schon ;-)

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mysql ohne ODBC

musste den Code leider ein wenig unkenntlich machen, aber ich denke, es 
kommt soweit klar raus, wie es geht.
int OpenDB(void)
{
//...
  MYSQL *err;

  mysql = mysql_init(NULL);

  // mit Datenbank verbinden
  err = mysql_real_connect(mysql, dbname, NULL, NULL, NULL, MYSQL_PORT, NULL, 0);

  if (err==NULL)
  {
    OutputDebugString(mysql_error(mysql));
    OutputDebugString("\n");
    return 0;
  }
  mysql_select_db(mysql, "Name_der_Datenbank");

  OutputDebugString("OpenDB ok\n");

  return 1;
}

int InitDB(void)
{
  MYSQL_RES * res;

  int status;

  if (!OpenDB()) return 0;

  res = mysql_list_dbs(mysql, "Name_der_Datenbank");
  if (mysql_fetch_row(res)==NULL)
  {
    mysql_free_result(res);
    mysql_query(mysql, "CREATE DATABASE Name_der_Datenbank");
  } else mysql_free_result(res);
  status = mysql_select_db(mysql, "Name_der_Datenbenk");
  if (status) 
  {
    OutputDebugString("SELECT DB: ");
    OutputDebugString(mysql_error(mysql));
    OutputDebugString("\n");
    mysql_close(mysql);
    return 0;
  }

  // Tabellen anlegen, falls nicht schon vorhanden
  status = mysql_query(mysql, 
    "CREATE TABLE IF NOT EXISTS Projekte ("\
    "ID INT UNSIGNED NOT NULL AUTO_INCREMENT,"\
    "NAME TEXT,"\
    "BEMERKUNG TEXT,"\
    "PRIMARY KEY(ID))");
  if (status) 
  {
    OutputDebugString("CREATE PROJEKTE: ");
    OutputDebugString(mysql_error(mysql));
    OutputDebugString("\n");
    mysql_close(mysql);
    return 0;
  }
//...
}



....

  sprintf(qs, "SELECT FELD1 /* ... */ FROM /*...*/ "\
    "LEFT JOIN FELD2 ON /*...*/ "\
    "WHERE /*...*/=%d", akt);
  mysql_query(mysql, qs);
  res = mysql_store_result(mysql);
  
  for (;;)
  {
    row = mysql_fetch_row(res);
    if (row==NULL) break;

    if (atoi(row[0]) != xxx)
    {
                        /*...*/
      it.pszText = row[0];
    }

    OemToChar(row[1], qs);
    it.pszText = qs;
  }
  mysql_free_result(res);

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.