ERLEDIGT
NEIN
NEIN
ANTWORTEN
6
6
ZUGRIFFE
1429
1429
EMPFEHLEN
-
Hallo,
nachdem ich es geschafft habe mein Projekt soweit fertig zu stellen.
Musste ich beim testen feststellen das das Programm mit folgender Fehlermeldung abstürzt:
Dazu habe ich hier im Forum und bei google auch etwas gefunden aber keine Lösung für mein Problem. Also habe ich nachgeschaut wo das Problem in meinem Code ist.System.AccessViolationException: Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.
bei mysql_num_fields(st_mysql_res* )
Dabei ist mir aufgefallen das wenn ich folgende Zeile auskommentiere das Programm ohne Fehler läuft
Der Fehler kommt etwa dann wenn diese Funktion ca.200mal aufgerufen wurdeCode :1 2 3 4 5 6 7 8 9 10 11
MYSQL *connection, mysql; MYSQL_RES *result; MYSQL_ROW row; unsigned int num_fields; unsigned int i; .... [B]num_fields = mysql_num_fields(result);[/B] while ((row = mysql_fetch_row(result))) { ...
-
23.09.09 14:51 #2lowlevel Tutorials.de Gastzugang
Hallo,
bitte poste das ... vor dem Aufruf komplett. Du rufst die Funktion ja richtig auf. SystemAccessViolation in so einem Zusammenhang bedeutet, dass der Pointer, den du der Funktion übergibst ("result") an eine falsche Stelle zeigt. Deswegen brauchen wir den Code davor um festzustellen wo der Fehler liegt und was alles mit result zwischendrin gemacht wird.
Gruß
stephsto
-
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
..include und co... MYSQL *connection, mysql; MYSQL_RES *result; MYSQL_ROW row; unsigned int num_fields; unsigned int i; char * test; test=""; /* connect to the mySQL database at test.domain.de */ mysql_init(&mysql); /* Mit dem Server verbinden */ connection =mysql_real_connect ( &mysql, /* Zeiger auf MYSQL-Handler*/ "localhost", /* Host-Name*/ "user", /* User-Name*/ "pw", /* Passwort für user_name */ NULL, /* Name der Datenbank*/ 0, /* Port (default=0) */ NULL, /* Socket (default=NULL)*/ 0 /* keine Flags */ ) ; if(connection== NULL) { fprintf (stderr, "Fehler mysql_real_connect():" "%u (%s)\n",mysql_errno (&mysql), mysql_error (&mysql)); } else{ printf("Erfolgreich mit dem MySQL-Server verbunden\n"); } std::string strQuery = "SELECT * FROM `test`.`test` WHERE art='1' ";//Datenbank abfrage mysql_query( &mysql, strQuery.c_str()); result = mysql_store_result(&mysql); num_fields = mysql_num_fields(result); while ((row = mysql_fetch_row(result))) { test= row[1]; //Inhalt des Feldes } return test; //Schreibt auf dem Button
-
23.09.09 17:32 #4
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Ich habe zwar nicht herausgefunden wie man sich einen Mysql Error anzeigen lassen kann aber ich gehe mal davon aus das ich Zuviel Connections zur Datenbank mache da ich die Funktion ja ein paar Hundert Mal aufrufe. Habe die Klammer hinter „ printf("Erfolgreich mit dem MySQL-Server verbunden\n"); }
„ einfach mal ans Ende gesetzt und dann kommt zwar kein Fehler mehr aber es wird auch nichts mehr aus der Datenbank ausgelesen.
Muss jetzt nur eine Passende stelle finden wo ich die Datenbank Verbindung herstellen kann.
Reicht es wenn ich
einfach vorher mal include?Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
MYSQL *connection, mysql; MYSQL_RES *result; MYSQL_ROW row; /* connect to the mySQL database at test.domain.de */ mysql_init(&mysql); /* Mit dem Server verbinden */ connection =mysql_real_connect ( &mysql, /* Zeiger auf MYSQL-Handler*/ "localhost", /* Host-Name*/ "user", /* User-Name*/ "pw", /* Passwort für user_name */ NULL, /* Name der Datenbank*/ 0, /* Port (default=0) */ NULL, /* Socket (default=NULL)*/ 0 /* keine Flags */ ) ;
-
24.09.09 08:00 #6
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Das steht aber in deinem Code
?
Warum machst du das nicht bevor du die Funktion aufrufst und übergibst dann das MYSQL Objekt als Parameter an die Funktion?
Dann solltest du natürlich auch das Resultat (wenn es eins gab) und die Verbindung wieder freigeben. Das machst du anscheinend auch nirgendwo. Lies doch mal die Dokumentation der Funktionen, da steht dann was du aufrufen mußt um die Resourcen freizugeben.
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Oh stimmt. Kommt auf jedenfall als Fehler:Too many connections
Nur wie mache ich das jetzt das alle Funktion auf ein Datenbank Verbindung zugreifen können, schon klar das ich das vor allen Funktionien machen muss nur wie. Am besten wäre doch eine Funktion in der die Verbindung hergestellt wird und dann im result das &mysql hat.
geht aber nichtCode :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
MYSQL *connection, mysql; /* connect to the mySQL database at test.domain.de */ mysql_init(&mysql); /* Mit dem Server verbinden */ connection =mysql_real_connect ( &mysql, /* Zeiger auf MYSQL-Handler*/ "localhost", /* Host-Name*/ "user", /* User-Name*/ "pw", /* Passwort für user_name */ NULL, /* Name der Datenbank*/ 0, /* Port (default=0) */ NULL, /* Socket (default=NULL)*/ 0 /* keine Flags */ ) ; result &mysql;
Ähnliche Themen
-
Programm stürzt ab
Von Blaze241 im Forum JavaAntworten: 4Letzter Beitrag: 02.07.09, 15:14 -
System.AccessViolationException
Von buell im Forum .NET CaféAntworten: 1Letzter Beitrag: 02.07.08, 13:41 -
C Cleint Programm stürzt ohne Fehlermeldung ab
Von lolilol im Forum C/C++Antworten: 4Letzter Beitrag: 06.12.06, 13:08 -
Programm stürzt ab
Von Razorhawk im Forum C/C++Antworten: 8Letzter Beitrag: 30.09.05, 08:24 -
Programm stürzt immer ab!
Von Engfer im Forum Visual Basic 6.0Antworten: 5Letzter Beitrag: 20.08.04, 20:06





Zitieren

Login






