Announcement

Collapse
No announcement yet.

SQL Server und Compact Edition

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • SQL Server und Compact Edition

    Hallo!

    Meine Anwendung (VB.NET 2008) soll sowohl auf den SQL Server 2008 Express (bei Online Verbindung) als auch auf SQL Server Compact Edition 3.5 (als Synchronisation ohne Verbindung) zugreifen.

    Ich finde es ziemlich kompliziert/aufwändig, in jedem Code abzufragen, ob nun mit dem Server oder mit Ce verbunden wird und daraufhin dann die entsprechenden commands, DataAdapter etc zu definieren.

    Also z.B.

    If blConnOnline = true then
    Dim da as sqldatadapter
    Dim cmd as sqlcommand
    Else
    Dim da as sqlcedataadapter
    Dim cmd as sqlcecommand
    End if

    ....

    Ich hatte überlegt, das Ganze über die ODBC Klasse abzubilden (ich habe gelesen, das hätte geringfügige Nachteile in der Geschwindigkeit, die ich in Kauf nehmen würde), dann aber auch gelesen, dass es keinen ODBC Treiber für den SQL CE gibt.

    Frage. Wie löst Ihr das? Arbeitet Ihr mit den beiden Klassen oder gibt es noch Alternativen? Schöner wäre eine datenbankunabhängige Programmierung.

    Vielen Dank
    Marco

  • #2
    Hallo Marco,

    für diese Zwecke gibt es die DbProviderFactory-Klasse. Zuerst holst du dir mit DbProviderFactories.GetFactory die passende Fabrik (unter Benutzung der Strings in machine.config oder notfalls app.config); dann holst du die einzelnen Objekte z.B. durch (in C#):
    Code:
    DbProviderFactory factory = DbProviderFactories.GetFactory(myString);
    DbConnection conn = factory.CreateConnection();
    Bei Bedarf kann diese in eine SqlConnection konvertiert werden; es ist eine Sql- oder was auch immer -Connection.

    Nachteil, wenn man auf diese Konvertierung verzichtet: Du hast nur die Eigenschaften und Methoden zur Verfügung, die es in der Basisklasse gibt. Auch sind nicht alle Überladungen und Varianten vorhanden, z.B. kann ein DataAdapter nicht gleichzeitig mit Bezug auf Connection und Command erzeugt werden. Aber diese Eigenschaften können jederzeit nachträglich hinzugefügt werden.

    Ich hoffe, das zeigt den Weg.

    Gruß Jürgen

    Comment


    • #3
      Hallo, Jürgen!

      Vielen Dank fpür die schnelle Antowrt. Genau danach habe ich gesucht.

      Gruß
      Marco

      Comment

      Working...
      X