Com o Windows 10 Fall Creators Update (build 16299), os aplicativos UWP agora podem acessar o SQL Server diretamente por meio das classes NET padrão (System.Data.SqlClient) - graças ao suporte recém-adicionado para .NET Standard 2.0 em UWP.
Aqui está um aplicativo de demonstração Northwind UWP:https://github.com/StefanWickDev/IgniteDemos
Apresentamos esta demonstração no Microsoft Ignite em setembro de 2017, aqui está a gravação da nossa sessão (pule para as 23:00 para a demonstração do SQL):https://myignite.microsoft.com/sessions/53541
Aqui está o código para recuperar os produtos do banco de dados Northwind (consulte DataHelper.cs na demonstração). Observe que é exatamente o mesmo código que você escreveria para um aplicativo Winforms ou WPF - graças ao .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;
}
Se você precisar dar suporte a versões anteriores ao Fall Creators Update, também há uma maneira de chamar APIs SqlClient do pacote do aplicativo UWP, por meio do Desktop Bridge. Eu tenho um exemplo para isso publicado aqui:https://github.com/Microsoft/DesktopBridgeToUWP-Samples/tree/master/Samples/SQLServer