create table if not exsits tbl_test... table_name als variable?



  • Hallo alle,
    kann hier jemand mir helfen?

    Ich möchte mit -->
    create table if not exsits tbl_test (spalte_1, spalte_2, ...);
    die Table erstellen, zwar tbl_test als variable, wie macht man so was?

    so funktiert nicht 😞 😞

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #include <mysql.h>
    
    #define HOST     "141.58.00.10"
    #define USER     "my-linux"
    #define PASSWORT "1234"
    #define DBNAME   "db_test"
    #define PORT     0
    #define SOCKET   NULL
    #define FLAG     0
    int main (int argc, char **argv)
    {
    	MYSQL  *my;
    	char	*str; 
    
    	//Handle initialisieren
    	my = mysql_init( NULL );
    
    	if( my == NULL)
    	{
    		fprintf(stderr, " Initialisierung fehlgeschlagen\n");
    		return EXIT_SUCCESS;
    	}
    
    	//Mit dem Server verbinden
    	if( mysql_real_connect (
            	my,  		/* Zeiger auf MYSQL-Handler*/
            	HOST, 		/* Host-Name*/
            	USER, 		/* User-Name*/
            	PASSWORT, 	/* Passwort für user_name */
            	DBNAME,  	/* Name der Datenbank*/
            	PORT,     	/* Port (default=0) */
            	SOCKET,  	/* Socket (default=NULL)*/
            	FLAG      	/* keine Flags */  )  == NULL)
    	{
          	    fprintf (stderr, "Fehler mysql_real_connect():"
                "%u (%s)\n",mysql_errno (my), mysql_error (my));
    	}
       	else
       	   printf("Erfolgreich mit dem MySQL-Server verbunden\n");
    
            char * tbl_name = "tbl_test";
            str = "CREATE TABLE IF NOT EXISTS %s (`spalte_1` int(10) unsigned                 
            default NULL, `spalte_2` DOUBLE NOT NULL default '-1', 
            `spalte_3` int(6) NOT NULL default '-1')", tbl_name;
    	mysql_real_query(my, str, strlen(str));
    
            mysql_close (my);
       	return EXIT_SUCCESS;
    }
    

    😞 😞 😞 😞

    ich arbeite unter LINUX schreibe client_programm mit C.



  • rena schrieb:

    char * tbl_name = "tbl_test";
    str = "CREATE TABLE IF NOT EXISTS %s (`spalte_1` int(10) unsigned                 
    default NULL, `spalte_2` DOUBLE NOT NULL default '-1', 
    `spalte_3` int(6) NOT NULL default '-1')", tbl_name;
    

    Ich würde bzw. hab das schon wie folgt gemachen:

    string tbl_name = "tbl_test";
    string str = "CREATE TABLE IF NOT EXISTS " + tbl_name + "(`spalte_1` int(10) unsigned                 
    default NULL, `spalte_2` DOUBLE NOT NULL default '-1', 
    `spalte_3` int(6) NOT NULL default '-1');";
    


  • dank für die Antwort.
    aber c kennt keine --> str = str1 + str2;
    gibt es Irgendwer einen Antwort od. Tutorials, mit dem ich anfangen kann.

    😞 😞 😞 😞



  • Wenn es unbedingt C sein muss, würde ich wohl sprintf benutzen.

    const int maxbuf = 250;
    char * tbl_name = "tbl_test";
    char buffer[250];  // so dass alles rein passt, hab nicht nachgezaehlt
    int bufsize;
    
    bufsize= sprintf(buffer, "CREATE TABLE IF NOT EXISTS %s (`spalte_1` int(10) unsigned
    default NULL, `spalte_2` DOUBLE NOT NULL default '-1',
    `spalte_3` int(6) NOT NULL default '-1')", tbl_name);
    if (bufsize > 0)
        mysql_real_query(my, buffer, bufsize);
    

    Eine andere Möglichkeit ist, die strings mit strcat zu verknüpfen.

    Edit:
    Lösungsvorschlag korrigiert.



  • dankeschön, es funktioniert 👍 👍

    variable so soll definiert werden

    char * tbl_name = "tbl_test";
    char buffer[250];  // so dass alles rein passt, hab nicht nachgezaehlt
    int bufsize;
    

    bei char buffer[250] ohne * 😉 😉


Anmelden zum Antworten