【问题标题】:Compact Framework 3.5 - DataSet Run-Time Connection StringCompact Framework 3.5 - 数据集运行时连接字符串
【发布时间】:2011-05-19 14:40:02
【问题描述】:

我发现了一个MS article,它说我可以使用 .XSD 文件的 ConnectionString 属性在运行时更改 DataSet 的 ConnectionString。

这会在 .csproj 文件中设置一个名为“RuntimeConnectionString”的元素。

但是,当我将它部署到我的 Motorola MC9190-G 设备 (Windows Mobile 6.5.1) 时,它不会更改表适配器的 ConnectionString。

我做错了什么,还是这是一个错误?使用 Compact Framework 更改运行时连接字符串的适当/替代选项是什么?

提前致谢

【问题讨论】:

  • 此时我不得不问“你为什么首先使用 DataSet?”数据集是非常缓慢和令人难以置信的内存消耗。在 CF 应用程序中,它们通常是丧钟。作为一个数据点,我从大约 2002 年开始就一直在为设备编写托管应用程序(因为在 CF 甚至被称为 CF 之前)并且我从未使用过数据集,除了测试表明它是猪.永远。

标签: compact-framework xsd dataset connection-string strongly-typed-dataset


【解决方案1】:

我花了一整天的时间寻找解决这个问题的方法。 看起来这是一个 Visual Studio 错误(我使用 VS2008Professional 并且也被困在这个问题上)。 在这种情况下,两种可能的操作是: 1) 在构建 TA 之前(实际上是在打开与 db 的连接之前)手动更改 tableAdapter (TA) connectionString。

// something like this:
if (storageDataSetUtil.DesignerUtil.IsRunTime())
{
    // path to database file in my mobile device
    this.employeesTableAdapter.Connection.ConnectionString = @"/Program Files/MyApp/data/storage.s3db";

    // VS2008-generated code for auto-filling table at runtime:
    this.employeesTableAdapter.Fill(this.storageDataSet.employees);
}

2) 使用语句'|DataDirectory|' (不带引号)在您的 TA 的 connectionString 中。在数据集设计器(模式)中选择 TA 并显示其属性。展开“连接”字段并选择不用于连接数据库的连接(VS2008 通常在将数据集绑定到 WinForms 控件时创建一个。如果没有,请手动为 TA 创建新连接)。因此,用于数据库连接的 connectionString 保持不变。 使用 |数据目录|允许您使用数据库文件的相对路径,并且在大多数情况下独立于平台。对我来说,这有帮助。希望,这对你也有帮助。

附:抱歉英语不好)

【讨论】:

    最近更新 更多