C# - Server Mysql Klassen (ResultSet + Database Engine)

  • Ich denke ich fange mal so an.
    Jeder sollte ODBC kennen. Aber jeder sollte eigentlich wissen das bei CrossPlatform dies ein großes hindernis darstellt. Viel besser als ODBC ist dabei die Mysql.Data. Diese eignet sich Perfekt für CrossPlatform und dazu ist sie wesentlich schneller als ODBC!!!

    In meinen Arbeiten mit Server Cores hatte ich oft mit ODBC das vergnügen gehabt. Da es die Leute nutzten die die Projekte leiteten. Nun fing ich bei meinen Projekten direkt an die Mysql.Data dll zu nutzen. Da diese wesentlich bessere Performance erbringt.

    Das Problem bei Mysql.Data ist für Server ein gravierendes. Man erstellt normalerweise eine Mysql Klasse auf die Zugegriffen wird. Nun erlaubt Mysql.Data nur einen Datareader der gleichzeitig geöffnet ist.

    Um dieses Problem zu beheben habe ich meine eigene Klasse geschrieben die so perfekt funktioniert.

    C# Klassen

    Database.cs (Database Engine)

    Database

    ResultSet.cs

    ResultSet


    AnwendungsBeispiel für Abruf aus der Datenbank per RS:

    Code
    ResultSet set;
                set = new ResultSet("SELECT * FROM accounts WHERE accountname='{0}'", Database.Escape(strUsername));
                if (!set.Advance())
                {
                    set.Free();
                    SendLoginFailure(ERROR_INVALID_USERNAME);
                    Destruct("Login failed (Wrong ID)");
                    return;
                }
                set.Free();

    Anwendungsbeispiel zum Auführen einer Query:

    Code
    //Executing non Query
    Execute ex = new Execute("UPDATE accounts SET lastlogin=NOW(),lastip='{0}'linestatus='0' WHERE userid='{1}'", c_socket.RemoteEndPoint.ToString(), dwMyUserID);

    Aufruf und Configurierung
    Das erste mal Aufrufen müsst ihr die Klasse ganz am Anfang. Danach benutzt ihr einfach ResultSet und Execute. Wichtig ist das ihr beim Programmstart vor allen kommenden ResultSets und Executes das bereits aufgerufen habt:

    Code
    Database.Connect(
                    "username",
                    "password",
                    "database",
                    "hostadress");


    Dependencies
    http://dev.mysql.com/downloads/connector/net/

    Viel Spaß damit
    Hoffe wird einigen irgendwann helfen

  • Eine sache verstehe ich nicht: du erwähnst crossplattform und redest von C# und einer DLL? muss man das verstehen?

    Zitat von Steve Jobs

    Stay hungry - stay foolish.



  • Ja ich rede von cross platform weil es mono gibt

    geh auf diese seite
    MySQL :: Download Connector/Net

    und schau da kannste das system auswählen zwischen Mono und Microsoft Windows

    man brauch also nur per gac die mysql.data lib eintragen und dann kan man sie auf dem system problemlos damit arbeiten

    obendrauf ist dies wesentlich perfomanter als ODBC!

  • Wer arbeitet schon mit mono? Das ist der letzte dreck, keine API's, bugs wie wenn ich was programmiere...
    aber naja wenn du gerne in einer pfanne suppe kochen willst...

    Habe mal den source überflogen, sieht auf jeden fall schon mal sauber aus, über die funktionalität kann ich aber nichts sagen

    Zitat von Steve Jobs

    Stay hungry - stay foolish.



  • du hast also keine ahnung von mono. Mono ist sehr effizient und wen Cross Platform nicht interesssiert. Der interessiert mich dann auch nit. N richtiger Progammierer braucht auch gar keine API's. Und es gibt keine Bugs nur falsche Formatierungen bzw. ein paar abarten die man extra für das Andere sys verändern muss. Das ist aber bei jeder anderen Sprache auch so. Außerdem hat mono api's nur so nebenbei.

    aber btt:
    die effizienz kannste ja später austesten. Das ganze ist für Server ausgerichtet und ich kann nur sagen es arbeitet wesentlich schneller als ODBC. Beispiel

    Server Lade Sequenz. 25.000 Datensätze aus Mysql. Mit odbc selber server: 2 Sekunden. Mit Mysql.Data weniger als 1. Stimmt alles so nich ganz sind schätzwerte iss ja klar mache dafür jetz nich extra nen benchmark. Aber jeder der die beiden Systeme einfach mal nebeneinander stellt und die Zeiten vergleicht wird es ebenfalls bemerken. Und alles was Mysql.Data als unanehmlichkeiten hatte ist mit meiner DBEngine + dazu passendes ResultSet System eigentlich vergangenheit.

  • Ich weiß das die Mysql DLL schneller als ODBC ist, habe lange genug damit gearbeitet, und muss ehrlich sagen, ich würde kein ODBC nehmen

    Und ja mich interresiert Cross platforming, und deshalb verwende ich keine MS Sprachen mehr...
    Ich bin allerdings der meinung das es für jedes system gute und schlechte sprachen gibt, so ist z.b. C# für Mac OS eine schlechte sprache aber Objective C die beste sprache, während es bei Windows genau anders rum ist(Zwar gibts auch cocoa für Windows, aber das ist genauso effizient wie Mono unter Mac)

    Zitat von Steve Jobs

    Stay hungry - stay foolish.



  • da hast du recht mono unter mac ist wie nen cheeseburger unterm Bett. Gehört da einfach nit hin.
    Aber Cross Platforming zu Linux. Und Linux ist mein Favorisiertes Betriebsystem dafür ist es sehr sehr gut. Und funktioniert auch sehr sehr gut. Teilweise sogar besser als das Original. Allerdings nicht immer^^

    Für Mac gibt es keine Platform übergreifende Sprache die wirklich gut ist und gut funktioniert ist leider so. Java selbst ist der größte Müll. Denn es frisst dermaßen viel Perfomance das ist schon unverschämt.
    Die beste möglichkeit für Variables Cross Platforming ist eine C Sprache zu nutzen und einfach den Code auf die Systeme anpassen. Viel arbeit aber effizienter als alles andere.

  • Das es unter linux gut läuft kann sein, das habe ich noch nicht getestet.

    Es gibt zwar viele Sprachen die unter allen systemen laufen, diese sind allerdings eher weniger bekannt(smalltalk, free pascal, fortran) oder einfach nur absolut beschissen(brainfuck) aber unter den "großen" sprachen gibt es wirklich nur Java, und das ist lahm, in sofern hast du schon recht

    Zitat von Steve Jobs

    Stay hungry - stay foolish.



  • xD du hass dir grad nen Bein gestellt. Gut vll weißt dus nicht. Brainfuck fällt unter die Kategorie möglichst schwer zu verstehen. Es gibt einen Sport auch bei den Programmierern eine Programmiersprache zu entwickeln die man möglichst schwer versteht. Brainfuck gehört zu diesen.

    Es gibt sogar eine Programmiersprache da bestehen alle Aufrufe usw nur auskombinationen von groß O klein o und groß H klein h

    da heißt nen aufruf zb OhoOhho

    Brainfuck kannst du nur schwer als Hochsprache definieren. Es ist eine extrem Sprache so kann man das eher sagen =P

  • wieso habe ich mir ein bein gestellt? ich weiß das bf dafür da ist um schwer zu sein, ich habe bloß gesagt sie ist bescheiden...

    Zitat von Steve Jobs

    Stay hungry - stay foolish.



  • weil sie nie gut sein sollte der zweck der verfolgt wurde ist ein anderer als du in der form kritik üben dürftest. Darauf wollte ich hinaus. Brainfuck sollte nie gut sein

  • Dennoch hats seit einigen jahren ein Comeback und es fangen immer mehr leute an sich daran die zähne auszubeißen :D

    Zitat von Steve Jobs

    Stay hungry - stay foolish.



Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!