Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从Windows 10 UWP应用程序连接到SQL server数据库_C#_Sql Server_Uwp_Windows 10_Win Universal App - Fatal编程技术网

C# 如何从Windows 10 UWP应用程序连接到SQL server数据库

C# 如何从Windows 10 UWP应用程序连接到SQL server数据库,c#,sql-server,uwp,windows-10,win-universal-app,C#,Sql Server,Uwp,Windows 10,Win Universal App,我正在尝试从通用windows应用程序连接到on-prem MS SQL数据库。我正在使用UWP制作一个LOB应用程序,以支持桌面、平板电脑和移动设备的使用。在尝试连接到本地(intranet)SQL server数据库时,我习惯使用的实例连接到本地服务器,但由于在UWP中使用的.NET子集中不包括SqlConnection,因此在使用UWP时如何做到这一点 我查看了以及,没有发现关于数据库连接的任何内容不是Azure数据库。看起来这可能是一个很好的方法,但不能使用,因为它是抽象的,并且它的子项

我正在尝试从通用windows应用程序连接到on-prem MS SQL数据库。我正在使用UWP制作一个LOB应用程序,以支持桌面、平板电脑和移动设备的使用。在尝试连接到本地(intranet)SQL server数据库时,我习惯使用的实例连接到本地服务器,但由于在UWP中使用的.NET子集中不包括SqlConnection,因此在使用UWP时如何做到这一点

我查看了以及,没有发现关于数据库连接的任何内容不是Azure数据库。看起来这可能是一个很好的方法,但不能使用,因为它是抽象的,并且它的子项(例如)似乎没有包含在UWP的.NET子集中

我是不是错过了一些非常明显的东西?顺便问一下,有人知道UWP的好名称空间引用吗

编辑不重复:建议作为重复的链接问题适用于Windows 8/8.1应用程序,虽然存在一些相似之处,但该问题的公认答案中的代码在UWP上不起作用。不过,原理是一样的,但是对于使用UWP构建的Windows 10应用程序,应该有更好的技术参考。

这里是一个和。我不确定这对你来说是否足够

这是一个难点

  • 如何使用、序列化和反序列化json数据。作为.NET开发人员,您可以考虑使用HTTPclipse来实现这一点。这是和,供你参考。下面演示了如何使用Windows.Data.Json命名空间

    • 我也不得不走这条路。。。希望SQLServer能够直接通过EF Core访问

      我看了上面的两个教程,因为我是开发新手,它只会打湿我的胃口。然而,我确实在YouTube上找到了详细的信息,可以带你浏览

      • 创建Web服务
      • 在WebService和UWP应用程序中创建重复的POGO类
      • 为要创建的每个表创建Web API 2.0实体框架控制器
      • 通过NuGet将Newtonsoft.JSON和Microsoft.Net.HTTP添加到您的UWP应用程序
      • 最后,通过代码隐藏中的Web服务/JSON调用从UWP返回本地SQL Server
      尽管这段视频不是英文的,我还是能够看到他在做什么,然后暂停并复制。

      将UWP连接到SQL Server 注意:从Windows10FallCreators更新(16299)中,我们可以使用.netstanded2.0直接访问SQLServer数据库

      由于没有直接连接到SQL Server的方法,我们需要为数据库创建一个API,以便连接到SQL Server

      此解决方案描述了

    • 创建API
    • 序列化和反序列化JSON数据
    • 1.创建API 1) 安装ASP.NET和web开发
    • 启动Visual Studio安装程序,然后单击修改

    • 安装ASP.NET和web开发

    • 2) 创建新的ASP.NET Web应用程序(.NET Framework)
    • 在解决方案中添加新项目

    • 选择ASP.NET Web应用程序(.NET Framework)并给出项目名称

    • 选择Web API并单击确定

    • 3) 连接到SQL Server数据库
    • 在模型文件夹中添加新项目

    • 选择ADO.NET实体数据模型并为其命名

    • 从数据库中选择EF Designer并单击下一步

    • 单击新连接

    • 配置您的连接,单击确定,然后单击下一步

    • 选择实体框架版本并单击下一步

    • 选择要连接的数据库和表,然后单击完成

    • 4) 添加控制器以与模型通信
    • 在为其执行操作之前重建项目

    • 在控制器文件夹中添加新控制器

    • 使用实体框架选择带有操作的Web API 2控制器,然后单击添加

    • 从下拉列表框中选择模型类(表名)和数据上下文类(数据库名),然后单击添加

    • 5) 测试API
    • 将此项目设置为启动项目

    • 在web浏览器中运行项目

    • 现在,您的浏览器将打开一个本地主机站点单击顶部的API

    • 此页面显示项目中可用的所有API

    • 从下面复制任何API链接,并将其替换为URI中的“帮助”,然后按Enter键。现在,您应该能够从SQL Server数据库中查看数据

    • 2.序列化和反序列化JSON数据 1) 安装 2) 反序列化JSON
      有关Windows 10 Fall Creators Update(build 16299)的更多信息,UWP应用程序现在可以通过标准网络类(System.Data.SqlClient)直接访问SQL Server,这要感谢UWP中新增的对.NET标准2.0的支持

      以下是Northwind UWP演示应用程序:

      我们已于2017年9月在Microsoft Ignite上展示了此演示,以下是我们的会议记录(SQL演示跳到23:00):

      以下是从Northwind数据库检索产品的代码(请参阅演示中的DataHelper.cs)。请注意,它与您为Winforms或WPF应用程序编写的代码完全相同-多亏了.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;
      }
      
      如果您需要支持Fall Creators更新之前的版本,还可以通过桌面网桥从UWP应用程序包调用SqlClient API。我在这里发布了一个示例:

      我认为你至少需要考虑使用Web服务来让你的UWP应用程序和DB至少连接到现在。但我认为你可以继续检查EF7,它目前是预发布版本。谢谢你的邀请
      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);
      
      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;
      }