[UWP开发]查询SQL Server数据库
在UWP开发中,无法找到如SqlConnection等一系列的API。意味着无法通过直接访问SQL Server数据库。只能通过间接的方式,如WCF服务来完成。
在MSDN上有一个代码示例(一直在Windows开发中心的文档里面找,结果没有…),可以参考。
下面总结一下主要的步骤。
- 创建一个WCF服务应用程序
Visual C#->WCF->WCF服务应用程序 - 创建数据类型
在IService.cs文件中,默认创建了CompositeType类,进行修改即可。后面的代码示例中,数据类型均为默认的CompositeType类。
[DataContract]
public class CompositeType
{
public bool boolValue = true;
public string stringValue = "Hello ";
[DataMember]
public bool BoolValue
{
get { return boolValue; }
set { boolValue = value; }
}
[DataMember]
public string StringValue
{
get { return stringValue; }
set { stringValue = value; }
}
}
3.接口声明
在IService.cs文件中,public interface IService1
中已经定义了2个方法,按照一致的格式定义自己的方法。
[OperationContract]
IList<CompositeType> Query();
4.方法实现
在Service.svc.cs文件中实现SQL数据库查询。
public IList<CompositeType> Query()
{
DataSet ds = new DataSet();
using (SqlConnection sqlCon = new SqlConnection(""/*Connection string*/))
{
try
{
sqlCon.Open();
string sqlStr = "select Bool, String from Table";
SqlDataAdapter sqlDa = new SqlDataAdapter(sqlStr, sqlCon);
sqlDa.Fill(ds);
}
catch
{
return null;
}
finally
{
sqlCon.Close();
}
}
List<CompositeType> articleList = new List<CompositeType>();
DataTable dt = ds.Tables[0];
foreach (DataRow dr in dt.Rows)
{
articleList.Add(new CompositeType()
{
boolValue = Convert.ToBoolean(dr["Title"]),
stringValue = dr["Text"] as string
});
}
return articleList;
}
5.添加引用
在UWP程序中,添加服务引用,加入刚才写的WCF服务。然后,直接调用即可。
ServiceClient client = new ServiceClient();
IList<CompositeType> MyList = await client.QueryAsync();
还有一些,如邮件等功能,也需要这种方式实现。
代码通过Visual Studio 2017测试。