【问题标题】:SQL and C# retrieving a single record from databaseSQL 和 C# 从数据库中检索单个记录
【发布时间】:2012-04-15 04:54:57
【问题描述】:

我有一个网页,其中包含一个包含书籍列表的下拉菜单。这些书籍存储在 sql server 上。使用 MVC 和 aspx 页面,我试图弄清楚如何检索有关一本书的信息,以便当用户选择一本书时,它会传递这本书的价格。我是 sql sever 和 var 语句的新手。

  1. 我可以从网页中检索图书名称并将其发送到我的控制器
  2. 在我的模型中,我试图在此处获取该数据是我的想法。我想得到价格并存储到一个字符串中。但我见过的获取信息的唯一方法是使用 var 语句。

这样

var price = from p in BooksDB.Price
 where p.Book_Name==bookName
    select new {p.Book_Price}

但是我如何获取该值并将其存储到基于我从下拉框中检索到的 Books_Name 的字符串中

顺便说一下,我的桌子是这样的

Id_Num   Book_Name    Book_Price
  1       Pro C#       29.99
  2       Beg C++      10.99

【问题讨论】:

  • 如果您在运行查询时可以访问它,我建议您使用您的 Id_Num 字段(我假设它是唯一的)而不是书名。如果您在 id 上有一个唯一键,那么它会更快,并且还消除了由于重复书名而返回多行的可能性。

标签: c# asp.net sql


【解决方案1】:

首先是术语更正。

var 只是编译器允许您用来替换类型的关键字。在编译期间,编译器会根据使用情况来判断类型。

var myString = "hihihi";
string myString = "hihihi";

var 语句与访问数据库无关,尽管添加它是为了让我们懒惰的开发人员更容易使用 LINQ。

您正在做的是创建一个LINQ to SQL 查询。我稍微修改了一下(你不需要创建匿名对象)。创建语句后,您需要通过调用“ToList()、First() 或 FirstOrDefault() 等”来执行它

LINQ 通常对查询使用惰性或延迟评估,并且在您触发执行之前不会执行。

var price = from p in BooksDB.Price
            where p.Book_Name==bookName
            select p.Book_Price;

//assuming Book_Price is stored as a string datatype.
string bookPrice = price.FirstOrDefault();
//otherwise
string bookPrice = (price.FirstOrDefault() ?? "").ToString();

if(!String.IsNullOrEmpty(bookPrice))
{
    //do something with the string.
}

【讨论】:

    【解决方案2】:

    如果我理解正确,下面的内容应该可以工作。

    var record = BooksDB.Price.FirstOrDefault(r => r.Book_Name == bookName);
    

    如果此时record 不是null,那么record.Book_Price 应该包含您要查找的数据(不考虑数据库中的歧义。)

    【讨论】:

      【解决方案3】:

      不要使用select new {p.Book_Price},而是使用select p.Book_Price 之类的名称。您可以在末尾添加.ToString() 以强制它以字符串形式出现,而不是表中的数据类型。

      您还需要将整个 LINQ 语句包装在 () 中并附加 .FirstOrDefault() 以获得一个值。当结果集我们为空时,“OrDefault”部分可以保护您免受异常影响。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-20
        • 1970-01-01
        • 2015-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-22
        相关资源
        最近更新 更多