Với bản cập nhật Windows 10 Fall Creators Update (bản dựng 16299), các ứng dụng UWP hiện có thể truy cập trực tiếp vào SQL Server thông qua các lớp NET tiêu chuẩn (System.Data.SqlClient) - nhờ hỗ trợ mới được bổ sung cho .NET Standard 2.0 trong UWP.
Đây là ứng dụng demo Northwind UWP:https://github.com/StefanWickDev/IgniteDemos
Chúng tôi đã trình bày bản demo này tại Microsoft Ignite vào tháng 9 năm 2017, đây là bản ghi phiên của chúng tôi (chuyển đến 23:00 cho bản demo SQL):https://myignite.microsoft.com/sessions/53541
Đây là mã để truy xuất các sản phẩm từ cơ sở dữ liệu Northwind (xem DataHelper.cs trong bản demo). Lưu ý rằng nó hoàn toàn giống mã mà bạn sẽ viết cho ứng dụng Winforms hoặc WPF - nhờ .NET Standard 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;
}
Nếu bạn cần hỗ trợ các phiên bản sớm hơn Bản cập nhật dành cho người sáng tạo mùa thu, thì cũng có một cách để bạn gọi các API SqlClient từ gói ứng dụng UWP của mình, thông qua Desktop Bridge. Tôi có một mẫu cho điều này được xuất bản tại đây:https://github.com/Microsoft/DesktopBridgeToUWP-Samples/tree/master/Samples/SQLServer