Crash bei MySQL-C-API



  • Hallo,
    folgender Code:

    #include <iostream>
    #include <my_global.h>
    #include <mysql.h>
    using namespace std;
    
    MYSQL *conn;
    MYSQL_RES *res;
    MYSQL_ROW row;
    
    int main()
    {
    	my_ulonglong row_count=0;
    	conn=mysql_init(NULL);
    	if(mysql_real_connect(conn,"server01","root","test123","test",0,NULL,0))
    	{
    		cout << "Verbindung hergestellt" << endl;
    	}
    	else
    	{
    		cout << "Verbindung fehlgeschlagen" << endl;
    	}
    	mysql_query(conn,"SELECT * FROM mitarbeiter");
    	res=mysql_store_result(conn);
    	while(row=mysql_fetch_row(res))
    	{
    		for(unsigned int i=0;i<mysql_num_fields(res);i++)
    		{
    			cout << row[i];
    		}
    		cout << endl;
    	}
    	mysql_close(conn);
    	system("PAUSE");
    	return 0;
    }
    

    Kompilieren klappt ohne Fehler und Warnungen. Wenn ich das Programm ausführe, crasht es allerdings beim Beginn der while-Schleife. Ich vermute es liegt an mysql_fetch_row(res) oder mysql_store_result(conn) ... aber warum?

    Das DBMS ist Bestandteil einer Windows-XAMPP-Installation.

    Danke und Gruß,
    Sebastian

    btw: Kompiliert wurde das ganze mit VC++ 2005 Express.



  • .< ja was crash? fehlermeldung, callstack, und und und...

    edit:
    es mach sinn den return von mysql_query zu überprüfen, also in der art

    ok = mysql_query(&mysql, query);
    if (ok != 0)
    {
     // error
    }
    

    desweiteren überprüfen ob die query überhaupt rows zurückgegeben hat, bevor man mit mysql_fetch_rows() durchiteriert:

    num_fields = mysql_num_fields(resultset);
    num_rows = mysql_affected_rows(&mysql);
    if (num_rows == 0)
    {
     // error
    }
    


  • OK vielen Dank schonmal.

    mysql_query liefert einen Fehler zurück...aber warum? Die Query ist eindeutig richtig. Habs auch schon mit einer anderen Datenbank versucht. Gleiches Problem.

    hm...



  • Sebix schrieb:

    OK vielen Dank schonmal.

    mysql_query liefert einen Fehler zurück...aber warum? Die Query ist eindeutig richtig. Habs auch schon mit einer anderen Datenbank versucht. Gleiches Problem.

    hm...

    ok = mysql_query(conn, "<query>");
    if (ok != 0)
    {
        printf("MySQL error %d (%s)\n", mysql_errno(conn), mysql_error(conn));
    }
    

    🙂



  • was hat's ausgespuckt? oder hat sich's erledigt?



  • Hat sich erledigt.
    Hab das Programm auf ein Linux-System portiert, wo ich es letztendlich auch brauchen werde und da läufts ohne wenn und aber.

    Danke für deine Hilfe!

    Gruß,
    Sebastian


Anmelden zum Antworten