2011-05-11 16 views
3

我對ASP.NET很新,所以我對天真的問題表示歉意,但我只是想知道如何從存儲過程中檢索數據,我從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

什麼打算與用戶的信息呢?你是否想要一種方式來識別用戶在登錄後是誰?如果是這樣,您可以將user.username放入Session中。 –

+0

@Andrew Charlton那麼目前的目標只是檢查在表單字段中輸入的用戶名是否是唯一的(我打算將它與檢索到的數據進行匹配,如果匹配,則會拋出一個錯誤,指出用戶名是唯一的)。但從長遠來看,我計劃使用密碼進行身份驗證。 這可能不是最有效的方法,但我仍然在尋找解決方法 –

+0

您是否正在使用LINQ to SQL?你提到模型瀏覽器。如果您只想檢查用戶名是否存在,請創建一個功能,通過輸入用戶名的用戶數明確完成此功能。如果結果大於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.. 

    }  

} 

那說你是不是真的說明它是你正在嘗試與用戶實體做和密碼應該NEVER保存爲純文本。

如果您被迫使用存儲過程,那麼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; 

     }  
} 
+0

謝謝,這個問題是,DBA希望每個人都作爲存儲過程訪問,所以我走這樣一條路。 這就是說,密碼使用SHA1加密它們存儲在數據庫中 –

+0

感謝之前加密!這樣可行 –

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(); 
    } 
} 
+0

@@ AtoMerZ,你可以請詳細說明。我通過你建議的鏈接去了,但我仍然感到困惑。 –

相關問題