"SQLite error no such table: CMB_USUARIO" acabo de probar las fuentes que me mandaste y eh llegado a la conclusión que sencillamente la base de datos no se copia al emulador o en tu caso al dispositivo. Para ello use "File.Exists("CLAS_MOBILE.db")" y siempre me decia que no existe la base de datos
If (File.
Exists("CLAS_MOBILE.db")) Then consulta = String.Format("SELECT USU_USUARIO,USU_ZONA FROM CMB_USUARIO WHERE USU_USUARIO='{0}'", USUARIO.Text)
Dim Ada As New SQLiteDataAdapter()
Dim Sqlstr As New SQLiteCommand(consulta, cnn)
Dim dr As SQLiteDataReader = Sqlstr.ExecuteReader(CommandBehavior.CloseConnection)
While dr.Read
Dim value As Object = dr.Item("USU_ZONA")
If value IsNot DBNull.Value Then TextBox1.Text = CStr(value)
End While
dr.Close()
Else
MessageBox.Show("No existe base de datos", "Error")
End If
Solución:1° Método que no entendí porque me dio flojera :visita
http://social.msdn.microsoft.com/Forums/es/netfxcompactes/thread/265e4adb-ba0c-440a-808a-f63590ada195 y has lo que hay dicen para poder copiar archivos(tu base de datos entre otras cosas) al emulador o copia directamente al dispositivo en el que estás trabajando y si es posible explícame.
2° Método que yo haría si fuera el caso:Pues consiste en crear la base de datos con código, para ello has de tomar en cuenta que si al "SQLiteConnection" le enviamos como parámetro "Data Source=CLAS_MOBILE.db" y ejecutamos el método Open() pues no genera ningún error así "CLAS_MOBILE.db" no exista, y tranquilamente ejecutas un CREATE TABLE:
Private Sub CrearTablas(ByVal Cnn As SQLiteConnection)
Using _Cmd As SQLiteCommand = Cnn.CreateCommand
_Cmd.CommandText = "CREATE TABLE CMB_USUARIO (USU_USUARIO VARCHAR (8) NOT NULL,USU_PASS VARCHAR (8) NOT NULL,USU_ZONA VARCHAR (25) NOT NULL)"
_Cmd.ExecuteNonQuery()
_Cmd.CommandText = "INSERT INTO CMB_USUARIO VALUES('usu01','123456','peru')"
_Cmd.ExecuteNonQuery()
End Using
End Sub
despues podrias colocar en el evento load del form lo siguiente:
cnn = New SQLiteConnection("Data Source=CLAS_MOBILE.db;Version=3;")
cnn.Open()
Try
If (Not File.
Exists("CLAS_MOBILE.db")) Then CrearTablas(cnn)
End If
Catch ex As Exception
MessageBox.Show(ex.Message, "Error")
End Try
aquí todo el code:
Imports System
Imports System.Data
Imports System.IO
Imports System.Data.SQLite
Public Class Form1
Public ruta As String
Dim cnn As New SQLiteConnection
Public consulta As String
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
cnn = New SQLiteConnection("Data Source=CLAS_MOBILE.db;Version=3;")
cnn.Open()
Try
If (Not File.
Exists("CLAS_MOBILE.db")) Then CrearTablas(cnn)
End If
Catch ex As Exception
MessageBox.Show(ex.Message, "Error")
End Try
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If USUARIO.Text = "" Or PASSWORD.Text = "" Then
MessageBox.Show("Debe Ingresar Usuario y Contraseña")
Else
Try
If (File.
Exists("CLAS_MOBILE.db")) Then
consulta = String.Format("SELECT USU_USUARIO,USU_ZONA FROM CMB_USUARIO WHERE USU_USUARIO='{0}'", USUARIO.Text)
Dim Ada As New SQLiteDataAdapter()
Dim Sqlstr As New SQLiteCommand(consulta, cnn)
Dim dr As SQLiteDataReader = Sqlstr.ExecuteReader(CommandBehavior.CloseConnection)
While dr.Read
Dim value As Object = dr.Item("USU_ZONA")
If value IsNot DBNull.Value Then TextBox1.Text = CStr(value)
End While
dr.Close()
Else
MessageBox.Show("No existe base de datos", "Error")
End If
Catch ex As Exception
MessageBox.Show(ex.Message, "Error")
End Try
End If
End Sub
Private Sub CrearTablas(ByVal Cnn As SQLiteConnection)
Using _Cmd As SQLiteCommand = Cnn.CreateCommand
_Cmd.CommandText = "CREATE TABLE CMB_USUARIO (USU_USUARIO VARCHAR (8) NOT NULL,USU_PASS VARCHAR (8) NOT NULL,USU_ZONA VARCHAR (25) NOT NULL)"
_Cmd.ExecuteNonQuery()
_Cmd.CommandText = "INSERT INTO CMB_USUARIO VALUES('usu01','123456','peru')"
_Cmd.ExecuteNonQuery()
End Using
End Sub
End Class
Nota: Yo usaria un Select Count para comprobar usuario y un ExecuteScalar para recoger el valor devuelto si es cero el usuario no existe y si es 1 pues si.
Saludos y suerte!!!!!!!!!