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

Uso de getWritableDatabase en Android

Cargado por

palermo jimenez
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)
31 vistas4 páginas

Uso de getWritableDatabase en Android

Cargado por

palermo jimenez
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

El método getWritableDatabase() es un método de la clase SQLiteOpenHelper en

Android que se utiliza para obtener una instancia de la base de datos SQLite en modo
escritura. Esto significa que puedes realizar operaciones como insertar, actualizar y
eliminar registros dentro de la base de datos.

¿Cómo funciona getWritableDatabase()?

1. Acceder a la base de datos: Cuando se llama a getWritableDatabase(),


Android revisa si la base de datos ya existe y si se ha abierto correctamente. Si la
base de datos no existe, SQLiteOpenHelper la crea automáticamente.
2. Modo escritura: La base de datos obtenida mediante este método está abierta en
modo escritura, lo que significa que puedes realizar cambios (inserciones,
actualizaciones, eliminaciones) en la base de datos.
3. Bloqueo: Si la base de datos está en uso por otro proceso (por ejemplo, otra
aplicación), getWritableDatabase() bloqueará la base de datos hasta que esté
disponible para su escritura. Si no se puede acceder a la base de datos en modo
escritura (por ejemplo, si el almacenamiento es solo de lectura), se lanzará una
excepción SQLiteDatabaseLockedException.
4. Cierre automático: Cuando terminas de usar la base de datos, es importante
cerrarla mediante close() para liberar recursos. Esto no se hace
automáticamente, por lo que debes llamar explícitamente a close() cuando
hayas terminado las operaciones.

¿Cuándo usar getWritableDatabase()?

Usar getWritableDatabase() cuando necesitas realizar operaciones que modifiquen


el contenido de la base de datos, como:

• Insertar nuevos registros (insert()).


• Actualizar registros existentes (update()).
• Eliminar registros (delete()).

Si solo necesitas realizar consultas de lectura y no planeas modificar los datos, puedes
usar getReadableDatabase(), que abre la base de datos en modo solo lectura.

Ejemplo de uso de getWritableDatabase():

Veamos cómo se utiliza este método en un ejemplo real:

Clase DatabaseHelper (extendiendo SQLiteOpenHelper):

java
Copiar código
import [Link];
import [Link];
import [Link];

public class DatabaseHelper extends SQLiteOpenHelper {

// Definición de la base de datos y versión


private static final String DATABASE_NAME = "[Link]";
private static final int DATABASE_VERSION = 1;

// Crear tabla
private static final String TABLE_CREATE =
"CREATE TABLE users (" +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"name TEXT, " +
"email TEXT);";

public DatabaseHelper(Context context) {


super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db) {
// Crear la tabla cuando la base de datos se crea
[Link](TABLE_CREATE);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int
newVersion) {
// Eliminar la tabla si existe y volver a crearla
[Link]("DROP TABLE IF EXISTS users");
onCreate(db);
}
}

Método para insertar datos usando getWritableDatabase():

java
Copiar código
import [Link];
import [Link];
import [Link];
import [Link];

public class DatabaseManager {

private SQLiteDatabase database;


private DatabaseHelper dbHelper;

public DatabaseManager(Context context) {


dbHelper = new DatabaseHelper(context);
}

public void open() throws SQLException {


// Abrir la base de datos en modo escritura
database = [Link]();
}

public void close() {


[Link](); // Cerrar la base de datos
}

// Insertar un nuevo usuario


public void insertUser(String name, String email) {
ContentValues values = new ContentValues();
[Link]("name", name);
[Link]("email", email);
// Insertar los valores en la base de datos
[Link]("users", null, values);
}
}

Uso de DatabaseManager en MainActivity:

java
Copiar código
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];

public class MainActivity extends AppCompatActivity {

private EditText nameEditText, emailEditText;


private Button saveButton;
private DatabaseManager databaseManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);
setContentView([Link].activity_main);

nameEditText = findViewById([Link]);
emailEditText = findViewById([Link]);
saveButton = findViewById([Link]);

databaseManager = new DatabaseManager(this);

[Link](new [Link]() {
@Override
public void onClick(View v) {
String name = [Link]().toString();
String email = [Link]().toString();

if (![Link]() && ![Link]()) {


try {
// Abrir la base de datos en modo escritura
[Link]();
// Insertar el nuevo usuario
[Link](name, email);
// Cerrar la base de datos
[Link]();

[Link]([Link], "User
saved!", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
[Link]([Link], "Error: " +
[Link](), Toast.LENGTH_SHORT).show();
}
} else {
[Link]([Link], "Please fill in
all fields", Toast.LENGTH_SHORT).show();
}
}
});
}
}

Explicación del flujo:

1. [Link](): Se llama a getWritableDatabase() para obtener


acceso a la base de datos en modo escritura.
2. [Link](): Los datos de un usuario (nombre y correo
electrónico) se insertan en la tabla users.
3. [Link](): Se cierra la base de datos después de realizar la
operación.

¿Qué pasa si no puedes obtener una base de datos en modo escritura?

Si no se puede acceder a la base de datos en modo escritura (por ejemplo, si el


dispositivo tiene la memoria de solo lectura), el método getWritableDatabase()
lanzará una excepción SQLiteDatabaseLockedException. Esto puede ocurrir si, por
ejemplo, el dispositivo está configurado en modo de solo lectura o si la base de datos
está bloqueada por otra operación en curso.

Resumen:

• getWritableDatabase() abre la base de datos en modo escritura, lo que


permite realizar cambios (insertar, actualizar, eliminar).
• Si la base de datos no existe, Android la crea automáticamente.
• Es importante cerrar la base de datos después de realizar operaciones para
liberar recursos.
• Si no se puede acceder a la base de datos en modo escritura, se lanzará una
excepción.

También podría gustarte