webForumDet fria alternativet

db koppling

.NETur .NET

58 svar · 1 365 visningar · startad av pellesvenne · sida 3 av 3

pellesvenneMedlem sedan jan. 2002227 inlägg
#41

funkar inte forfarande 0 värde!

PDahlenMedlem sedan apr. 2004778 inlägg
#42

Med andra ord så får du en RowCount = 0.
Det kanske inte fungerar med bara UPDATE i alla fall.
Prova följande. Om inte den funkar så kan jag inte hjälpa dig mer. Då är det nåt annat knas i din databas. Denna funkar för mig.

CREATE Procedure CheckLogin
	(
		@anvandarnamn	varchar(15),
		@losenord	varchar(15)
	)
As
	Declare @UserID int
	
	SELECT ID
	FROM medlemmar
        WHERE anvandarnamn=@anvandarnamn
        AND losenord=@losenord

if @@ROWCOUNT = 1
	begin
		UPDATE medlemmar
		SET Online = 1
               WHERE anvandarnamn=@anvandarnamn
               AND losenord=@losenord

	        SELECT @UserID = ID
	        FROM medlemmar
               WHERE anvandarnamn=@anvandarnamn
               AND losenord=@losenord
	end
else
	begin
		SET @UserID = 0
	end
	
return @UserID
pellesvenneMedlem sedan jan. 2002227 inlägg
#43

nu tror jag din kod funkar!
den retunerar 0 och 2

pellesvenneMedlem sedan jan. 2002227 inlägg
#44

ere nån cash i stored procedure ? för att jag ändrar frågan och sparar direkt!

PDahlenMedlem sedan apr. 2004778 inlägg
#45

Nej, det är ingen cache i procedurer, däremot så kanske din sida har cachats. Starta om webbläsaren och gå in på sidan igen.
Lycka till! Nu går jag och knoppar.

pellesvenneMedlem sedan jan. 2002227 inlägg
#46

Dim loggain As Integer = objCmd.ExecuteScalar()

märkte att det var denna del som hindrar och visa @@ROWCOUNT när man kör update!

JosefMedlem sedan mars 20023 561 inlägg
#47

pellesvenne skrev:

Dim loggain As Integer = objCmd.ExecuteScalar()

märkte att det var denna del som hindrar och visa @@ROWCOUNT när man kör update!

Ok. Mitt fel. Sorry! :r

pellesvenneMedlem sedan jan. 2002227 inlägg
#48

josef: hur ska det se ut ? da hehe

JosefMedlem sedan mars 20023 561 inlägg
#49

Du kan ju prova med

Dim objReader As IDataReader = objCmd.ExecuteReader()

och sedan kolla med en if-sats om inloggningen lyckades.

pellesvenneMedlem sedan jan. 2002227 inlägg
#50

System.Data.SqlClient.SqlDataReader får jag ut när man skriver ut

 
Dim num As IDataReader = objCmd.ExecuteReader()
Response.Write(num)
JosefMedlem sedan mars 20023 561 inlägg
#51

Nej, du får göra så här:

Dim objReader As IDataReader = objCmd.ExecuteReader()

Dim i As String = objReader.Read().ToString()

If i = "1" Then
     'Lyckad
Else
     'Inte lyckad
End If

Tror detta borde fungera.

pellesvenneMedlem sedan jan. 2002227 inlägg
#52

får ut bara false värde? när jag skriver ut response.write(i)

pellesvenneMedlem sedan jan. 2002227 inlägg
#53

så här ser min sp ut nu!

CREATE Procedure checkLogin
@anvandarnamn varchar(15),
@losenord varchar(15)

As
Declare @loggain integer

UPDATE medlemmar SET Online = 1 WHERE anvandarnamn=@anvandarnamn  AND losenord=@losenord

SET @loggain = @@ROWCOUNT

if @loggain = 1
begin
SET @loggain = 1
end
else
begin
SET @loggain = 0
end

return @loggain
GO
pellesvenneMedlem sedan jan. 2002227 inlägg
#54

ingen som vet hur man retunerar @loggain i asp.net??

PDahlenMedlem sedan apr. 2004778 inlägg
#55

Du har fått mängder av exempel och det enda jag kan säga nu är, gå tillbaka till de exempel jag gett och använd en SELECT.
Sen får du fundera lite och prova dig fram. Kolla in på nån SQL sajt.
Använd den här.

CREATE Procedure CheckLogin
	(
		@anvandarnamn	varchar(15),
		@losenord	varchar(15)
	)
As
	SELECT ID
	FROM medlemmar
        WHERE anvandarnamn=@anvandarnamn
        AND losenord=@losenord

if @@ROWCOUNT > 0
	begin
		UPDATE medlemmar
		SET Online = 1
               WHERE anvandarnamn=@anvandarnamn
               AND losenord=@losenord

	        SELECT ID AS UserID
	        FROM medlemmar
               WHERE anvandarnamn=@anvandarnamn
               AND losenord=@losenord
	end
	
return

Sen får du kolla upp vad du ska använda istället för ExecuteScalar för nu ska du hantera ett resultat.
Kolla här om du behöver lära dig mer om databaskopplingar. http://asp.net/Tutorials/quickstart.aspx

Antingen gör du så eller så gör man som jag alltid gör, använder OUTPUT variabler i SPn och lägger till OUTPUT parametrar i sitt SqlCommand. Men då får du läsa på lite.

GladhMedlem sedan maj 20012 812 inlägg
#56

ingen som vet hur man retunerar @loggain i asp.net??

Använder dig av OUTPUT Parameter. Enklast och bäst ur prestandasynpunkt, dessutom så slipper du blanda in DataReaders, eftersom du använder ditt SqlCommand objekt när du skall läsa din OUTPUT Parameter.

- magnus

pellesvenneMedlem sedan jan. 2002227 inlägg
#57

jag vill inte använda mig utav select ! bara update?

PDahlenMedlem sedan apr. 2004778 inlägg
#58

Vill och vill, du har ju redan provat det och det funkade inte.
Kan du ge en bra anledning till att du inte ska göra det?
Om du inte VILL använda SELECT så får du lära dig att använda OUTPUT variabler istället.
Det här får bli mitt sista inlägg i den här diskussionen. Du har flera fungerande lösningar bland inläggen och om du ändå vill göra något eget så får du prova bäst du vill.

Engine^Medlem sedan dec. 20003 887 inlägg
135 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)