[UWP开发]查询SQL Server数据库

[UWP开发]查询SQL Server数据库

在UWP开发中,无法找到如SqlConnection等一系列的API。意味着无法通过直接访问SQL Server数据库。只能通过间接的方式,如WCF服务来完成。

在MSDN上有一个代码示例(一直在Windows开发中心的文档里面找,结果没有…),可以参考。

下面总结一下主要的步骤。


  1. 创建一个WCF服务应用程序
    Visual C#->WCF->WCF服务应用程序
  2. 创建数据类型
    在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 Query();

4.方法实现
在Service.svc.cs文件中实现SQL数据库查询。

public IList 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 articleList = new List();
    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 MyList = await client.QueryAsync(); 

还有一些,如邮件等功能,也需要这种方式实现。


代码通过Visual Studio 2017测试。

你可能感兴趣的:(Windows应用商店)