0% encontró este documento útil (0 votos)
0 vistas43 páginas

SQLite en Xamarin Form

El documento detalla el proceso de implementación de una base de datos SQLite en una aplicación Android utilizando C#. Incluye instrucciones sobre la instalación de NuGet, la creación de clases para el modelo de datos y el repositorio, así como la configuración de la interfaz de usuario y la conexión de botones para agregar y obtener usuarios. También se mencionan pasos para manejar errores y limpiar la solución al finalizar.

Cargado por

cheramisoft
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
0 vistas43 páginas

SQLite en Xamarin Form

El documento detalla el proceso de implementación de una base de datos SQLite en una aplicación Android utilizando C#. Incluye instrucciones sobre la instalación de NuGet, la creación de clases para el modelo de datos y el repositorio, así como la configuración de la interfaz de usuario y la conexión de botones para agregar y obtener usuarios. También se mencionan pasos para manejar errores y limpiar la solución al finalizar.

Cargado por

cheramisoft
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 43

LENGUAJE C#

(Android)

ING. FERNANDO SALAS C. MRI


[email protected]
SQL
Lite
Inicio

 Usamos de base el archive base visto en clases anteriores.


Instalar NuGet
Cargar Nuget para SqlLite
Tenemos actualizaciones
pendientes
Actualizar

 Ir a Herramientas/administrador paquetes nuget/Consola

 Aparece la consola, probamos el comando get-help NuGet


Actualizando

 Obtenemos lista de comandos.


 Nos interesa
 Update-Package
 Ejecutamos y esperamos resultados.
Finalmente

 Al final debe cerrar correctamente.


 Si la plataforma nos indica que debemos reiniciar .Net lo
autorizamos
fallos

 En caso de fallos debemos, una vez que se reinicie .net volver a


ingresar a la consola NuGet.
 En caso de que se reporte debe volver a reiniciar .net a veces por
dos o tres veces.
Limpiar solución
 Al terminar la ejecución conviene limpiar solución.
CREAR LA TABLA
Creamos la carpeta Model

 En ella se guardarán las clases que


usaremos.
Agregamos la clase User
Clase completa
[Table("user")]
class User
{

[PrimaryKey, AutoIncrement]
public int Id { get; set; }

[MaxLength(100), Unique]
public String Username { get; set; }

[MaxLength(100), Unique]
public String Email { get; set; }

[MaxLength(70)]
public String Password { get; set; }
}
Creamos una nueva clase para el
Repositorio
 Nombre de la clase:
UserRepository.cs
Agregamos using al inicio

 using SQLite;
Completamos la clase
private SQLiteConnection con;
public string EstadoMensaje;
private static UserRepository instancia;
public static UserRepository Instancia public int AddNewUser(string username, string email, string password) {
{ int result = 0;
get try
{ {
if (instancia == null) result = con.Insert(new User {
throw new Exception("Debe llamar al inicializador, acción detenida"); Username =username, Email = email, Password = password
return instancia; });
} EstadoMensaje = string.Format("Cantidad filas : {0}", result);
} }
catch (Exception e)
public static void Inicializador(String filename) { EstadoMensaje = e.Message; }
{ return result;
if (filename==null) { }
throw new ArgumentException();
} public IEnumerable<User> GetAllUsers()
{
if (instancia != null ) { try {
instancia.con.Close(); return con.Table<User>();
} } catch (Exception e) {
instancia = new UserRepository(filename); EstadoMensaje = e.Message;
} }
return Enumerable.Empty<User>();
private UserRepository(String dbPath) { }
con = new SQLiteConnection(dbPath);
con.CreateTable<User>();
}
Crear Interfaz de usuario
Cambiamos
StackLayout
dentro del
MainPage.xaml
<StackLayout Orientation="Vertical" Padding="32" Spacing="10">
<Label Text="Principal-2"
HorizontalOptions="Center" FontSize="Large" />
<Entry x:Name="txtUsername" Placeholder="Usuario"/>

<Entry x:Name="txtEmail" Placeholder="Email"/>

<Entry x:Name="txtPassword" Placeholder="Password" IsPassword="True"/>

<Button Text="Agregar nuevo usuario" x:Name="BtnInsert"/>


<Button Text="Obtener usuarios" x:Name="BtnAllUser"/>
<Label x:Name="StatusMessage" FontSize="Medium" />

<ListView x:Name="userList">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid>
<Label Text="{Binding Username}" />
<Label Grid.Column="1“ Text="{Binding Email}" />
<Label Grid.Column="2“Text="{Binding Password}" />
</Grid>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
Agregamos la clase FileAccess

 Se agrega en el Proyecto
 Android
Contenido

 Crear GetLocalFilePath
Código

class FileAccess
{

public static string GetLocalFilePath(string filename) {


string path = System.Environment.GetFolderPath(
System.Environment.SpecialFolder.Personal);
return System.IO.Path.Combine(path, filename);
}

}
Importante

 Debe crear una clase FileAcess con


el mismo código, pero en el
Proyecto IOS
Conexión de botones

 Vamos a App.Xaml.cs
 Y agregamos la referencia
using Base.Model;
Agregamos el status en MainPage.xaml
En MainPage.xaml.cs
 Agregamos la referencia a la carpeta de clases:
using Base.Model;
Contenido
Cambiamos el MainPage

public MainPage()
{
InitializeComponent();
BtnAllUser.Clicked += BtnAllUser_Clicked;
BtnInsert.Clicked += BtnInsert_Clicked;
}
Métodos adicionales
private void BtnInsert_Clicked(object sender, EventArgs e)
{
StatusMessage.Text = string.Empty;
UserRepository.Instancia.AddNewUser(txtUsername.Text,txtEmail.Text, txtPassword.Text);
StatusMessage.Text = UserRepository.Instancia.EstadoMensaje;
}

private void BtnAllUser_Clicked(object sender, EventArgs e)


{
var allUsers = UserRepository.Instancia.GetAllUsers();
userList.ItemsSource = allUsers;
StatusMessage.Text = UserRepository.Instancia.EstadoMensaje;
}
Verificamos App.xaml
Modificamos
App.xaml.cs
public App(string filename )
{
InitializeComponent();
UserRepository.Inicializador(filename);
MainPage = new MainPage();
}
Debemos modificar el AppDelegate.cs
Cambiamos las líneas

String dbPath = FileAccess.GetLocalFilePath("users.db3");


LoadApplication(new App(dbPath));
Cambiamos MainActivity.cs
String dbPath = FileAccess.GetLocalFilePath("users.db3");
LoadApplication(new App(dbPath));
Resultado

También podría gustarte