C# 如何从Windows 10 UWP应用程序连接到SQL server数据库
我正在尝试从通用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应用程序,应该有更好的技术参考。这里是一个和。我不确定这对你来说是否足够 这是一个难点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数据库。看起来这可能是一个很好的方法,但不能使用,因为它是抽象的,并且它的子项
- 如何使用、序列化和反序列化json数据。作为.NET开发人员,您可以考虑使用HTTPclipse来实现这一点。这是和,供你参考。下面演示了如何使用Windows.Data.Json命名空间
- 创建Web服务
- 在WebService和UWP应用程序中创建重复的POGO类
- 为要创建的每个表创建Web API 2.0实体框架控制器
- 通过NuGet将Newtonsoft.JSON和Microsoft.Net.HTTP添加到您的UWP应用程序
- 最后,通过代码隐藏中的Web服务/JSON调用从UWP返回本地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
- 我也不得不走这条路。。。希望SQLServer能够直接通过EF Core访问
我看了上面的两个教程,因为我是开发新手,它只会打湿我的胃口。然而,我确实在YouTube上找到了详细的信息,可以带你浏览
有关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;
}