Error de base de datos SQLite de SQL cuando intenta insertar en la tabla
En mi proyecto, agregue una función para insertar elementos en la base de datos en una clase public class DBHelper extends SQLiteOpenHelper
. La función se da a continuación.
public void insertIntoDatabase(String field_one,String field_two){ String sql = "INSERT INTO UserTable.NAME (COL_USERNAME, COL_PASSWORD) " + "VALUES (" + field_one + ", " + field_two + ")"; db.execSQL(sql);
En la actividad principal lea el nombre y la contraseña y llame a la función insert en la base de datos
- Error: Asegúrese de que el cursor se inicializa correctamente antes de acceder a los datos de él?
- SQLiteQueryBuilder.query () vs SQLiteDatabase.query ()
- Android Guardar imágenes en una tarjeta de memoria o en una tarjeta SD
- getApplicationContext () devuelve null, pero funciona en otras actividades
- Android: Actualización de bases de datos locales desde una base de datos en línea
DBHelper dbhelper; dbhelper.insertIntoDatabase(rdname.getText().toString(), rdpwrd.getText().toString());
Pero hubo un error.
- Android cómo actualizar, pero conserva la información de la base de datos
- ¿Los campos de datos SQLite null ocupan más memoria?
- Seleccione un primer carácter distinto basado en la columna de cadena
- Almacenamiento de datos en Android: almacenamiento de archivos vs base de datos SQLite vs preferencias compartidas
- ¿Cómo implementar consultas complejas utilizando un proveedor de contenido?
- Eliminar todas las tablas de la base de datos sqlite
- SQLite por qué copiamos db en carpeta de activos
- Cómo pre-poblar una base de datos DAO sqlite verde
Recomiendo bastante que utilice el método API de SQLiteDatabase db.insert()
que está directamente designado para insertar nuevas filas a la tabla. Esta solución es más limpia.
public void insertIntoDatabase(String field_one, String field_two){ ContentValues data = new ContentValues(); data.put("COL_USERNAME", field_one); data.put("COL_PASSWORD", field_two); if (db == null) { // make sure that your db is properly initialised } db.insert("tablename", "nullColumnHack", data); }
Explicación de nullColumnHack:
Si los valores proporcionados están vacíos, no se conocen nombres de columnas y no se puede insertar una fila vacía. Si no se establece en null, el parámetro nullColumnHack proporciona el nombre del nombre de columna anulable para insertar explícitamente un NULL en el caso en que sus valores estén vacíos.
Esto significa que en Android SQLite
tiene que especificar una columna que se asignará NULL
a en el caso de que pase vacío ContentValues.
Si desea utilizar su enfoque le recomiendo un uso de marcadores de posición.
String sql = "INSERT INTO UserTable.NAME (COL_USERNAME, COL_PASSWORD) " + "VALUES (?, ?)"; db.execSQL(sql, new String[] {field_one, field_two});
Nota: Probablemente no funcionó porque no utilizó comillas simples .
VALUES ("' + field_one + '", "' + field_two + '")"
Y también asegúrese de que el nombre de tabla dado es correcto. Recomiendo crear variables estáticas que contengan nombre tablename y nombres de columna.
public static final String TABLE_NAME = "Table"; String query = "insert into " + ClassName.TABLE_NAME + " values(?, ?)"
Su cadena de SQL no separa sus variables estáticas del resto de su sentencia de SQL. Esto debería arreglarlo:
String sql = "INSERT INTO " + UserTable.NAME + "(" + COL_USERNAME + "," + COL_PASSWORD ") VALUES (" + ...
Sólo asegúrese de que UserTable.NAME es el nombre de la tabla y que tiene campos con el mismo nombre que los valores de COL_USERNAME y COL_PASSWORD.
String sql = "INSERT INTO UserTable.NAME (COL_USERNAME, COL_PASSWORD) " + "VALUES ("+'" + field_one + "', '" + field_two + "'+")";
Los valores de la columna deben estar en ''
cadena de comillas simples.