我是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中工作。
由于
答案 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)
编辑:
这是链接中的代码示例,现在此示例与您的案例之间的区别在于您应该将命令类型指定为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();
}
}