funkar inte forfarande 0 värde!
db koppling
58 svar · 1 365 visningar · startad av pellesvenne · sida 3 av 3
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
nu tror jag din kod funkar!
den retunerar 0 och 2
ere nån cash i stored procedure ? för att jag ändrar frågan och sparar direkt!
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.
Dim loggain As Integer = objCmd.ExecuteScalar()
märkte att det var denna del som hindrar och visa @@ROWCOUNT när man kör update!
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
josef: hur ska det se ut ? da hehe
Du kan ju prova med
Dim objReader As IDataReader = objCmd.ExecuteReader()
och sedan kolla med en if-sats om inloggningen lyckades.
System.Data.SqlClient.SqlDataReader får jag ut när man skriver ut
Dim num As IDataReader = objCmd.ExecuteReader()
Response.Write(num)
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.
får ut bara false värde? när jag skriver ut response.write(i)
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
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.
jag vill inte använda mig utav select ! bara update?
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.