【问题标题】:Get string data from specific table of local database从本地数据库的特定表中获取字符串数据
【发布时间】:2013-05-31 11:57:01
【问题描述】:

我正在尝试从我的应用项目中存在的本地数据库中获取数据。

这是代码:

private void HW_Info()
    {
        const string strConnectionString = @"appdata:/WInfoAppDevicesDB.sdf";
        using (DeviceDataContext db = new DeviceDataContext(strConnectionString))
        {
            var projectName = from m in db.Devices
                                 where m.ProductName == deviceName
                                 select m;
        }
    }

问题是我获取的不是我的表的值,而是一串SQL查询,不知道会选择哪个表应用(三张表的列类型相同)。

(我是 Linq-to-SQL 的新手,因为我只学过 SQL,所以对于我没有做好准备,我深表歉意)

【问题讨论】:

  • 你的意思是你在调试器中看到了 SQL 字符串?
  • 不,我试图直接在我的应用程序中的文本块中显示...我只看到传统形式的 SQL 查询(SELECT...FROM...WHERE...),但是没有'不是它试图检索数据的任何表名......
  • 您的查询未检索表名。它正在检索设备表中的行。那是你想要做的吗?看看我的回答,我想这就是你要找的。​​span>
  • 我正在尝试从特定表中检索数据。示例:我有一个名为 HTC 的表,我想获取特定设备型号的一行(如您所见,我使用了 "where m.ProductName == deviceName" ),但我没有检索到任何其他 SQL 查询(现在我观察到该程序给了我一个 System.Data.SqlServerCe.SqlCeException...也许是一个损坏的数据库?)
  • 异常信息是什么?

标签: .net database entity-framework windows-phone-7 linq-to-sql


【解决方案1】:

在您在问题中提供的代码 sn-p 中,您正在查询“设备”表。

根据您的 cmets,您正在使用的数据库中似乎没有“设备”表。

如果您想从“HTC”表中选择记录,请将 linq 查询更改如下

var projectName = from m in db.HTC
                  where m.ProductName == 'deviceName'
                  select m;

上述linq查询的等效SQL查询如下

SELECT * FROM HTC m WHERE m.ProductName = 'deviceName';

希望这会有所帮助...

【讨论】:

  • 嗯,问题是(我现在尝试过)我不能将名称 HTC 直接放在代码中,因为编译器认为是我没有定义的变量,如果我把它作为字符串格式(“HTC”),它给我错误代码,因为从表变量隐式转换为字符串。
  • 您似乎没有更新实体数据模型以匹配最新架构。在尝试我上面提供的解决方案之前,请尝试更新数据模型以添加缺失的表。
猜你喜欢
  • 2010-12-06
  • 1970-01-01
  • 2013-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-13
  • 2020-07-24
  • 2016-04-03
相关资源
最近更新 更多