SQL和C#从数据库中检索单个记录

时间:2012-04-01 00:57:43

标签: c# asp.net sql

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

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

    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
    

3 个答案:

答案 0 :(得分:3)

首先进行术语修正。

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.
}

答案 1 :(得分:2)

如果我理解正确,下面的内容应该有用。

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

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

答案 2 :(得分:0)

而不是select new {p.Book_Price},请使用select p.Book_Price之类的内容。您可以在末尾添加.ToString()以强制它作为String而不是表中的数据类型出现。

您还希望将整个LINQ语句包装在()中并附加.FirstOrDefault()以获取一个值。当结果设置为空时,“OrDefault”部分可以保护您免受异常的影响。