Autor Beitrag
chrisdrury
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 184

WinXP
D5 Prof
BeitragVerfasst: Mi 27.02.08 10:42 
Ausgangsproblem war die Frage nach dem Konzept für einen Freeware-Chat, siehe Ursprungsthread:
www.delphi-forum.de/....php?p=489644#489644

Um die Verwirrung nicht völlig komplett zu machen, habe ich dann diese Frage zu dem Tutorial von Luckie bezüglich MySQL und Delphi (www.delphipraxis.net...ysql+mit+delphi.html) ausgelagert:

Damit habe ich mein Chatprogramm quasi parallel zur PHP-Version weiterentwickelt.
Das funktioniert auch soweit ganz gut, der Server kann sich in die Datenbank eintragen und die Clients können sich einloggen.
Den einzigen Fehler erhalte ich beim Runterfahren des Servers, d. h. den Datensatz mit DELETE zu löschen...
Hier mal etwas Code:
Die Funktion, die den Server aus der Datenbank löscht...
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
 
 function TfrmMain.DeleteRecord(ID: String): Boolean;  
var  
  ErrorCode: Integer;  
  query: string;  
begin  
  ErrorCode := mysql_select_db(MySQL, PChar(DBNAME));  
  if ErrorCode = 0 then  
  begin  
    query := 'DELETE FROM Chat WHERE Ip=' + ID;  
    log(query);  
    ErrorCode := mysql_real_query(MySQL, PChar(query), length(query));  
  end;  
  result := ErrorCode = 0;  
end;


Und hier der Aufruf im Programm.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
     try  
      if DeleteRecord(IntP) then  
      begin  
        ShowMessage('Server is offline');  
        Memo1.Lines.Add('Server is offline since ' + TimeToStr(Time) + ' on ' + DateToStr(Date));  
      end  
      else  
        log(mysql_error(MySQL));  
      LogItOut;  
    except  
      on E: Exception do  
      begin  
        showmessage(E.Message);  
        Memo1.Lines.Add(E.Message);  
      end;  
    end;



IntP ist dabei die beim Anmelden an die Datenbank weitergereichte IP.
Da kommt dann leider nur eine Fehlermeldung a la 'Query abgebrochen, Datensatz konnte nicht gelöscht werden.'

Falls sich jemand mit diesem Tutorial schon mal beschäftigt hat, wäre ich für etwas Hilfe dankbar...
Martin1966
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1068

Win 2000, Win XP
Delphi 7, Delphi 2005
BeitragVerfasst: Mi 27.02.08 11:36 
ausblenden Delphi-Quelltext
1:
query := 'DELETE FROM Chat WHERE Ip=' + ID;					

Muss die IP (also Variable ID) nicht in Apostrophs - innerhalb der SQL Anweisung - eingeschlossen werden?

ausblenden Delphi-Quelltext
1:
query := 'DELETE FROM Chat WHERE Ip=`' + ID + '`';					

_________________
Ein Nutzer der Ecke ;-)
chrisdrury Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 184

WinXP
D5 Prof
BeitragVerfasst: Mi 27.02.08 12:21 
@ Martin1966:
Das könnte gut möglich sein, ich werde es mal testen...

Danke erstmal. :zustimm:
chrisdrury Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 184

WinXP
D5 Prof
BeitragVerfasst: Mi 27.02.08 21:38 
Funktioniert leider immer noch nicht. :cry:
Hier der genaue Wortlaut der ausgegebenen Fehlermeldung:
Lost connection to MySQL server during query

Komischerweise kann ich mit folgendem php-Script den Eintrag löschen:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
<?php
include("../cgi-bin/einlog.php");
include("funk.php");
//Verbinden und Datenbank auswählen
$connect=@mysql_connect($dbHost, $dbUser, $dbPass) or die("Konnte keine Verbindung zum Datenbankserver aufbauen!");

$sql="DELETE FROM Chat
        WHERE IP='189.255.247.918'";

If ($res=send_sql($db,$sql))  {echo "SQL-Kommando wurde ausgeführt";}
?>

:nixweiss: :gruebel: :?!?: