如何从Windows应用商店应用连接到SQL Azure数据库表?

时间:2012-11-30 01:36:07

标签: c# ado.net windows-8 azure-sql-database windows-store-apps

基于此链接: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.Data.Common.DbConnection'引用的程序集'System,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'中的基类或接口'System.ComponentModel.Component' '无法解析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

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

2 个答案:

答案 0 :(得分:3)

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

  1. SQL数据库仅支持SQL Server身份验证。这意味着每个客户端设备将在数据库登录方面拥有该王国的密钥。如果该登录遭到入侵,那么您手上就会遇到严重问题。

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

  3. 签出Windows Azure Mobile Services,它为Windows Azure SQL数据库提供安全的RESTful CRUD前端。 I have a blog post使用移动服务来管理全球排行榜,这可能会有所帮助。

答案 1 :(得分:1)

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