MySQL Antwort ???



  • Also, ich hab mal bei einem größeren Projekt mitgemacht, wo die Leute bestimmt alle Befehle kannten, die sie verwenden konnten (genau das, was man sich unter Gurus vorstellt) - und von da hab ich auch die Lösung.

    Tja, ansonsten: Such weiter...



  • mit zeitdifferenzen würde ich in solchen fällen nicht arbeiten. schau dir die api doch genauer an. die methode mit der man queries absetzen kann, gibt dir auch eine fehlerliste aus. dort einfach kontrollieren.

    desweiteren kannst du ja auch ein callback in der permanenten verbindung einbauen. dann wird die callback funktion aufgerufen, falls sich etwas ändert. das musst du dann selbst implementieren.

    das sind auf jeden fall die sichersten möglichkeiten.



  • Ok dann werde ich mir mal beides genau anschauen!
    GetTickCount ist zwar nicht das was ich mir erhofft habe aber wenns nichts anderes gibt werd ich zur zweiten kontrolle auch das mal verwenden.

    Nur mit den Fehlerantworten werde ich wohl kein Glück haben in solchen Fällen, weil es ja keine Fehler gibt!
    Wenn eine Datenbank gelockt wird dann sind die anderen auf warten gestellt.
    Solange bis der lock beendet wird.
    Deswegen brauche ich auch eine Zeitfunktion dabei!

    Danke



  • Eine Frage habe ich da noch - wieso soll ich eigentlich danach noch einen GetTickCount machen?
    Wie sollte das dann ausschauen???

    Danke



  • Arg, jaaaa - der hängt ja....

    Hmm, dann musst du es wohl etwas anders machen:
    2 Threads.
    Einer schubst den anderen an "Mach ein Select".
    Nach n ms fragt er nach "Schon fertig?" (== Reagierst du? Variable gesetzt? Was auch immer...)
    Nein? DB hängt.



  • Warum baust du nicht einfach einen Timer in deine Anwendung ein, der alle zwei Sekunden eine Abfrage macht (irgendetwas). Wenn er ne Antwort bekommt, ist alles ok, wenn nicht setzt er ein

    bool m_bAbgestuertzt
    

    auf true und du kannst dann drauf reagieren. Dann musst du dir nur noch was einfallen lassen, dass du nicht mit einer anderen Abfrage dazwischen kommst.

    Wenn man es sich so überlegt, solltest du vielleicht einen zweiten Timer takten, der genau dazwischen liegt und alle anderen Abfragen von dem erledigen lassen, wieder über

    CString m_strAbfragetext
    

    .

    Hört sich aber alles recht kompliziert an.



  • Hört sich wirklich kompliziert an ....

    Und wie weiß ich dann im endeffekt ob er hängt oder nicht?
    Weil im Grunde hängt er ja nicht sondern er wartet bis er an der reihe ist!

    Hast Du vielleicht ein genaueres Beispiel, weil wenn ich ehrlich bin kann ich mir gerade nicht viel darunter vorstellen!

    Danke



  • Dachte ich mir das Access auf DAuer nicht das beste ist. Aber naja.
    MySQL liefert alles mit.

    mysql_options()

    MYSQL_OPT_CONNECT_TIMEOUT unsigned int * Verbindungszeitüberschreitung (Timeout) in Sekunden.



  • Ja stimmt - nur das glaubt mir ja immer noch keiner *g*

    Ok Nur wenn MySQL das mitliefert muss ich trotzdem noch warten bis ich meine Antwort bekomme und solange darf ich ja nicht warten!

    Ich dachte mir eher das ich abfrage ob der erste Thread noch läuft nach ca 5 sek. und dann kommt eine Benachrichtigung.

    Aber wie genau das ausschauen soll weiß ich absolut nicht!



  • 😕

    Wenn du alle paar Sekunden eine Select machen willst dann eine Klasse von CWinThread. Thread starten und abfrage darin machen. Dialog checkt ob Thread noch läuft uind nach vordefinierter Zeit dann sagen "Thread läuft noch vermutlich Fehler" Wenn die Abfrage im Thread beendet ist dann Thread zurückkehren lassen. Som wie es in meinen Programmen war.



  • Für mich hört sich das alles zu schwierig an. Ich fasse MySql nur über die C-Api an.
    Und da gibt es eine ganz einfache Funktion, mit der man überprüfen kann, ob der Server noch da ist oder nicht.

    int /*Res*/ mysql_ping (HANDLE hDB);
    //über das int eine Auswertung machen mit: (wenn Res != 0)
    char* mysql_error (HANDLE hDB);
    

    Ich hoffe das hilft. 😃



  • Es geht nicht darum ob der Server noch da ist sondern ob ein Table gesperrt ist da Access den Table sperrt wenn es zugreift. Access ist auch nicht für den Zugriff Multiuser ausgelegt.


Anmelden zum Antworten