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 .. ??

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(); } } 

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

  • Patrón de diseño recomendado para escribir en la base de datos SQLite en Android
  • Cómo almacenar datos de JSON analizados en SQLite
  • La mejor manera de agrupar fotos con app: archivos o en la base de datos sqlite?
  • Android sqlite CREATE TABLE SI NO EXISTE
  • Cómo cifrar datos y almacenarlos en Sqlite Android
  • ¿Cómo acceder a Android a una base de datos sqlite incluida en la carpeta de activos?
  • SQLiteException: Token no reconocido al leer de la base de datos
  • SQLite Excepción: no hay tal tabla Error
  • ¿Qué pasa con multithreading en Android SQLite?
  • ¿Soporta la plataforma Android SpatiaLite?
  • Android greenDAO Almacenamiento Números de punto flotante incorrectos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.