从asp.net中的存储过程中检索记录

时间:2011-05-11 17:37:52

标签: asp.net stored-procedures

我是ASP.NET的新手,所以我为这个天真的问题道歉但我只是想知道如何从我在ASP.NET中调用的存储过程中检索数据。存储过程应该返回一个单行,我想检索返回的记录字段。

所以这就是我到目前为止所提出的

存储过程

ALTER PROCEDURE dbo.StoredProcedure6

@LoginName varchar(50)

AS
 SELECT username ,Password  FROM dbo.Users
 Where username = @LoginName
RETURN

访问asp.net.cs文件中特定记录的代码

var user = dbcontext.returnuserdetails(txtEmailAddress.Text); 

其中returnuserdetails是我通过Visual Studio 2010中的模型浏览器添加的函数

现在的问题是如何获取并存储返回的用户名和密码的值?

如果有帮助,我在ASP.NET 4.0中工作。

由于

2 个答案:

答案 0 :(得分:2)

如果你在4.0中,你可以很容易地使用LINQ to SQL的东西,这里不需要存储过程。

private void GetUser(string emailAddress){

  using(DataContext dbcontext = new DataContext()){
    var AppData.user = dbcontext.users
             .Select(u => u.email_address == emailAddress).SingleOrDefault();

    // access entity properties as needed
    // user.email_address, user.first_name, etc..

  }    

}

那说你并没有真正说明你要对用户实体做什么,密码应该 从不 存储为纯文本。

如果您被迫使用存储过程,那么LINQ-to-SQL中的返回将始终是一个集合。

ALTER PROCEDURE dbo.ReturnUserDetails

@LoginName varchar(50)

AS
 SELECT * -- Get whole row so you have all info that is possibly needed  
 FROM dbo.Users
 Where username = @LoginName
RETURN

C#代码

private void GetUser(string userName){

      using(DataContext dbcontext = new DataContext()){
        var user = dbcontext.ReturnUserDetails(userName).SingleOrDefault();

        // access entity properties as needed
        string userName =  user.username;
        var password = user.Password;

      }    
}

答案 1 :(得分:1)

使用SqlDataReader Class

编辑: 这是链接中的代码示例,现在此示例与您的案例之间的区别在于您应该将命令类型指定为StoredProcedure。
如果它仍然无法让我知道。

private static void ReadOrderData(string connectionString)
{
    string queryString =
        "SELECT OrderID, CustomerID FROM dbo.Orders;";

    using (SqlConnection connection =
               new SqlConnection(connectionString))
    {
        SqlCommand command =
            new SqlCommand(queryString, connection);
        connection.Open();

        SqlDataReader reader = command.ExecuteReader();

        // Call Read before accessing data.
        while (reader.Read())
        {
            Console.WriteLine(String.Format("{0}, {1}",
                reader[0], reader[1]));
        }

        // Call Close when done reading.
        reader.Close();
    }
}