Datenbank im C-Programm verwenden (Grundlegende Fragen)



  • Hi,

    ich hatte keine Erfahrungen mit der praktischen Verwendung von Datenbanken aus einem "C" Programm heraus.
    Ich habe es (mit viel Ausprobieren und verschiedenen Code-Beispielen) geschafft MySQL von einem "C"-Programm aus anzusprechen mit:

    #include <iostream>
    #include <windows.h> 
    #include <winsock.h> 
    #include <stdio.h> 
    #include <mysql.h> 
    
    int main(int argc, char **argv) 
    { 
    
    MYSQL_ROW row; 
    MYSQL_RES *result; 
    unsigned int num_fields; 
    
    char *server = "127.0.0.1"; 
    char *user = "root"; 
    char *password = "1"; 
    char *database = "MeineDb"; 
    char query[] = "select * from test";
    
    	MYSQL mysql; 
        printf("MySQL Client Version is %s\n",mysql_get_client_info()); 
        if(mysql_init(&mysql)==NULL) 
        { 
            printf("\nFailed to initate MySQL connection"); 
            exit(EXIT_FAILURE); 
        } 
    
    	if((mysql_real_connect(&mysql,server,user,password,database,0,NULL,0))== NULL)
    	{
    
    		std::cout << "error";
    	}
    
    	if(mysql_query(&mysql, "SELECT * FROM MeineAdressen")) 
    	{
    		std::cout << "error";
    	}
          else { 
             result = mysql_store_result(&mysql); 
             num_fields = mysql_num_fields(result); 
             while ((row = mysql_fetch_row(result))) 
             { 
                   unsigned long *lengths; 
                   lengths = mysql_fetch_lengths(result); 
                   for(int i = 0; i < num_fields; i++) 
                   { 
                           printf("[%.*s] \t", (int) lengths[i], row[i] ? row[i] : "NULL");
                    }    
                   printf("\n"); 
             } 
          } 
    
        mysql_close(&mysql); 
    
    	int z;			//Damit die Konsole offen bleibt
    	std::cin >> z;
    
        return EXIT_SUCCESS; 	
    }
    

    Dazu habe ich vorher in der Datenbank (sozusagen von Hand) eine Database "MeineDb", angelegt, ein Table "MeineAdressen" erstellt und Einträge vorgenommen, die ich jetzt auslesen kann.

    Dazu meine Frage: Ist es möglich die Database auch im "C" Programm anzulegen?
    Wenn ja wie? das Problem was ich hatte ist, dass ich für "mysql_real_connect" schon die Database kennen muss. Ich habe es nicht geschafft einen Befehl zu finden der vorher die Database anlegen kann.

    Kann es meherere Databases gleichzeitig geben?

    Wenn es geht, wie legt man eine neue Table im "C" Programm an?



  • Andreas XXL schrieb:

    Ist es möglich die Database auch im "C" Programm anzulegen?

    mysql_query() mit CREATE DATABASE .

    Andreas XXL schrieb:

    Das Problem was ich hatte ist, dass ich für "mysql_real_connect" schon die Database kennen muss. Ich habe es nicht geschafft einen Befehl zu finden der vorher die Database anlegen kann.

    Verbinde einfach mit mysql_real_connect() zur default-DB ( db = NULL ).

    Andreas XXL schrieb:

    Kann es meherere Databases gleichzeitig geben?

    Du meinst offene Verbindungen? Ja.

    Andreas XXL schrieb:

    Wenn es geht, wie legt man eine neue Table im "C" Programm an?

    mysql_query() mit CREATE TABLE .

    Und jetzt geh' hin und RTFM. 🙄





  • depreciated.



  • Swordfish schrieb:

    depreciated.

    Mischung aus deprecated und appreciated? 🤡



  • goddammit. Ein wenig mehr von Ersterem. I'll go and rtfm. 🤡



  • ah ja, stimmt.
    dann halt create.


Anmelden zum Antworten