Datenbank zugriff



  • hey, ich verwende eine Accessdatenbank. ich überlege gerade wie ich das ganze system ein tick schneller hinbekomme. ich habe mir schon überlegt die datenbank in den ram zu kopieren, aber iwie geht das bei der Connection nicht.

    weiß jmd wie ich das mache?



  • Tu das nicht... je mehr Daten in der Datenbank stehen desto eher treibst du den Rechner auf dem deine Anwendung ausgeführt wird in die Knie.

    Vorallem ist das auch überhaupt nicht nötig. In wie fern ist dir das System denn zu langsam? Welche Probleme stellst du selbst fest? Wie viele Daten beinhaltet die Datenbank in etwa? Und zu guter letzt wie sehen deine Queries aus?



  • danke für die schnelle antwort. das programm nimmt schon so 1,5 sek pro request. die datenbank an sich wird max 10mb. daten... so etwa ein paar hundert.

    public void With(string SQL, bool isReader)
            {
                if(Program.User.CanRead)
                    if(isReader)
                    {
                        try
                        {
                            _Command = new OleDbCommand(SQL, _Connection);
                            _Reader = _Command.ExecuteReader();
                        }
                        catch(OleDbException ex)
                        {
                            Program.LogError(ex.Message + "---Eventuell zu schnell selektiert");
                        }
                    }
                    else
                        _Command = new OleDbCommand(SQL, _Connection);
                else _Command = new OleDbCommand("", _Connection);
                Program.GetCounter += 1;
            }
    
            /* Ruft das nächste Element mit dem Index "Row" ab */
            public object Next(int Column, bool Newline)
            {
                try
                {
                    /* Newline: Soll der DataReader eine Zeile runterspringen 
                     * oder in der aktuellen verweilen? */
                    if(Newline)
    
                        /* Falls da noch Daten sind, lese sie */
                        if(_Reader.Read() == true)
                            return _Reader[Column];
    
                        /* Falls keine mehr da sind, sag das es nichts mehr gibt := EOF */
                        else
                            return "EOF";
    
                    /* Falls Newline=False, gebe den Columninhalt aus */
                    else
                        return _Reader[Column];
                }
    

    nicht lachen^^ ich weiß es ist nicht perfekt. aber es funkt 😉
    kann jmd verbessern?



  • Ich denke viel komfortabler wäre statt ExecuteReader() ein ExecuteDataSet().

    In welcher Form zeigst du die Daten an? Bzw. In welcher Form verarbeitest du die Daten weiter?

    Übrigens tippe ich stark darauf, dass deine Next Methode der Grund für die lange dauer ist.



  • ich123123123 schrieb:

    danke für die schnelle antwort. das programm nimmt schon so 1,5 sek pro request

    Hmmm, entweder du programmierst ganz großen Mist oder dein Tabellenlayout ist ganz großer Mist 😉 Hast du auch brav Indizes angelegt?

    inflames2k schrieb:

    Ich denke viel komfortabler wäre statt ExecuteReader() ein ExecuteDataSet().

    Komfortabler schon, aber in der Performance ist ein DataReader schon ein paar Ecken zackiger beim Lesen. Wenn man natürlich auch noch update/insert machen will und nicht grad alle SQL-statements von Hand schreiben will (so wie ich oO), dann ist ein DataSet schon angenehmer 🙂



  • Liegt die Access-Datei auf dem gleichen Rechner oder befindet sie sich in einem Netzwerk?

    OLE DB (Object Linking and Embedding, Database, auch OLEDB oder OLE-DB genannt ) ist sicherlich die lahmarschigste Möglichkeit, auf (grundverschiedene) Datenquellen zuzugreifen (Details dazu hier). Für den Zugriff auf relationale Datenbanken unter .NET ist ADO.NET zuständig.

    PS: Microsoft Access eine Datenbank zu nennen, ist so ziemlich die gemeinste Beleidigung für jedes "richtige" Datenbanksystem 😕 😃

    ~Erst wenn alle Programmierer eingesperrt und alle Ideen patentiert wurden, werdet ihr merken, dass Juristen nicht programmieren können ...~



  • Also ich habe auch mal eine Anwendung programmiert und Access als DB genutzt. Bin dann auf einen MS SQL Server Express umgezogen. Die Performance ist deutlich schneller geworden! Spricht etwas dagegen, einen SQL Server zu nutzen? in der Express Variante ist er kostenlos.

    Beste Grüße

    Solick


Log in to reply