如何在Windows商店应用程序中连接到SQL Azure数据库表?

4
基于这个链接:http://msdn.microsoft.com/en-us/library/windowsazure/ee336243.aspx 我正在尝试使用以下代码连接到SQL Azure数据库并插入一行:
// The values being assigned to the StringBuilder members are set previously/not shown
    SqlConnectionStringBuilder connStringBuilder = new SqlConnectionStringBuilder();
    connStringBuilder.DataSource = dataSource;
    connStringBuilder.InitialCatalog = databaseName;
    connStringBuilder.Encrypt = true;
    connStringBuilder.TrustServerCertificate = false;
    connStringBuilder.UserID = userName;
    connStringBuilder.Password = password;

    using (SqlConnection conn = new SqlConnection(connStringBuilder.ToString()))
    {
        using (SqlCommand command = conn.CreateCommand())
        {
            conn.Open();
            command.CommandText =
                "INSERT INTO T1 (col1, col2) values (1, 'string 1'), (2, 'string 2'), (3, 'string 3')";
            int rowsAdded = command.ExecuteNonQuery();
        }
        conn.Close();
    }

尝试使用SqlConnectionStringBuilder, SqlConnectionSqlCommand时,它们无法被识别或解析。 我需要安装单独的ADO.NET软件包才能使其工作,还是怎么回事?

更新

通过将System.Data.dll添加到我的项目引用中(从我的机器上,来自C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5),我可以使这些类得到识别/解析,但仍然会出现编译时错误,即:

错误 1:程序集“System、Version=4.0.0.0、Culture=neutral、PublicKeyToken=b77a5c561934e089”中引用的基类或接口“System.ComponentModel.Component”,被类型“System.Data.Common.DbConnection”无法解析 c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\System.Data.dll

和:

错误 2:程序集“System、Version=4.0.0.0、Culture=neutral、PublicKeyToken=b77a5c561934e089”中引用的基类或接口“System.ComponentModel.Component”,被类型“System.Data.Common.DbCommand”无法解析 c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\System.Data.dll

更新2

将SQL.Data作为引用后,不同的问题阻止了该应用程序的编译,即:

在mscorlib.dll模块中找不到System.SystemException类型。

将SQL.Data从引用中删除可消除该问题。

2个回答

3

您需要使用(或构建)服务接口,无法直接从Windows 8商店应用程序访问Windows Azure SQL Database(前身为SQL Azure),即使可以,我认为您也不应该这样做。以下是两个主要原因:

  1. SQL Database仅支持SQL Server身份验证。这意味着每个客户端设备将拥有数据库登录的“王国之钥”。如果该登录被攻击,您就会面临重大问题。

  2. 对SQL Database的访问是通过服务器上的防火墙进行管理,并且只允许来自白名单IP地址的流量进入服务器。这基本上意味着您必须完全打开防火墙以允许任何IP地址0.0.0.0到255.255.255.255进入,因为您不知道客户端所在的IP范围。

请查看Windows Azure移动服务,它提供了一个安全的RESTful CRUD前端到Windows Azure SQL数据库。我有一篇博客文章使用移动服务来管理全球排行榜,这可能会作为一个示例有所帮助。


1

System.Data在Metro应用程序中不可用。如果您仍然想使用SQL,可以使用Sqlite,或将Azure SQL DB作为数据服务器。否则,您可以使用LocalStorage。


我已经在使用SQLite作为我的本地数据库,而使用本地存储来保存状态/设置。但是,我还需要使用SQL DB(以前称为SQL Azure) - 因为我正在将其用作数据服务器 - 这是我应用程序套件的两个部分“通信”的方式。至少,我正在尝试这样做,因此有这个问题。 - B. Clay Shannon-B. Crow Raven

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接