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, SqlConnection,并且SqlCommand无法识别/解决。我是否需要安装一个单独的 ADO.NET 包才能使其工作,或者有什么关系?

更新

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

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

和:

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

更新 2

添加 SQL.Data 作为引用允许解决各种类型,但是另一个问题阻止了应用程序的编译,即:

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

从引用中删除 SQL.Data 消除了这个问题。

4

2 回答 2

3

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

  1. SQL 数据库仅支持 SQL Server 身份验证。这意味着每个客户端设备都将拥有数据库登录方面的王国密钥。如果该登录名被泄露,您将面临严重问题。

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

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

于 2012-12-02T02:46:21.540 回答
1

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

于 2012-11-30T04:10:16.620 回答