Android.database.sqlite.SQLITeException: no hay tal tabla: admin mientras compila: INSERT INTO … etc
Estoy tratando de agregar otra tabla en mi base de datos, la primera fue creada con éxito, y los datos se insertó con éxito también. Pero cuando intenté agregar otra tabla, después inserté los datos … conseguí este error (ninguna tabla tal mientras que compila el INSERTO en …. etc.
Busqué en google y aquí también en stackoverflow, encontré a algunos chicos con códigos similares a la mía. Alguien tuvo que agregar (método onUpgrade) a su código para autoincrement la versión de la base de datos …. pero ya lo he escrito. Estoy muy confundido. Cualquier ayuda por favor .. ??
- ¿Cómo obtener el último registro de Sqlite?
- Android SQLite ORDER BY no funciona
- Problema al mostrar nombres de elementos junto con imágenes que se almacenan en sqlite para android
- Obtención del siguiente valor AUTO_INCREMENT de una base de datos SQLite
- ¿Cómo puedo comprobar si mi tabla sqlite contiene datos?
Este es el código de la base de datos:
package group.com; import android.content.ContentValues; import android.content.Context; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; public class DBAdapter { public static final String KEY_Admin_ROWID = "_id"; public static final String KEY_Admin_fullName = "adminFullName"; public static final String KEY_Admin_UserName = "AdminUserName"; public static final String KEY_Admin_Password = "AdminPassword"; private static final String TAG = "DBAdapter"; private static final String DATABASE_NAME = "RamiTariq"; private static final String DATABASE_TABLE = "info"; private static final String DATABASE_TABLE_Admin = "admin"; private static final int DATABASE_VERSION = 1; private static final String DATABASE_CREATE = "create table " + DATABASE_TABLE + " (" + KEY_ROWID + " integer primary key autoincrement, " + KEY_NAME + " text not null, " + KEY_PSSWORD + " text not null , " + KEY_F_NAME + " text not null ," + KEY_DATE + " text not null," + KEY_JOB + " text not null," + KEY_ADDRESS + " text not null," + KEY_PHONE + " text not null," + KEY_NATIONAL_NUMBER + " text not null," + KEY_MONEY_SHOULD_PAY + " text null," + KEY_ACTUAL_MONEY + " text null);"; private static final String DATABASE_CREATE_ADMIN = "create table " + DATABASE_TABLE_Admin + " (" + KEY_Admin_ROWID + " integer primary key autoincrement, " + KEY_Admin_fullName + " text not null, " + KEY_Admin_UserName + " text not null, " + KEY_Admin_Password + " text not null);"; private final Context context; private DatabaseHelper DBHelper; private SQLiteDatabase db; public DBAdapter(Context ctx) { this.context = ctx; DBHelper = new DatabaseHelper(context); } private static class DatabaseHelper extends SQLiteOpenHelper { DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } public void onCreate(SQLiteDatabase db) { try { db.execSQL(DATABASE_CREATE); db.execSQL(DATABASE_CREATE_ADMIN); } catch (SQLException e) { e.printStackTrace(); } } public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { Log.w(TAG, "Upgrading database from version " + oldVersion + " to " + newVersion + ", which will destroy all old data"); db.execSQL("DROP TABLE IF EXISTS "+DATABASE_TABLE); db.execSQL("DROP TABLE IF EXISTS "+DATABASE_TABLE_Admin); onCreate(db); } } // ---opens the database--- public DBAdapter open() throws SQLException { db = DBHelper.getWritableDatabase(); return this; } // ---closes the database--- public void close() { DBHelper.close(); } //------insert an admin into the database----- public long insertAdmin(String full_name, String user_name, String password ) { ContentValues initialValues = new ContentValues(); initialValues.put(KEY_Admin_fullName, full_name); initialValues.put(KEY_Admin_UserName, user_name); initialValues.put(KEY_Admin_Password,password); return db.insert(DATABASE_TABLE_Admin, null,initialValues); } }
Y este es el código de actividad:
package group.com; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class InsertAdmin extends Activity { DBAdapter db = new DBAdapter(this); EditText fullName, username, password, rePassword; Button insertAdmin; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.insertadmin); fullName = (EditText) findViewById(R.id.fullName); username = (EditText) findViewById(R.id.username); password = (EditText) findViewById(R.id.password); rePassword = (EditText) findViewById(R.id.rePassword); insertAdmin = (Button) findViewById(R.id.insertAdmin); insertAdmin.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { String fName = fullName.getText().toString(); String uName = username.getText().toString(); String pass = password.getText().toString(); String rePass = rePassword.getText().toString(); if(fName.length()==0 || uName.length()==0 || pass.length()==0 || rePass.length()==0) { displayMessage("Please Enter Full Data"); return; } if (uName.length() == 0) { displayMessage("Enter username"); return; } if (pass.length() == 0) { displayMessage("Enter The password"); return; } if(pass.equals(rePass)) { db.open(); long id = db.insertAdmin(fName, uName, pass); if(id>0) { displayMessage(id + "\nSuccessfuly Inserted"); } else { displayMessage("Not Inserted"); } db.close(); startActivity(new Intent(getBaseContext(),Admin.class)) ; } else displayMessage("Your Passwords doesn't match"); } }); } public void displayMessage(String msg) { Toast.makeText(this, msg, Toast.LENGTH_SHORT).show(); } }
- Eficiente ejecución de consultas SQL por lotes en Android, para actualizar la base de datos
- Instrucciones de inserción múltiple android sqlite
- Error: Asegúrese de que el cursor se inicializa correctamente antes de acceder a los datos de él?
- ¿Cómo funciona un cursor SQLite trabajar internamente?
- ¿Cómo implementar una base de datos SQLite en Phonegap?
- No puede ver datos Sqlite con adaptador simple
- Método SQLiteDatabase.query
- Caracteres especiales de Android Sqlite
Desinstale la aplicación para eliminar la versión antigua de la base de datos.
La versión de su base de datos sigue siendo 1
por lo que no se ejecuta onUpgrade()
. El archivo de base de datos ya existe para que onCreate()
no se ejecute. El archivo de base de datos ya existente no contiene todas las tablas que cree en su versión actual de onCreate()
.
Usualmente uso este código para agregar nueva tabla o attibute
try{ String sql = "SELECT id FROM store;"; Cursor cursor = db.rawQuery(sql, null); cursor.close(); } catch(SQLiteException s){ db.execSQL("create table store (id integer primary key, name text)"); }
Primero verifique si la tabla existe o no seleccionando algunos datos, si no existe entonces cree la tabla
- Android: getResources () y estática
- Android: cambia TextView textColor cuando el padre está enfocado