如何在 ASP.NET Web 应用程序中为 Windows Mobile 创建 SQL Compact 3.5 数据库?

Posted

技术标签:

【中文标题】如何在 ASP.NET Web 应用程序中为 Windows Mobile 创建 SQL Compact 3.5 数据库?【英文标题】:How to create a SQL Compact 3.5 database for Windows Mobile in an ASP.NET web application? 【发布时间】:2009-07-23 10:17:07 【问题描述】:

在 ASP.NET Web 应用程序中,我必须从数据源 (SQL Server) 为 Windows Mobile Compact Framework 应用程序动态创建 SQL Compact 3.5 数据库

我必须创建数据库文件、需要的对象(表格、...)并用数据填充表格。客户端应用程序(Windows Mobile 设备)将下载生成的文件。

我需要哪些先决条件(引用的程序集、安装) - 或者:这是否可能?

【问题讨论】:

【参考方案1】:

您至少需要 System.Data.SqlServerCe 程序集。这通常在 GAC 中,但它可能可用作本地复制的 DLL。

从那里您可以实例化一个 SqlCeEngine 对象并使用 CreateDatabase()

这是 VB.NET 中的一些 CodeProject example code。

【讨论】:

【参考方案2】:

基本上,亨克的回答指向了正确的方向。但有一些警告。 SQLServerCE 程序集引发运行时错误。

我发现了这两个有用的链接:

SQL Server Compact Edition under ASP.net and IIS(史蒂夫·拉斯克的博客) Using SQL Compact Edition Under ASP.NET Geoff Lane

为了使用程序集,你必须调用这个方法:

AppDomain.CurrentDomain.SetData("SQLServerEverywhereUnderWebHosting", true)

【讨论】:

【参考方案3】:

您需要 SQL Compact 3.5 SP1 运行时:

http://www.microsoft.com/downloads/details.aspx?FamilyId=DC614AEE-7E1C-4881-9C32-3A6CE53384D9&displaylang=en

然后添加对 System.Data.SqlServerCe 的引用

以下是一些创建新数据库的示例代码:

using System.Data.SqlServerCe;

public static class SqlCompactServices

    public static void CreateDatabase()
    
        string connectionString = "Data Source=file.sdf";
        using (SqlCeEngine engine = new SqlCeEngine(connectionString))
        
            engine.CreateDatabase();
        

        using (SqlCeConnection connection = new SqlCeConnection(connectionString))
        
            connection.Open();
            // preform queries just like "regular" SQL Server
        
    

【讨论】:

您是否费心阅读 splattne 的答案?关键是你必须调用一个特殊的方法才能让它工作。 他放的东西真的有用吗?它不再被称为 SQL Server Everywhere。

以上是关于如何在 ASP.NET Web 应用程序中为 Windows Mobile 创建 SQL Compact 3.5 数据库?的主要内容,如果未能解决你的问题,请参考以下文章