Comment se connecter à la base de données SQL server à partir D'une application UWP Windows 10

j'essaie de me connecter à une base de données MS SQL on-prem à partir d'une application windows universelle. Je fais une application LOB en utilisant UWP, pour soutenir le bureau, la tablette et l'utilisation mobile. Lorsque j'essaie de me connecter à une base de données locale (intranet) SQL server, j'ai l'habitude d'utiliser une instance de SqlConnection pour se connecter à un serveur local, mais puisque SqlConnection n'est pas inclus dans le sous-ensemble .NET utilisé dans UWP, comment est-ce fait lorsque vous utilisez UWP?

j'ai regardé sur le Microsoft officiel les échantillons ainsi que guides pratiques, et n'y a rien trouvé sur la connexion de base de données qui n'est pas une base de données Azure. DbConnection semblait qu'il pourrait être une bonne façon d'aller, mais ne peut pas être utilisé car il est abstrait, et c'est les enfants (par exemple Données.SqlClient.SqlConnection) ne semble pas être inclus dans le sous-ensemble .NET pour UWP.

est-ce que je manque quelque chose de très évident ici? En passant, quelqu'un sait-il d'un bon espace de noms de référence pour UWP?

Éditer pour non-dupliquer: la question liée suggérée comme dupliquer est Pour Windows 8/8.1 apps, et bien qu'il y ait quelques similitudes, le code dans la réponse acceptée pour cette question ne fonctionnera pas sur UWP. Le principe est le même, mais il devrait y avoir une meilleure référence technique pour les applications Windows 10 construites avec UWP.

10
demandé sur Tobbe 2015-10-01 13:52:03

4 réponses

avec Windows 10 Fall Creators Update (build 16299), les applications UWP peuvent désormais accéder au serveur SQL directement via les classes réseau standard (System.Données.SqlClient) - grâce au nouveau support pour .NET 2.0 dans UWP.

Voici une application de démonstration UWP de Northwind: https://github.com/StefanWickDev/IgniteDemos

nous avons présenté cette démo à Microsoft Ignite en septembre 2017, voici l'enregistrement de notre session (passer à 23: 00 pour le SQL démo): https://myignite.microsoft.com/sessions/53541

voici le code pour récupérer les produits de la base de données Northwind (voir DataHelper.cs dans la démo). Notez que c'est exactement le même code que vous écririez pour une Winforms ou une application WPF - grâce à la norme .net 2.0:

public static ProductList GetProducts(string connectionString)
{
    const string GetProductsQuery = "select ProductID, ProductName, QuantityPerUnit," +
        " UnitPrice, UnitsInStock, Products.CategoryID " +
        " from Products inner join Categories on Products.CategoryID = Categories.CategoryID " +
        " where Discontinued = 0";

    var products = new ProductList();
    try
    {
        using (SqlConnection conn = new SqlConnection(connectionString))
        {
            conn.Open();
            if (conn.State == System.Data.ConnectionState.Open)
            {
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = GetProductsQuery;
                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            var product = new Product();
                            product.ProductID = reader.GetInt32(0);
                            product.ProductName = reader.GetString(1);
                            product.QuantityPerUnit = reader.GetString(2);
                            product.UnitPrice = reader.GetDecimal(3);
                            product.UnitsInStock = reader.GetInt16(4);
                            product.CategoryId = reader.GetInt32(5);
                            products.Add(product);
                        }
                    }
                }
            }
        }
        return products;
    }
    catch (Exception eSql)
    {
        Debug.WriteLine("Exception: " + eSql.Message);
    }
    return null;
}

si vous avez besoin de supporter des versions plus anciennes que la mise à jour des créateurs D'automne, il y a aussi un moyen pour vous d'appeler les API SqlClient à partir de votre paquet d'application UWP, via le Bureau De Pont. J'ai un échantillon de ce qui a été publié ici: https://github.com/Microsoft/DesktopBridgeToUWP-Samples/tree/master/Samples/SQLServer

10
répondu Stefan Wick MSFT 2017-10-09 16:30:34

Voici un échantillon simple et vidéo. Vous ne savez pas si c'est assez pour vous.

voici un point difficile est

  • comment consommer, sérialiser et désérialiser les données json. En tant que développeur.Net, vous pouvez envisager D'utiliser HttpClient pour implémenter ceci. Et c'est ici un autre échantillon et vidéo pour votre référence. Il n'y a un autre échantillon officiel montre comment utiliser Windows.Données.Json espace de noms.
4
répondu Alan Yao - MSFT 2015-10-01 12:49:12

je suis d'avoir à descendre cette même route... Nous espérons que SQLServer sera directement accessible via EF Core.

j'ai regardé les deux tutoriels ci-dessus et depuis que je suis nouveau dans le développement, il a seulement mouillé mon appétit. J'ai cependant trouvé cette détaillé Tutoriel Vidéo sur YouTube qui vous guide thru;

  • création du WebService
  • création d'dupliqué POGO classes dans WebService et votre UWP App
  • création d' Web API 2.0 Entity Framework Controllers pour chaque Table que vous voulez créer
  • Ajout De Newtonsoft.JSON et Microsoft.Net.HTTP via NuGet à votre application UWP
  • et finalement faire des appels depuis UWP vers le serveur SQL Local via le service Web / appels JSON en Code derrière.

bien que cette vidéo ne soit pas en anglais, j'ai pu regarder ce qu'il faisait puis faire une pause et dupliquer.

2
répondu ekgcorp 2017-03-22 13:51:42

Connecting UWP to SQL Server

Note: à partir de windows 10 Fall Creators Update (16299 )nous pouvons accéder directement à la base de données SQL Server en utilisant.NetStanded 2.0

comme il n'y a aucun moyen direct de se connecter à SQL Server, nous devons créer une API pour notre base de données afin de nous connecter à SQL Server.

cette solution décrit

  1. Creating API
  2. sérialiser et désérialiser JSON données

1. Creating API

1) Installation ASP.NET et développement web

  1. lancement Visual Studio Installer et cliquez sur Modifier enter image description here

  2. Install ASP.NET et développement web enter image description here

2) Création de nouvelles ASP.NET Application Web (.Net Framework)

  1. Ajouter un nouveau projet dans votre solution enter image description here

  2. sélectionner ASP.NET Application Web (.net Framework) et donner le nom du projet enter image description here

  3. Select Web API et cliquez sur OK enter image description here

3) Se connecter au serveur SQL la base de données

  1. Ajouter un nouvel élément dans le dossier des modèles enter image description here

  2. sélectionner ADO.NET modèle de données D'entité et lui donner un nom enter image description here

  3. Sélectionner EF Concepteur de base de données et cliquez sur Suivant enter image description here

  4. Cliquez sur Nouveau Connexion enter image description here

  5. Configurer votre connexion, cliquez OK et cliquez Suivant enter image description here

  6. Sélectionner Entity Framework version et cliquez sur suivant enter image description here

  7. Sélectionner les Bases de données et des Tableaux pour être connecté et Cliquez sur Terminer enter image description here

4) Ajouter des contrôleurs pour communiquer avec les modèles

  1. reconstruisez votre projet avant de faire forther enter image description here

  2. Ajouter un nouveau Contrôleur dans le dossier des contrôleurs enter image description here

  3. Sélectionnez Web API 2 Contrôleur avec des actions, à l'aide de Entity Framework et cliquez sur Ajouter enter image description here

  4. Sélectionner Modèle de classe (nom de la table) et classe de contexte des données (nom de la base de données) à partir de la liste déroulante et cliquez sur Ajouter enter image description here

5) tester L'API

  1. définissez ce projet comme le démarrage le projet enter image description here

  2. Exécuter le projet dans un navigateur web enter image description here

  3. maintenant votre navigateur va ouvrir un site localhost. cliquez sur API en haut enter image description here

  4. cette page affiche toutes les API disponibles à partir de votre projet enter image description here

  5. Copiez n'importe quel lien de L'API ci-dessous et remplacez-le par "Aide" dans URI et appuyez sur Entrée. Vous devriez maintenant pouvoir voir vos données à partir de la base de données du serveur SQL enter image description here

2. Sérialiser et Désérialiser les données JSON

1) Installer Newtonsoft.Json

2) désérialiser JSON

HttpClient httpClient = new HttpClient();
var jsonReponse = await httpClient.GetStringAsync("http://localhost:xxxxx/api/LogIns");
logInResult = JsonConvert.DeserializeObject<List<LogIn>>(jsonReponse);

Vous pouvez obtenir le modèle de classe à partir de Modèles enter image description here

il suffit de créer la même classe dans votre projet UWP

3) Serializing JSON

var logIn = new Models.LogIn()
{
    Username = "username",
    Password = "password"
};
var logInJson = JsonConvert.SerializeObject(logIn);

HttpClient httpClient = new HttpClient();
var httpContent = new StringContent(logInJson);
httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");

await httpClient.PostAsync("http://localhost:56267/api/LogIns", httpContent);

pour en savoir plus sur JSON Serialization and Deserialization Using JSON.NET bibliothèque en C#

0
répondu Vijay Nirmal 2017-10-07 17:28:26