我在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án 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'
答案 0 :(得分:0)
由于缺少大量信息,我猜测。
我认为您加入的其中一个表只有两个记录可以加入前两个用户。其他用户在其他表中没有匹配的记录,因此省略了它们。