我的网站仅显示前2个ID号的用户个人资料。如何正确显示所有用户配置文件?

时间:2013-12-24 16:19:49

标签: asp.net sql vb.net session user-profile

我在VB.NET中创建一个网站,允许用户创建和查看个人资料。对于前两个用户,配置文件显示完美,但对于ID号等于或高于3的任何用户,它都不起作用。可能是什么原因以及如何解决?

这是在webform中加载配置文件的代码:

    Public Sub cargarPerfil(cnn As SqlConnection, cmd As SqlCommand)

    Dim perfil, nombre, nick, pais, ciudad, codigo, telefono, nacimiento, nivel, tipo1, tipo2 As String
    Dim social, artistico, comercial, rango, titulo1, titulo2, titulo3, foto, credito As String
    Dim da As New SqlDataAdapter
    Dim dt As DataTable

    perfil = "SELECT USUARIONOMBREREAL, USUARIONICK, PAISNOMBRE AS PAIS, CIUDADNOMBRE AS CIUDAD, USUARIOCODIGO, USUARIOTELEFONO, USUARIONACIMIENTO, " & _
             "TIPONOMBRE AS TIPO1, NIVELNOMBRE AS NIVEL, USUARIOSOCIAL, USUARIOARTISTICO, USUARIOCOMERCIAL, USUARIOFOTO, USUARIOCREDITO, " & _
             "RANGONOMBRE AS RANGO, TITULONOMBRE AS TITULO1 FROM USUARIO " & _
             "INNER JOIN PAIS ON USUARIO.USUARIOPAIS = PAIS.PAISID " & _
             "INNER JOIN CIUDAD ON USUARIO.USUARIOCIUDAD = CIUDADID " & _
             "INNER JOIN TIPO ON USUARIO.USUARIOTIPO1 = TIPO.TIPOID " & _
             "INNER JOIN NIVEL ON USUARIO.USUARIONIVEL = NIVEL.NIVELID " & _
             "INNER JOIN RANGO ON USUARIO.USUARIORANGO = RANGO.RANGOID " & _
             "INNER JOIN TITULO ON USUARIO.USUARIOTITULO1 = TITULO.TITULOID " & _
             "WHERE USUARIOID = '" & Session(Principal.User.UserID) & "' AND USUARIONICK = '" & Session(Principal.User.UserName) & "'"

    With cmd
        .CommandType = CommandType.Text
        .CommandText = perfil
        .Connection = cnn
    End With

    da.SelectCommand = cmd
    dt = New DataTable
    da.Fill(dt)

    nombre = dt.Rows.Item(0).Item("USUARIONOMBREREAL")
    nick = dt.Rows.Item(0).Item("USUARIONICK")
    pais = dt.Rows.Item(0).Item("PAIS")
    ciudad = dt.Rows.Item(0).Item("CIUDAD")
    codigo = dt.Rows.Item(0).Item("USUARIOCODIGO")
    telefono = dt.Rows.Item(0).Item("USUARIOTELEFONO")
    nacimiento = dt.Rows.Item(0).Item("USUARIONACIMIENTO")
    tipo1 = dt.Rows.Item(0).Item("TIPO1")
    nivel = dt.Rows.Item(0).Item("NIVEL")
    social = dt.Rows.Item(0).Item("USUARIOSOCIAL")
    artistico = dt.Rows.Item(0).Item("USUARIOARTISTICO")
    comercial = dt.Rows.Item(0).Item("USUARIOCOMERCIAL")
    rango = dt.Rows.Item(0).Item("RANGO")
    titulo1 = dt.Rows.Item(0).Item("TITULO1")
    foto = "~/0/" + nombre + ".jpg"
    credito = dt.Rows.Item(0).Item("USUARIOCREDITO")

    dt = Nothing

    perfil = "SELECT TIPONOMBRE AS TIPO2, TITULONOMBRE AS TITULO2 FROM USUARIO " & _
             "INNER JOIN TIPO ON USUARIO.USUARIOTIPO2 = TIPO.TIPOID " & _
             "INNER JOIN TITULO ON USUARIO.USUARIOTITULO2 = TITULO.TITULOID " & _
             "WHERE USUARIOID = '" & Session(Principal.User.UserID) & "' AND USUARIONICK = '" & Session(Principal.User.UserName) & "'"

    With cmd
        .CommandType = CommandType.Text
        .CommandText = perfil
        .Connection = cnn
    End With

    da.SelectCommand = cmd
    dt = New DataTable
    da.Fill(dt)

    tipo2 = dt.Rows.Item(0).Item("TIPO2")
    titulo2 = dt.Rows.Item(0).Item("TITULO2")

    dt = Nothing

    perfil = "SELECT TITULONOMBRE AS TITULO3 FROM USUARIO INNER JOIN TITULO ON USUARIO.USUARIOTITULO3 = TITULO.TITULOID " & _
             "WHERE USUARIOID = '" & Session(Principal.User.UserID) & "' AND USUARIONICK = '" & Session(Principal.User.UserName) & "'"

    With cmd
        .CommandType = CommandType.Text
        .CommandText = perfil
        .Connection = cnn
    End With

    da.SelectCommand = cmd
    dt = New DataTable
    da.Fill(dt)

    titulo3 = dt.Rows.Item(0).Item("TITULO3")

    dt = Nothing

    lblNombre.Text = nombre
    lblNick.Text = nick
    lblPais.Text = pais
    lblCiudad.Text = ciudad
    lblCodigo.Text = codigo
    lblTelefono.Text = telefono
    lblNacimiento.Text = nacimiento
    lblTipo1.Text = tipo1
    lblTipo2.Text = tipo2
    lblNivel.Text = nivel
    lblSocial.Text = social
    lblArtistico.Text = artistico
    lblComercial.Text = comercial
    lblRango.Text = rango
    lblTitulo1.Text = titulo1
    lblTitulo2.Text = titulo2
    lblTitulo3.Text = titulo3
    imgPerfil.ImageUrl = foto
    lblCredito.Text = credito

End Sub

这是在不同的网络表单中创建配置文件的代码:

    Private Sub registro(cnn As SqlConnection, cmd As SqlCommand)

    Dim nuevo, nombre, nick, pass, mail, pais, ciudad, codigo, telefono, nacimiento, nivel, tipo1, tipo2 As String
    Dim social, artistico, comercial, rango, titulo1, titulo2, titulo3, foto, contrato As String
    Dim savePathF As String = "F:\ComparteME\ComparteME\0\"
    Dim savePathC As String = "F:\ComparteME\ComparteME\Reconocimientos\"
    Dim fileNameF As String = txtNombreReal.Text + ".jpg"
    Dim fileNameC As String = "Reconocimiento - " + txtNombreReal.Text + ".jpg"
    Dim pathToCheckF As String = savePathF + fileNameF
    Dim pathToCheckC As String = savePathC + fileNameC
    Dim tempfileNameF As String = ""
    Dim tempfileNameC As String = ""

    nuevo = ""

    nombre = txtNombreReal.Text
    nick = txtNick.Text
    pass = txtPassword.Text
    mail = txtMail.Text
    pais = ddlPais.SelectedValue
    ciudad = ddlCiudad.SelectedValue
    codigo = txtCodigo.Text
    telefono = txtTelefono.Text
    nacimiento = txtNacimiento.Text
    nivel = ddlNivel.SelectedValue
    tipo1 = ddlTipo1.SelectedValue
    tipo2 = ddlTipo2.SelectedValue
    foto = ""
    contrato = ""
    social = 0
    artistico = 0
    comercial = 0
    rango = 1
    titulo1 = 0
    titulo2 = 0
    titulo3 = 0

    If (uplFoto.HasFile) Then
        If (System.IO.File.Exists(pathToCheckF)) Then
            Dim counter As Integer = 0

            While (System.IO.File.Exists(pathToCheckF))
                tempfileNameF = counter.ToString() + fileNameF
                pathToCheckF = savePathF + tempfileNameF
                counter = counter + 1
            End While

            If counter > 0 Then
                fileNameF = tempfileNameF
            End If

        End If

        savePathF += fileNameF
        uplFoto.SaveAs(savePathF)

        foto = savePathF
    End If

    If (uplReconocimiento.HasFile) Then
        If (System.IO.File.Exists(pathToCheckC)) Then
            Dim counter As Integer = 0

            While (System.IO.File.Exists(pathToCheckC))
                tempfileNameC = counter.ToString() + fileNameC
                pathToCheckC = savePathC + tempfileNameC
                counter = counter + 1
            End While

            If counter > 0 Then
                fileNameC = tempfileNameC
            End If

        End If

        savePathC += fileNameC
        uplReconocimiento.SaveAs(savePathC)

        contrato = savePathC
    End If

    nuevo = "INSERT INTO USUARIO (USUARIOID, USUARIONOMBREREAL, USUARIONICK, USUARIOPASSWORD, USUARIOENCRIPTADO, USUARIOCORREO, USUARIOPAIS, USUARIOCIUDAD, USUARIOCODIGO, USUARIOTELEFONO, " & _
            "USUARIONACIMIENTO, USUARIOTIPO1, USUARIOTIPO2, USUARIONIVEL, USUARIOSOCIAL, USUARIOARTISTICO, USUARIOCOMERCIAL, USUARIORANGO, USUARIOTITULO1, USUARIOTITULO2, " & _
            "USUARIOTITULO3, USUARIOFOTO, USUARIOCONTRATO) " & _
            "SELECT (ISNULL(MAX(USUARIOID), 0)+1), '" & nombre & "', '" & nick & "', '" & pass & "',  PWDENCRYPT('" & pass & "'), '" & mail & "', " & pais & ", " & ciudad & ", " & codigo & ", " & _
            "" & telefono & ", '" & nacimiento & "', " & tipo1 & ", " & tipo2 & ", " & nivel & ", " & social & ", " & artistico & ", " & comercial & ", " & rango & ", " & _
            "" & titulo1 & ", " & titulo2 & ", " & titulo3 & ", '" & foto & "', '" & contrato & "' FROM USUARIO "

    cnn.Open()
    cmd.CommandText = nuevo
    cmd.Connection = cnn
    cmd.ExecuteNonQuery()
    cnn.Close()

    lblSuccess.Text = "¡Bienvenido a ComparteME! En un momento se comprobar&aacuten tus datos y tu cuenta será activada. Intenta iniciar sesión."

    tblRegistro.Visible = False
    tblSuccess.Visible = True

End Sub

即使我直接在SQLServer中进行查询,它也仅在ID< 3,没有更高。 SQL是这样的:

    SELECT 
USUARIONOMBREREAL, 
USUARIONICK, 
PAISNOMBRE AS PAIS, 
CIUDADNOMBRE AS CIUDAD, 
USUARIOCODIGO, 
USUARIOTELEFONO, 
USUARIONACIMIENTO, 
TIPONOMBRE AS TIPO1, 
NIVELNOMBRE AS NIVEL, 
USUARIOSOCIAL, 
USUARIOARTISTICO, 
USUARIOCOMERCIAL, 
USUARIOFOTO, 
USUARIOCREDITO, 
RANGONOMBRE AS RANGO, 
TITULONOMBRE AS TITULO1 
FROM 
    USUARIO 
    INNER JOIN PAIS ON USUARIO.USUARIOPAIS = PAIS.PAISID 
    INNER JOIN CIUDAD ON USUARIO.USUARIOCIUDAD = CIUDADID 
    INNER JOIN TIPO ON USUARIO.USUARIOTIPO1 = TIPO.TIPOID 
    INNER JOIN NIVEL ON USUARIO.USUARIONIVEL = NIVEL.NIVELID 
    INNER JOIN RANGO ON USUARIO.USUARIORANGO = RANGO.RANGOID 
    INNER JOIN TITULO ON USUARIO.USUARIOTITULO1 = TITULO.TITULOID 
WHERE 
    USUARIOID = '1' AND USUARIONICK = 'SpuntikPPV'

1 个答案:

答案 0 :(得分:0)

由于缺少大量信息,我猜测。

我认为您加入的其中一个表只有两个记录可以加入前两个用户。其他用户在其他表中没有匹配的记录,因此省略了它们。