none
Einfache Datenverwaltung und Speicherung RRS feed

  • Frage

  • Hallo Zusammen,

    ich suche eine einfache und schlanke Lösung, die Daten meiner Applikation speichern und verwalten zu können.

    SQL Server Express ist mir persönlich zu sehr mit Installationsroutinen und Funktionen überladen.

    Es soll einfach sein und am besten ohne zusätzliche Installationen per XCopy installierbar. Gibt es das überhaupt? 

    Ich habe auch etwas über noSQL-Datenbanken gelesen. Taugt es was?

     

    grüße

     

    Sonntag, 28. März 2010 10:42

Antworten

  • Hallo Ellen,

    SQLite ist ein kleine dateibasierte Datenbank mit geringen Anforderungen,
    die unter verschiedenen Systemen läuft und u. a. beim FireFox eingesetzt wird -
    vergleichbar mit Microsoft SQL Server Compact.
    Einen .NET kompatiblen Treiber gibt es bei http://sqlite.phxsoftware.com/

    MySql ist ein RDBMS vergleichbar dem SQL Server, im Besitz von Sun,
    was seinerseits von Oracle übernommen wird.
    Download Datenbank Server http://www.mysql.com/downloads/mysql/
    Der .NET kompatbile Treiber: http://www.mysql.com/downloads/connector/net/
    MySQL ist nur in der Community Edition kostenfrei.

    Wobei es für viele weitere Datenbanken wie PostgreSQL , FireBird ,
    um nur zwei populäre freie zu nennen, .NET Treiber gibt bzw. eine Anbindung
    via ODBC/OleDb Client möglich ist.
    Und für die großen wie DB2, Oracle gibt es natürlich ebenso .NET Treiber.

    Gruß Elmar

    Montag, 5. April 2010 11:49
    Beantworter
  • Hallo A.R.

    ich benutze zum Abspeichern und Verwalten von Daten ganz normale Textdateien.

    Du brauchst nichts zu installieren und kannst die Daten mit einem normalen Editor bearbeiten.

    Reicht mir im vollstem Umfang aus. SQL ist mir zu mächtig und das XML Format ist gewöhnungsbedürftig.

    schöne Grüße

    Ellen

    Folgende Programmausschnitte sind Bestandteil einer von mir erstellten Windows Form Anwendnung.

    Diese dient dazu, Messwerte von einer mobilen Datenstation über ein Wireless Lan Infrastructure Netzwerk

    zu empfangen.

    Die Methode Save_log speichert die Daten aus einer Richtextbox in ein neu angelegtes Directory.

    Der Filename wird automatisch generiert mit der Methode DateTime.Now.

    Mit ButtonL_click werden Daten geladen und in einer property prozedur (Me.mData) verarbeitet.

     

     

        '
        '                   Save Content of RichTextBox to file
        '
        Private Sub Save_Log(ByVal sender As System.Object, _
                                           ByVal e As System.EventArgs) _
                                           Handles SpeicherLogToolStripMenuItem.Click
    
            dateNow = DateTime.Now.Year.ToString + "_" + DateTime.Now.Month.ToString + "_" + DateTime.Now.Day.ToString + "_"
            dateNow += DateTime.Now.Hour.ToString + "_" + DateTime.Now.Minute.ToString + "_" + DateTime.Now.Second.ToString
    
            newFile = "logData_" + dateNow + ".TXT"
            'Path erzeugen für abspeichern der daten
    
            With My.Computer.FileSystem
    
                fullPath = .SpecialDirectories.MyDocuments + "\log\"
    
                If Not .DirectoryExists(fullPath) Then
                    MsgBox("Verzeichnis eigene Dateien\log wird erzeugt")
                    .CreateDirectory(fullPath)
                End If
    
                RichTextBox_RX.SaveFile(fullPath + newFile, RichTextBoxStreamType.PlainText)
    
                If .FileExists(fullPath + newFile) Then
                    MsgBox(newFile + " geschrieben")
                End If
            End With
    
        End Sub
      
        ' 
        ' lade log daten und zeige an
        '
        Private Sub ButtonL_Click(ByVal sender As System.Object, _
                                  ByVal e As System.EventArgs) Handles ButtonL.Click
            Dim fileok = False
            Dim fnm As String = ""
    
    
            OpenFileDialog1.InitialDirectory = fullpath
            OpenFileDialog1.DefaultExt = "*.TXT"
            OpenFileDialog1.Filter = "txt Files | *.TXT"
            If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
    
                DrawActive = True
                loadstream = OpenFileDialog1.OpenFile()
                fnm = OpenFileDialog1.FileName()
    
                Dim sr As System.IO.StreamReader = New System.IO.StreamReader(fnm)
    
                Do While sr.Peek >= 0
                    If Me.DrawActive Then
                        Me.mData = sr.ReadLine
                    Else
                        Exit Do
                    End If
                Loop
                sr.Close()
                loadstream.Close()
            Else
                MsgBox("Keine Daten gewählt")
            End If
    
            ' darstellbaren Bereichen für Mw vertikal festellen:
            heightMw = PHeight - 2 * myFontHeight - anzIO * pix0
            drawPic()
        End Sub

     

     


    please, mark this as answer if it is THE answer -- best regards Ellen
    Donnerstag, 1. April 2010 08:14

Alle Antworten

  • Hallo,

    es kommt auf die zu erwartende Datenmenge an, die Du speichern möchtest. Für paar Datensätze braucht man im Hintergrund keinen SQL Server oder überhaupt eine relationale Datenbank, wie Jet oder SQL Compact, sondern kann diese auch in einfachen XML Dateien strukturiert abspeichern. Über XML Serialisierung kann man sogar komplette Objekte und Objektstrukturen auf recht einfache Art und Weise abspeichern und wiederherstellen.


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    Sonntag, 28. März 2010 11:06
    Beantworter
  • Alternativ kannst du dir auch mal SQLite ansehen. Quasi SQL ohne Server. Einfache Wrapper, die dann eine lokale Datei anlegen, auf die mit T-SQL zugreifen kannst.

    Ansonsten kannst du wie schon beschrieben, den XML-Serializer verwenden, der dir ne hübsche XML-Datei anlegt. Der MSDN-Eintrag, auf den ich verlinkt habe, sollte dich mit der Vorgehensweise vertrautmachen. 

     

    Viel Erfolg,

    Dienstag, 30. März 2010 06:42
  • Hallo A.R.

    ich benutze zum Abspeichern und Verwalten von Daten ganz normale Textdateien.

    Du brauchst nichts zu installieren und kannst die Daten mit einem normalen Editor bearbeiten.

    Reicht mir im vollstem Umfang aus. SQL ist mir zu mächtig und das XML Format ist gewöhnungsbedürftig.

    schöne Grüße

    Ellen

    Folgende Programmausschnitte sind Bestandteil einer von mir erstellten Windows Form Anwendnung.

    Diese dient dazu, Messwerte von einer mobilen Datenstation über ein Wireless Lan Infrastructure Netzwerk

    zu empfangen.

    Die Methode Save_log speichert die Daten aus einer Richtextbox in ein neu angelegtes Directory.

    Der Filename wird automatisch generiert mit der Methode DateTime.Now.

    Mit ButtonL_click werden Daten geladen und in einer property prozedur (Me.mData) verarbeitet.

     

     

        '
        '                   Save Content of RichTextBox to file
        '
        Private Sub Save_Log(ByVal sender As System.Object, _
                                           ByVal e As System.EventArgs) _
                                           Handles SpeicherLogToolStripMenuItem.Click
    
            dateNow = DateTime.Now.Year.ToString + "_" + DateTime.Now.Month.ToString + "_" + DateTime.Now.Day.ToString + "_"
            dateNow += DateTime.Now.Hour.ToString + "_" + DateTime.Now.Minute.ToString + "_" + DateTime.Now.Second.ToString
    
            newFile = "logData_" + dateNow + ".TXT"
            'Path erzeugen für abspeichern der daten
    
            With My.Computer.FileSystem
    
                fullPath = .SpecialDirectories.MyDocuments + "\log\"
    
                If Not .DirectoryExists(fullPath) Then
                    MsgBox("Verzeichnis eigene Dateien\log wird erzeugt")
                    .CreateDirectory(fullPath)
                End If
    
                RichTextBox_RX.SaveFile(fullPath + newFile, RichTextBoxStreamType.PlainText)
    
                If .FileExists(fullPath + newFile) Then
                    MsgBox(newFile + " geschrieben")
                End If
            End With
    
        End Sub
      
        ' 
        ' lade log daten und zeige an
        '
        Private Sub ButtonL_Click(ByVal sender As System.Object, _
                                  ByVal e As System.EventArgs) Handles ButtonL.Click
            Dim fileok = False
            Dim fnm As String = ""
    
    
            OpenFileDialog1.InitialDirectory = fullpath
            OpenFileDialog1.DefaultExt = "*.TXT"
            OpenFileDialog1.Filter = "txt Files | *.TXT"
            If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
    
                DrawActive = True
                loadstream = OpenFileDialog1.OpenFile()
                fnm = OpenFileDialog1.FileName()
    
                Dim sr As System.IO.StreamReader = New System.IO.StreamReader(fnm)
    
                Do While sr.Peek >= 0
                    If Me.DrawActive Then
                        Me.mData = sr.ReadLine
                    Else
                        Exit Do
                    End If
                Loop
                sr.Close()
                loadstream.Close()
            Else
                MsgBox("Keine Daten gewählt")
            End If
    
            ' darstellbaren Bereichen für Mw vertikal festellen:
            heightMw = PHeight - 2 * myFontHeight - anzIO * pix0
            drawPic()
        End Sub

     

     


    please, mark this as answer if it is THE answer -- best regards Ellen
    Donnerstag, 1. April 2010 08:14
  • Hallo Ellen,

    statt zu schreiben:

     

    dateNow = DateTime.Now.Year.ToString + "_" + DateTime.Now.Month.ToString + "_" + DateTime.Now.Day.ToString + "_"
            dateNow += DateTime.Now.Hour.ToString + "_" + DateTime.Now.Minute.ToString + "_" + DateTime.Now.Second.ToString
    

     

    Geht es mit String.Format etwas kürzer:

     

    dateNow = String.Format("{0:yyy_M_d_H_mm_s}", DateTime.Now)
    Siehe Custom Date and Time Format Strings .

     

    Pfade sollte man darüber hinaus nicht selber zusammenkleben, dafür gibt es Path.Combine . Damit ist auch immer der richtige Pfadabschluss sichergestellt. Eigene Dateien könnte auf ein Laufwerk festgelegt sein, z.B. Laufwerk D und damit würde der Pfad für MyDocuments bereits mit einem Backslash '\' enden. Wenn Du dann Deinen Pfad mit

    fullPath = .SpecialDirectories.MyDocuments + "\log\"

    zusammenbaust, entsteht daraus 'D:\\log\' und wäre ungültig. Statt dessen sicherer:

    fullPath = IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "log")

    Für den vollen Pfad und Dateinamen dann wieder:

    fileName = IO.Path.Combine(fullPath, newFile)

    Zur Verkettung von Zeichenfolge, sollte man in VB immer den '&'-Operator verwenden. Dieser ist extra zur Zeichenfolgenverkettung da und sorgt dafür, dass auf beiden Seiten immer mit Zeichenfolgen gearbeitet wird und nicht versehentlich eine Berechnung ausgeführt wird, wenn auf beiden Seiten numerische Werte stehen.

    Concatenation Operators in Visual Basic

     


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    Donnerstag, 1. April 2010 09:15
    Beantworter
  • Hallo Thorsten,

    vielen Dank für diese wertvollen Hinweise.

    Ausgabeformatierungen habe ich dem Open book Galileo Kap. 10.3 entnommen.

    In der msdn Library habe ich nichts gefunden über IFormatProvider.

    ich werde das gleich umsetzen.

    schöne Grüsse

    Ellen

    P.S. Warum sehe ich diesen thread nicht unter meine threads?


    please, mark this as answer if it is THE answer -- best regards Ellen
    Donnerstag, 1. April 2010 16:05
  • Hallo Thorsten,

    vielen Dank für diese wertvollen Hinweise.

    Ausgabeformatierungen habe ich dem Open book Galileo Kap. 10.3 entnommen.

    In der msdn Library habe ich nichts gefunden über IFormatProvider.

    ich werde das gleich umsetzen.

    schöne Grüsse

    Ellen

    P.S. Warum sehe ich diesen thread nicht unter meine threads?


    please, mark this as answer if it is THE answer -- best regards Ellen
    Donnerstag, 1. April 2010 16:05
  • In der msdn Library habe ich nichts gefunden über IFormatProvider.

    IFormatProvider muss Dich für die Standardaufgaben auch erst mal nicht interessieren. Für einen Überblick:

    http://msdn.microsoft.com/en-us/library/system.iformatprovider.aspx

    P.S. Warum sehe ich diesen threadnicht unter meine threads?

    Weil diese Funktion des Forums mal wieder seit gestern gestört ist. Das ist bereits gemeldet, aber bei MSFT scheinen alle bereits im Osterurlaub zu sein:

    http://social.msdn.microsoft.com/Forums/en-US/reportabug/thread/fcc40347-f25e-45f4-a11e-3126ff329dc9


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    Donnerstag, 1. April 2010 16:27
    Beantworter
  • Hallo Zusammen,

    Ich stehe gerade vor der Entscheidung, ob ich Mono als Entwicklungsplattform nehmen soll oder nicht. Viel mehr geht es um die Plattformunabhängigkeit der Software. Das Ganze soll auch auf Mac OS X lauffähig sein.

    Ich denke dass an der Stelle nur zwei mögliche Optionen vorhanden sind. SQLite und MySQL.

    Es muss einfach zu installieren sein und dazu auch langfristig für möglich viele Datensätze auch eine tragbare Alternative. Mit Serialisieren und Text-Dateien komme ich da vermutlich nicht weiter.

    Könnt ihr mir sagen, wie das mit SQLite so funktioniert? Hat jemand schon Erfahrungen damit? Aktuell will ich eine kleine Lösung für Provisionsabrechnung, die auf SQL Server 2008 läuft umstellen. Es sind schon über 4000 Aufträge erfasst und ich weiß nicht ob ich das mit SQLite nun wirklich machen sollte.

    Grüße

     

    Freitag, 2. April 2010 13:57
  • Ich denke du musst dich nicnt unbedingt mit der Datenbank technologie herumschlagen.

    Da hilft dir Visual Studio schon ganz gut mit Wizards.

    Du solltest dich mal nach dem Thema Linq umschauen. Anbei ein Einstiegspunkt: http://de.wikipedia.org/wiki/LINQ

     

    VG Steve

    Samstag, 3. April 2010 07:26
  • Hallo A.R.

    könntest Du uns mal zeigen was dieses MySQL und SQLite ist?

    Ich möchte mir das mal ansehen.

    Frage an die Moderatoren: Ist das kompatibel mit der CLR und dem

    NET Klassen System?

    schöne Grüße

    Ellen

     

    Montag, 5. April 2010 09:47
  • Hallo Ellen,

    SQLite ist ein kleine dateibasierte Datenbank mit geringen Anforderungen,
    die unter verschiedenen Systemen läuft und u. a. beim FireFox eingesetzt wird -
    vergleichbar mit Microsoft SQL Server Compact.
    Einen .NET kompatiblen Treiber gibt es bei http://sqlite.phxsoftware.com/

    MySql ist ein RDBMS vergleichbar dem SQL Server, im Besitz von Sun,
    was seinerseits von Oracle übernommen wird.
    Download Datenbank Server http://www.mysql.com/downloads/mysql/
    Der .NET kompatbile Treiber: http://www.mysql.com/downloads/connector/net/
    MySQL ist nur in der Community Edition kostenfrei.

    Wobei es für viele weitere Datenbanken wie PostgreSQL , FireBird ,
    um nur zwei populäre freie zu nennen, .NET Treiber gibt bzw. eine Anbindung
    via ODBC/OleDb Client möglich ist.
    Und für die großen wie DB2, Oracle gibt es natürlich ebenso .NET Treiber.

    Gruß Elmar

    Montag, 5. April 2010 11:49
    Beantworter
  • Hallo Elmar,

    ich persönlich würde mich nun für den Einsatz von SQL Server Express entscheiden. (Wenn's denn sein soll)

    Erstens glaube ich nicht, dass der Einarbeitungsaufwand in einer der beiden o.g. Softwaren erheblich

    geringer als in SQL Server Express selbst.

    Und zweitens sollte man den Support, welchen man hier erhält, dabei nicht ausser Acht lassen.

    Hier hat man kompetente Hilfe aus einer Hand und braucht nicht zwischen 2 Foren wechseln.

    Einfache Datenspeicherung? Ich würde sagen, die oben gezeigten Lösungen nehmen oder gleich SQL Server.

     

    schöne Grüße

    Ellen

     

     

     

    Dienstag, 6. April 2010 10:29
  • Hallo Ellen,

    für die Einarbeitung sollte man sich zunächst auf ein System konzentrieren,
    und da ist der SQL Server eine gute Wahl<sup>[1]</sup> , da er zum einen direkt unterstützt
    wird und von Express bis zur Enterprise Edition mit jeder Anforderung wachsen kann.

    Auf der anderen Seite:
    Sobald man sich mit ADO.NET auskennt, ist der Einsatz weiterer Datenbanksysteme
    relativ einfach, da der Zugriff im wesentlichen gleich bleibt.
    Nur mit den jeweiligen Spezialitäten der Systeme - die auch der SQL Server hat -,
    muß man sich einzeln auseinandersetzen.

    Wobei unter den genannten Systemen SQLite eine gute Wahl ist, wenn man nur
    kleine Datenmengen speichern muß, aber eine portable Lösung braucht -
    SQL Server Compact ist nur unter Windows Derivaten verfügbar.

    Und PostgresSQL würde ich wiederum MySQL vorziehen, weil es technisch
    vollständiger ist (MySql ist nur immer besser vermarktet worden).

    Gruß Elmar

    <sup>[1]</sup> als langjähriger SQL Server MVP bin ich nicht immer ganz objektiv ;-)

    Dienstag, 6. April 2010 10:44
    Beantworter
  • Hallo Elmar,

    Hast Du vielleicht auch noch ein Kochrezept für mich "Die ersten Schritte in SQL Express".

    Ich hatte mir von hier mal DVD Image heruntergeladen wo auch SQL Server drauf ist.

    Ist das die richtige Software?

    schöne Grüße

    Elle

     

     

    Dienstag, 6. April 2010 11:00
  • Hallo Ellen,

    für den ersten Einstieg scheinen mir die Videos von Beth Massi ganz brauchbar:

    "How Do I" Videos — Visual Basic

    Da ich nicht sicher bin welches DVD Image Du da erwischt hast:
    Achte darauf, dass Du SQL Server 2008 mit Service Pack 1 verwendest
    Microsoft® SQL Server® 2008 Express Edition Service Pack 1

    Da die meisten Anfänger Beispiele auf der Northwind basieren:
    Northwind and pubs Sample Databases for SQL Server 2000
    (funktionieren auch mit SQL Server 2008)

    Und die gelegentich verwendete AdventureWorks unter
    Microsoft SQL Server Community Projects & Samples
    (dort auf die Version achten, da die AdventureWorks
    je nach Ausgabe einen unterschiedlichen Aufbau hat).

    Gruß Elmar

    Dienstag, 6. April 2010 12:45
    Beantworter