webForumDet fria alternativet

datareader och två identiska rows.

.NET

5 svar · 259 visningar · startad av Nson

Medlem sedan juni 2001145 inlägg
Frågan#1

Har ett problem, har en databas med kolumnerna
userid, sexid
denna refererar till en annan databas med
kolumnerna sexid, sexname

som du säkert har räknat ut så är sexname = man/kvinna etc,
nu är det så att i bland så är det par som registrerat sig. Då stoppar man in två värden,
ex (1) (1) (Userid = 1 , Kön = 1)

När jag sen vill hämta denna datan så hämtar den bara datan för userid, sexid en gång, jag behöver flytta den till nästa rad i databasen.

Har en bit som säger om det är ett par eller en ensam som skall hämtas. Men som sagt var den visar data, men bara samma data en gång till...

Hilfe ;)

Medlem sedan juni 2001145 inlägg
#2

För att förtydliga här är koden för dr

        Dim _login As String = Request.QueryString("user")
        Dim _userDB As New idofun.UserDB
        Dim dr As System.Data.SqlClient.SqlDataReader = _userDB.GetSingleUser(_login)

        dr.Read()
        lbId.Text = CStr(dr("userid"))
        userlogin.Text = CStr(dr("userlogin"))
        password.Text = CStr(dr("password"))
        email.Text = CStr(dr("email"))
        lbOnline.Text = CStr(dr("lastlogin"))
        lbIP.Text = CStr(dr("lastloginip"))
        lbCountry.Text = CStr(dr("countryname"))
        lbArea.Text = CStr(dr("areaname"))
        lbSingel.Text = CStr(dr("iscuppel"))
        lbAbout.Text = CStr(dr("txt_usrprs"))
        If CStr(dr("iscuppel")) Then
            lbSex.Text = CStr(dr("sexname")) & CStr(dr("sexname"))
        Else
            lbSex.Text = CStr(dr("sexname"))
        End If
        dr.Close()
Medlem sedan maj 20012 812 inlägg
#3

Jag förstår inte vad du vill göra. Vill du hämta information om en använder från databasen och skriva ut det på sidan?

Om det är det du vill så skall du endast ställa 1 SQL fråga mot databasen och endast använda dig 1 datareader för att få ut all information.

Du skall kunna få ut all information du vill om din användare med 1 SQL fråga genom att använda Inner Joins.

Som om det är det du vill, så får du visa dina SQL frågor och förklara lite bättre, för jag förstår inte vad du vill.

- M

Medlem sedan juni 2001145 inlägg
#4
create procedure GetSingleUser
	(
	@userlogin nvarchar(50)
	)
	AS
	
	SELECT
	[users.directory].userid,
	[users.directory].userlogin,
	[users.directory].password,
	[users.directory].email,
	[users.directory].lastlogin,
	[users.directory].lastloginip,
	[users.directory].datecreated,
	[users.directory].blocked,
	[users.directory].valid,
	[users.country].countryid,
	[cfg.country].countryname,
	[users.area].areaid,
	[cfg.area].areaname,
	[users.sex].usersex,
	[cfg.sex].sexname,
	[users.profiles].iscuppel,
	[users.profiles].txt_usrprs

	
	FROM
	[users.directory]
	
	INNER JOIN
	[users.country] ON [users.directory].userid = [users.country].userid
	
	INNER JOIN
	[cfg.country] ON [cfg.country].countryid = [users.country].countryid

	INNER JOIN 
	[users.area] ON [users.directory].userid  = [users.area].userid

	INNER JOIN 
	[cfg.area] ON [users.area].areaid  = [cfg.area].areaid

	INNER JOIN 
	[users.sex] ON [users.directory].userid  = [users.sex].userid

	INNER JOIN 
	[cfg.sex] ON [users.sex].usersex = [cfg.sex].sexid

	INNER JOIN 
	[users.profiles] ON [users.directory].userid = [users.profiles].userid

	WHERE [users.directory].userlogin = @userlogin

GO

Här är min SP.

Alltså databasen [users.sex] innehåller raderna
sexid, userid ... sexid är ett siffra mellan 1 - 5 och userid är så klart en id från databasen [users.directory]

Databasen [cfg.sex] innehåller sexid och sexname (id och tex Man, Kvinna etc).

Vissa användare finns med två gånger i [users.sex] eftersom dom är par, där det finns två olika sex.

När jag kör min kod så får jag tillbaka två värden om det är ett par men när jag skall läsa om informationen till en label så blir det samma värde i båda. ex Man/Man ....

Hänger du med ;)

Mvh Niklas.

Medlem sedan maj 20012 812 inlägg
#5

okej.

Det beror på att om du har någon som är med 2 gånger så får du tillbaka 2 rader som ser likadanna ut, förutom just users.sex som skiljer sig åt.

Detta är ju inget bra resultat eftersom du då måste flytta fram din reader ett steg och läsa nästa record för att få ut all information. Jag hade nog tänkt över om jag velat visa all den information, eller kanske gjort en separat fråga för att få ut users.sex.

I vilket fall som helst så flyttar du recordset ett steg genom att göra en ny dr.Read() precis innan du skall läsa ut ditt andra users.sex

- M

Medlem sedan juni 2001145 inlägg
#6

Okej skriver med andra ord lättast en mindre funktion som letar upp kön och skriver ut det.

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