Agregar / Consultar / Analizar SQLite usando Anko
tl; dr: Tengo problemas para que mi código funcione, ahora puedo crear la database usando Anko e insert las columnas, pero cuando bash insert los datos y cuando abro la database en sqliteman, mis columnas están vacías. también no sé cómo recuperar los datos en cadenas / Int para enviar a una View
Esto aparentemente funciona bien , puedo ver mi database creada con todas las columnas con el nombre correcto
- ¿Cómo puedo unirme a tres entidades en GreenDao?
- Base de datos de android de Kotlin: no se puede convertir java.lang.String en android.database.Cursor
- Seleccionar datos de dos tablas en Kotlin Anko
- ¿Cómo unir dos tablas en Android usando el método de consulta del proveedor de contenido?
- Causado por: android.database.sqlite.SQLiteException: cerca de "org": error de syntax (código 1):, al comstackr:
class MySqlHelper(ctx: Context) : ManagedSQLiteOpenHelper(ctx, "db_main") { companion object { private var instance: MySqlHelper? = null @Synchronized fun getInstance(ctx: Context): MySqlHelper { if (instance == null) { instance = MySqlHelper(ctx.applicationContext) } return instance!! } } override fun onCreate(db: SQLiteDatabase) { db.createTable("db_main", true, "_id" to INTEGER + PRIMARY_KEY + AUTOINCREMENT + NOT_NULL, "name" to TEXT, "day" to INTEGER) } override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) { } // Access property for Context val Context.database: MySqlHelper get() = getInstance(applicationContext) }
Esto debería funcionar pero no funciona. Aunque tengo todas las columnas en la database y no recibo ningún post de error, no se están agregando.
El código siguiente se llama en MainActivity
val db = MySqlHelper(this) fun addtosqllite(title: String, datepicker: DatePicker) { db.use { insert("db_main", "_id" to 1, "name" to title, "day" to datepicker.dayOfMonth) } }
No tengo idea de cómo hacer esto . Necesito recuperar los datos de la database. He estado leyendo la documentation, pero no sé cómo implementar esto
Digamos que tengo tres columnas _id
, name
y day
que estaba haciendo algo así como
db.select("main_db","_id","name","day").exec { parseSingle //something goes here to send the data to String/Int }
- IlegalStateException donde se lanzó, al intentar recuperar los valores de la instancia de RoomDatabase
- Cómo anotar una columna como NOT NULL utilizando Android Room Persistence Library
- Error de la database de la sala Android: parámetro no utilizado: días en la function @Query
- Imposible get datos de la database sqlite
- Cómo pasar el nombre de db en time de ejecución en kotlin
- Implementación de SQLite en Kotlin y Anko
- Tipo de interferencia fallida. No coinciden los types esperados: requiere un par de cadenas encontrado <String, String> en Kotlin y Anko
- Kotlin Closable y SQLiteDatabase en Android
Espero que no sea demasiado tarde. Puedes intentar esto:
database.use { select("main_db", "_id", "name","day").exec { parseList( object : MapRowParser<Map<String, Any?>> { override fun parseRow(columns: Map<String, Any?>): Map<String, Any?> { Log.e("Your result", columns.toString()) return columns } } ) }
- Kotlin: Colección genérica a matriz genérica
- Cómo resolver: Error: ejecución fallida para la tarea ': aplicación: kaptDebugKotlin'?