科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道SQL2005 CompactEdition数据存储体系(6)

SQL2005 CompactEdition数据存储体系(6)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文详细介绍了SQL Server 2005 Compact Edition 的数据存储体系结构。

作者:microsoft.com 来源:microsoft.com 2007年9月1日

关键字: 数据存储 数据库 SQL Server 2005 SQL Server

  • 评论
  • 分享微博
  • 分享邮件
SQL2005 CompactEdition数据存储体系(6)

图 2. 现场团队应用程序体系结构

出于数据同步的目的,通常要采用一种更直接的途径来限制应用程序的复杂性。使用 RDA 或合并复制时,同步体系结构更像图 3 所示。在这种情况下,客户端应用程序通过 HTTP 连接到后端数据库,Internet 信息服务 (IIS) 会公开 HTTP 端点(通过该端点执行同步通信)。

SQL2005 CompactEdition数据存储体系(6)

图 3. 现场团队同步体系结构

若要在客户端执行数据访问,可以使用一般的断开 ADO.NET 数据访问的方法,例如,使用类型化数据集及其关联的表适配器从本地 SSCE Northwind 数据存储中读取和写入数据,如以下代码示例所示。可以看到,类型化数据集将对基本存储的所有详细信息进行抽象化,并且,如果数据位于可通过受支持的托管 ADO.NET 提供程序来访问的 SQL Server、SSE 或另一个数据存储中,则此数据使用者代码将不会发生变化。在 CustomersTableAdapter 内,SqlCeConnection 和 SqlCeCommand 对象由 Visual Studio 设计者定义,并使用标准 ADO.NET 数据访问模式对 SSCE 数据库中的数据执行所有检索和更新工作。

代码示例:使用类型化数据集执行读/写数据访问

private NorthwindDataSet LoadDataSet()
{
    NorthwindDataSet nwData = new NorthwindDataSet();
    CustomersTableAdapter adapter = new CustomersTableAdapter();
    adapter.Fill(nwData.Customers);
    return nwData;
}

private void SaveChanges(NorthwindDataSet nwData)
{
    CustomersTableAdapter adapter = new CustomersTableAdapter();
    adapter.Update(nwData);
}

SqlCeResultSet 还支持连接的数据访问模型,如下一个代码示例所示。在此方法中,将创建 SqlCeConnection 和 SqlCeCommand 以便检索数据行(尽管它同样适用于多行结果集)。然后,我们打开连接,并执行命令来检索 SqlCeResultSet,然后通过它执行数据记录更新。在此简单示例中,通过使用阻止来关闭了连接。但在正常情况下,如果要跨越较大代码作用范围保持连接,并且可以在不必打开和关闭连接的情况下读写数据库,则应使用 SqlCeResultSet。在该情况下,在使用结果集之后不会立即关闭连接;而会使它保持打开状态,在用它完成操作后再关闭 SqlCeResultSet。

代码示例:使用 SqlCeResultSet 执行读/写数据访问

private void UpdateCompanyName(string custId, string companyName)
{
    // 建立连接,只需要 sdf 文件的路径
    SqlCeConnection conn = 
        new SqlCeConnection(
           @"Data Source ='.\Northwind.sdf'");
    
    // 建立选择查询,在结果集里列出行的内容
    string selQuery = 
       "SELECT * FROM Customers WHERE [Customer ID] = @CustID";
    SqlCeCommand getCustCmd = new SqlCeCommand(selQuery, conn);
    getCustCmd.Parameters.Add("@CustID", custId);

    using (conn)
    {
        conn.Open();
        // 把行拉进结果集,
        // 使用选项来允许已连接的、随机的和可读写的访问
        SqlCeResultSet resultSet = 
            getCustCmd.ExecuteResultSet(
               ResultSetOptions.Scrollable | 
               ResultSetOptions.Updatable);
        // 移到第一个记录
        if (resultSet.ReadFirst())
        {
            // 得到列的位置
            int ordinal = resultSet.GetOrdinal("Company Name");
            // 设置值
            resultSet.SetString(ordinal, companyName);
            // 永久保存
            resultSet.Update();
        }
        else // 没有匹配的
        {
            throw new ArgumentException("Customer not found");
        }
    }
}
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章