webForumDet fria alternativet

Spara login ID till en Session

.NET

3 svar · 337 visningar · startad av tronez

Medlem sedan juli 2001728 inlägg
Frågan#1

Hej, sitter å pular med en labb där vi ska skapa en inloggninsfunktion, men jag har fastnat efter man loggat in så ska dennes ID från databasen sparas i en Session

Jag kör med en lagrad procedur som ser ut såhär:

CREATE PROC doLogin
(
	@user varchar(15),
	@pass varchar(15)

)
AS
SELECT CustomerID,Username,Passwd 
FROM Customer
WHERE Username = @user AND Passwd = @pass

Och koden som loggar in:

protected void doLogin(string user, string pass)
		{
			SqlCommand cmd = new SqlCommand("doLogin",conn);
			cmd.CommandType = CommandType.StoredProcedure;

			cmd.Parameters.Add("@user",user);
			cmd.Parameters.Add("@pass",pass);
			
			try
			{
				conn.Open();		//Öppna anslutning
				SqlDataReader rd = cmd.ExecuteReader(); // Kör frågan

				// Kolla om frågan returnerar några rader
				if(rd.HasRows)
				{

					//Session["CustomerID"] = ????
					Server.Transfer("index.aspx");	
					
				} 
				else 
				{
					lblError.Text = "FEL!";
				}

			}

Och då vi nyss börjat med kursen och jag är relativ ny med ASP.net, är jag på nåt sätt rätt ute?

Medlem sedan aug. 20003 575 inlägg
#2

rd["CustomerID"] eller rd[0].

Medlem sedan juli 2001728 inlägg
#3

Provade det förut, men fick felet


Invalid attempt to read when no data is present. 

Line 86: 				{
Line 87: 
[b]Line 88: 					Session["CustomerID"] =  rd[0];[/b]
Line 89: 					Server.Transfer("index.aspx");	
Line 90:
Medlem sedan apr. 20012 266 inlägg
#4

Du måste hoppa fram till en rad innan du kan läsa från datareadern.

rd.Read();
268 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
132 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
132 ms — ändringar (db)