Ich habe Login-Seite in meinem Asp.NET-Projekt, was ich will im Grunde ist die Zeile einer Spalte einer Abfrage, die die i_idficha, contrasena und s_nombre zurückgibt. Die Spalte s_nombre wird in einer Variablen SESSION gespeichert. Hier ist, was ich habe:Wie erhalten Sie Werte in einer Spalte einer DataTable?
Protected Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click
Threading.Thread.Sleep(2000)
Dim cmd As New SqlCommand("SELECT dbo.USUARIO.i_idficha, dbo.CONTRASENA_USUARIO.s_contrasena, dbo.USUARIO.s_nombre FROM dbo.USUARIO INNER JOIN dbo.CONTRASENA_USUARIO ON dbo.USUARIO.i_idficha = dbo.CONTRASENA_USUARIO.i_ficha WHERE i_idficha = @ficha AND s_contrasena = @pass", cn)
cmd.CommandType = CommandType.Text
cmd.Parameters.AddWithValue("@ficha", SqlDbType.Int).Value = txtUser.Text
cmd.Parameters.AddWithValue("@pass", SqlDbType.VarChar).Value = txtPass.Text
cn.Open()
Dim adp As New SqlDataAdapter(cmd)
Dim table As New DataTable()
adp.Fill(table)
Dim nombre = table.Rows("s_nombre").ToString()
If table.Rows.Count <> 0 Then
If CheckBox1.Checked Then
Response.Cookies("FICHA").Value = txtUser.Text
Response.Cookies("CONTRASENA").Value = txtPass.Text
Response.Cookies("FICHA").Expires = DateTime.Now.AddDays(10)
Response.Cookies("CONTRASENA").Expires = DateTime.Now.AddDays(10)
Else
Response.Cookies("FICHA").Expires = DateTime.Now.AddDays(-1)
Response.Cookies("CONTRASENA").Expires = DateTime.Now.AddDays(-1)
End If
Session("NOMBRE") = nombre
Response.Redirect("~/Default.aspx")
Else
Panel1.Visible = True
End If
End Sub
Was ich hier tat, war eine variable nombre genannt zu erklären, die
table.Rows("s_nombre").ToString()
gleich ist und es in einer Variablen SESSION speichern ("NOMBRE") aber funktioniert nicht.
Dies ist der Fehler:
The input string does not have the correct format
Dies ist mein Code-Behind für die Default.aspx:
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Session("FICHA") <> Nothing Then
Label1.Text = "Bienvendio <i aria-hidden='true' class='glyphicon glyphicon-user'></i> " & Session("NOMBRE").ToString()
Else
Response.Redirect("~/Login.aspx")
End If
End Sub
Protected Sub linkBtnLogOut_Click(sender As Object, e As EventArgs) Handles linkBtnLogOut.Click
Session("FICHA") = Nothing
Response.Redirect("~/Login.aspx")
End Sub
Wie die Spalte speichern s_nombre meiner Abfrage genannt?
Hallo ein anderer Fehler ourrediert: > Es gibt keine Zeile an Position 0 –
Dies bedeutet, dass die DataTable leer ist. Verschieben Sie diese Codezeile innerhalb der Anweisung "If table.Rows.Count <> 0 Then" if, um diesen Fehler zu vermeiden. Überprüfen Sie dann Ihre SELECT-Anweisung, um sicherzustellen, dass Daten zurückgegeben werden. – Aki
Hallo, ich bewege diese Zeile innerhalb meiner IF-Anweisung, aber das Programm tut nichts, nicht zu Default.aspx umleiten, ich werde meine Frage bearbeiten, um meinen Code-Behind für die Default.aspx hinzuzufügen. Die SELECT-Abfrage gibt Daten zurück. –