Buenas estoy haciendo un login en Visual Studio 2010 con una base de datos portable echa en SQLite que tiene la siguiente tabla
CREATE TABLE `table_users` (
`id_user` INTEGER,
`nom_user` TEXT DEFAULT 25,
`pass_user` TEXT,
`name_comp` TEXT DEFAULT 50,
`tipo_user` TEXT DEFAULT 25,
PRIMARY KEY(id_user)
);
y mi codigo en visual studio es el siguiente
Imports System.Data.SQLite
Public Class Form2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
Dim NmUser, TpUser, ArUsu As String
Dim reader As SQLiteDataReader
Dim conexSQLite As New SQLiteConnection("data source=C:\Users\Admin\Downloads\SQLiteDatabaseBrowserPortable\Data\libreria_db")
Dim sql As String = "SELECT name_comp, tipo_user FROM table_users where nom_user = @username and pass_user = @password "
Dim cmd As New SQLiteCommand(sql, conexSQLite)
conexSQLite.Open()
cmd.Parameters.Add("@username", SqlDbType.VarChar, 20).Value = TextBox1.Text
cmd.Parameters.Add("@password", SqlDbType.VarChar, 20).Value = TextBox2.Text
reader = cmd.ExecuteReader()
If reader.Read Then
NmUser = reader.GetString(0).ToUpper
TpUser = reader.GetString(1).ToUpper
ArUsu = reader.GetString(2).ToUpper
If NmUser = "ADMINISTRADOR" Then
Form1.Show()
End If
MessageBox.Show("Bienvenido " & NmUser & " al sistema.")
Else
MsgBox("Usuario o password incorrecto, trate otra vez..")
End If
reader.Close()
conexSQLite.Close()
Catch ex As Exception
MsgBox("ERROR." & ex.Message)
End Try
End Sub
End Class
Pero al iniciarlo me sale el siguiente error "índice fuera de los límites de la matriz"
Muchas gracias a los que se vayan a tomar la molestia de leer mi post, yo solito me respondo y ya de paso se convierte en aporte por si alguien le sirve
El problema radica en esta linea:
ArUsu = reader.GetString(2).ToUpper
Si ven tengo declarada 3 variables, esto por que al encontrar datos en la tabla los asigne a esas variables, para saber el nombre completo y el tipo de usuario, para asi mismo cargar un formulario especial, para tipo "Admin" o para tipo "Estandar"
Simplemente no declare esa variable en el Query que esta aqui:
Dim sql As String = "SELECT name_comp, tipo_user FROM table_users where nom_user = @username and pass_user = @password "