none
Windows Store App: Zugriff auf lokale DB RRS feed

  • Frage

  • Gerne würde ich eine Windows Store App (nicht PHONE) entwickeln, die auf die lokalen ODBC-Verbindungen (und am besten auch auf native SQL Server-Connections, etc.) zugreifen kann. Ist mein Verständnis richtig, dass ich das nicht auf direktem Weg implementieren kann, sondern diesen Zugriff über eine zu entwickelnde Windows Runtime Komponente kapseln müsste, die ich dann von meiner App aus aufrufe?
    Samstag, 24. Januar 2015 21:02

Antworten

  • Hallo zusammen,
    ich möchte noch ergänzen welche Daten(bank)systeme du überhaupt zur Verfügung hast. In diesem Artikel gibt es eine Übersicht dazu.

    Grundsätzlich könntest du dir auch deinen eigenen Provider für die oben genannten Systeme schreiben. Das dürfte aber recht lange dauern und komplex werden, auch gäbe es wahrscheinlich Probleme mit den Dateirechten. Denn diese sind durch das Sandbox-System der Apps stark eingeschränkt.

    Ggf. kannst du auch mal nach Nuget (o.ä.) Paketen suchen. Im großen und ganzen sind Datenbankzugriffe deiner geplanten Art aber untypisch, weswegen sich wohl noch niemand die Mühe gemacht hat einen Provider zu schreiben.

    PS: Programme sind i.d.R. an eine bestimmte Datenbank gebunden. Diese liegt entweder im Web oder direkt auf dem lokalen System. Es gibt in den Apps Datenbanksysteme, die das Unterstützen (siehe obigen Link). Nur einige Standard-Datenbanken werden nicht mehr unterstützt, weil diese eine gewisse Inkompatibilität zu WinRT haben.


    Tom Lambert - .NET (C#) MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets


    Samstag, 24. Januar 2015 21:43

Alle Antworten

  • Hallo,

    die .NET-Funktionen um die Windows-Apps haben viele Klassen und Möglichkeiten, doch ich habe keine Möglichkeiten gefunden, eine Datenbankverbindung zu erstellen.

    [1] https://msdn.microsoft.com/de-DE/library/windows/apps/br230232.aspx

    [2] https://msdn.microsoft.com/en-us/library/windows/apps/br211377.aspx

    Du könntest höchstens entweder einen zwischen-Server erstellen, oder eine eigene TCP-Verbdinung über Sockets zu dem Server aufbauen, müstes aber halt Low-Level-Arbeiten.


    © 2015 Thomas Roskop

    Germany // Deutschland

    Samstag, 24. Januar 2015 21:10
  • Verstehe ich nicht. Also, Deine Antwort schon, aber wie das sein kann. Das ist doch ein absolutes Standardproblem. Ich möchte über den App Store eine App zur Visualisierung von Daten anbieten, die aber nicht in der Cloud oder als JSON oder sonstwie vorliegen, sondern ganz klassisch in einer relationalen DB des Anwenders. Das geht nicht? 

    Also muss ich ein dafür ein "klassisches" Windowsprogramm schreiben, wenn ich nicht künstlich einen Server dazwischen schalten möchte (oder die Lösung mit der eigenen TCP-Verbindung verfolge). Das gleiche Problem hatte ich schon mit Node Webkit (theoretisch zumindest).

    Samstag, 24. Januar 2015 21:36
  • Hallo zusammen,
    ich möchte noch ergänzen welche Daten(bank)systeme du überhaupt zur Verfügung hast. In diesem Artikel gibt es eine Übersicht dazu.

    Grundsätzlich könntest du dir auch deinen eigenen Provider für die oben genannten Systeme schreiben. Das dürfte aber recht lange dauern und komplex werden, auch gäbe es wahrscheinlich Probleme mit den Dateirechten. Denn diese sind durch das Sandbox-System der Apps stark eingeschränkt.

    Ggf. kannst du auch mal nach Nuget (o.ä.) Paketen suchen. Im großen und ganzen sind Datenbankzugriffe deiner geplanten Art aber untypisch, weswegen sich wohl noch niemand die Mühe gemacht hat einen Provider zu schreiben.

    PS: Programme sind i.d.R. an eine bestimmte Datenbank gebunden. Diese liegt entweder im Web oder direkt auf dem lokalen System. Es gibt in den Apps Datenbanksysteme, die das Unterstützen (siehe obigen Link). Nur einige Standard-Datenbanken werden nicht mehr unterstützt, weil diese eine gewisse Inkompatibilität zu WinRT haben.


    Tom Lambert - .NET (C#) MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets


    Samstag, 24. Januar 2015 21:43
  • Es hat auch einen guten Grund, warum es keinen solchen Datenbankprovider gibt. Windows-Store-Apps sind immer Client-Anwendungen, niemals Teil eines Servers. Und Ferner sollte eine Datenbank niemals nach außen hin offen sein, sondern nur über Zwischenschichten (REST-APIs oder ähnliches) erreichbar sein, weshalb deine Anfrage sehr ungewöhnlich ist.

    Du beschreibst folgendes:

    Client ---> Web ----> Datenbank

    Normalerweise verläuft es aber wie folgt:

    Client ---> Web ---> API (Php, Asp.NET etc.) ---> Datenbankzugriff


    © 2015 Thomas Roskop

    Germany // Deutschland

    Samstag, 24. Januar 2015 21:51
  • Hallo Thomas,

    ich denke, dass der TE auf eine Lokale DB hinaus wollte:
    Anwendung -> DB-Provider -> DB
    Da sind weitere Schichten nicht zwingend nötig. Wie ich schon weiter oben schrieb, braucht man es auch nicht anders zu machen, nur hat man eben nicht die "alten" DB Systeme Lokal zur Verfügung.

    PS: Man muss auch bedenken, dass die Apps einfach über den Store bezogen werden können und man dort nicht einfach eine SQL Server Express* Installation voraussetzen kann.
    * oder eine andere DB.


    Tom Lambert - .NET (C#) MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Samstag, 24. Januar 2015 21:59
  • Danke, vermutlich muss ich mich noch mehr mit den Grundprinzipien vertraut machen. Das Sandbox-Prinzip hatte ich außer Acht gelassen. Eine App ist eben keine Application.
    Samstag, 24. Januar 2015 21:59