2012-12-19 51 views
1

在我的網站我試圖讓我的網站顯示,如果他們在試圖存儲過程中記錄的用戶地址的詳細信息:ASP.NET C#顯示地址詳細信息如果登錄

ALTER PROCEDURE dbo.showAddress 
    @userid nvarchar(256) 
AS 
    SELECT Fullname, Address, County, Postcode FROM Addresses WHERE @userid = UserId 
RETURN 

,但我得到關於期待用戶ID的區域?我試圖通過後面的代碼插入:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (User.Identity.IsAuthenticated) 
    { 
     SqlCommand oCMD = new SqlCommand(); 
     SqlConnection oCON = new SqlConnection(); 
     oCON.ConnectionString = ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString; 
     oCON.Open(); 
     oCMD.Connection = oCON; 
     oCMD.CommandType = CommandType.StoredProcedure; 
     oCMD.CommandText = "showAddress"; 

     SqlDataReader oRDR = oCMD.ExecuteReader(); 
     oRDR.Read(); 
     txtName.Text = oRDR.GetString(oRDR.GetOrdinal("Fullname")); 
     oCON.Close(); 
    } 
} 

但這不工作,無論對我來說。是否有一些代碼可以輸入如下:

txtPostcode.Text =「sql connection; Addresses; Fullname」;

任何幫助或建議表示讚賞....

回答

2

在C#中,你需要將@userid添加作爲參數傳遞給存儲過程。

oCMD.Parameters.Add(new SqlParameter("@userid", userid)); 

顯然,您需要從某處獲取userID,例如User.Identity對象。

+0

嗨, 我已經添加thie線到我的代碼: 'oCMD.Parameters.Add( 「@用戶ID」,SqlDbType.NVarChar,256)。價值= User.Identity.Name;' 但是,當我嘗試運行這個,我到我的頁面與此代碼後面我無效嘗試讀取時,沒有數據存在。?如此迷茫!! –

+0

我發現我的代碼實際上正在工作!但是...這個問題似乎是,當一個用戶使用CreateUserWizard爲我的網站提供服務時,它會對用戶名和密碼進行加密,所以當我的程序查看數據庫中的用戶名時,它會找到加密的文本,這顯然不匹配!所以我需要解密代碼或從不加密,因爲它進入數據庫表!嗯... –

2

對我來說,你並沒有將useid參數傳遞給存儲過程。

oCMD.Parameters.Add(new SqlParameter("@userId", User.UserId));//plz check the User object to find the id