I'm creating a DB that contains various tables, so now i have a "Admin" table and im trying to add a "Client" table but when i initialize the "Admin" table the "Client" table don't creates and viceversa...
I tried creating the "Admin" table in one activity and the "Client" table in another activity but i have the same results the table that is created is the first that is invoked
When my "Admin" table is created and i try to add some data to "Client" table i dont have any error, but when i try to get the data from "Client" table i get an error:
android.database.sqlite.SQLiteException: no such table: client_list (code 1): , while compiling: SELECT * FROM client_list Error Code : 1 (SQLITE_ERROR) Caused By : SQL(query) error or missing database.
//This is my DatabaseHelper
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "Users.db";
private static final int VERSION = 1;
private static int SELECTION;
public DatabaseHelper(Context context, int SELECTION){
super(context, DATABASE_NAME, null, VERSION);
this.SELECTION = SELECTION;
}
@Override
public void onCreate(SQLiteDatabase _db) {
switch (SELECTION){
case 1:
// Iniciamos la tabla de admins a guardar
_db.execSQL(initAdminTable());
break;
case 2:
// Iniciamos la tabla de clientes a guardar
_db.execSQL(initClientTable());
break;
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch(SELECTION){
case 1:
db.execSQL("DROP TABLE IF EXISTS "+ AdminContract.TABLE_NAME);
onCreate(db);
break;
case 2:
db.execSQL("DROP TABLE IF EXISTS "+ ClientContract.TABLE_NAME);
onCreate(db);
break;
}
}
private String initClientTable(){
final String SQL_CREATE_CLIENTLIST_TABLE = " CREATE TABLE IF NOT EXISTS " +
ClientContract.TABLE_NAME + " (" +
ClientContract._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "+
ClientContract.NOMBRE_CLIENTE + " TEXT NOT NULL, " +
ClientContract.NOMBRE_LOCAL + " TEXT NOT NULL, "+
ClientContract.DIRECCION + " TEXT NOT NULL, " +
ClientContract.CIUDAD + " TEXT NOT NULL, " +
ClientContract.CORREO + " TEXT NOT NULL, "+
ClientContract.ZONA + " TEXT NOT NULL, "+
ClientContract.NUMERO_TELEFONO + " INTEGER NOT NULL, " +
ClientContract.CODIGO_VENDEDOR + " INTEGER NOT NULL, " +
ClientContract.RUC + " INTEGER NOT NULL, " +
ClientContract.STANDBY + " INTEGER NOT NULL, " + // 0 Inactivo, 1 Activo
ClientContract.TIME_STAMP + " TIMESTAMP DEFAULT CURRENT_TIMESTAMP );";
return SQL_CREATE_CLIENTLIST_TABLE;
}
private String initAdminTable(){
final String SQL_CREATE_ADMINLIST_TABLE = " CREATE TABLE IF NOT EXISTS " +
AdminContract.TABLE_NAME + " (" +
AdminContract._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "+
AdminContract.NOMBRE + " TEXT NOT NULL, " +
AdminContract.DIRECCION_DOMICILIO + " TEXT NOT NULL, " +
AdminContract.CIUDAD + " TEXT NOT NULL, " +
AdminContract.CORREO + " TEXT NOT NULL, "+
AdminContract.PASSWORD + " TEXT NOT NULL, "+
AdminContract.NUMERO_TELEFONO + " INTEGER NOT NULL, " +
AdminContract.RUC + " INTEGER NOT NULL, " +
AdminContract.TIME_STAMP + " TIMESTAMP DEFAULT CURRENT_TIMESTAMP );";
return SQL_CREATE_ADMINLIST_TABLE;
}
// ADMIN METHODS -------------------------------------------------------------------------------
public void addAdmin(Admin admin){
if(SELECTION == 1){
SQLiteDatabase database = this.getWritableDatabase();
ContentValues cv = new ContentValues();
// Iniciamos datos
cv.put(AdminContract.NOMBRE, admin.getNombre());
cv.put(AdminContract.CIUDAD, admin.getCiudad());
cv.put(AdminContract.CORREO, admin.getCorreo());
cv.put(AdminContract.PASSWORD, admin.getPassword());
cv.put(AdminContract.DIRECCION_DOMICILIO, admin.getDireccionDomicilio());
cv.put(AdminContract.NUMERO_TELEFONO, admin.getNumeroTelefono());
cv.put(AdminContract.RUC, admin.getRUC());
// Insertamos
database.insert(AdminContract.TABLE_NAME, null, cv);
database.close();
}
}
public Admin getAdminById(int id){
if(SELECTION == 1) {
SQLiteDatabase database = this.getReadableDatabase();
Cursor cursor = database.query(AdminContract.TABLE_NAME, AdminContract.COLUMNS, "_id = ?", new String[]{String.valueOf(id)}, null, null, null, null);
if (cursor != null) {
cursor.moveToFirst();
}
Admin admin = new Admin();
admin.setNombre(cursor.getString(cursor.getColumnIndex(AdminContract.NOMBRE)));
admin.setDireccionDomicilio(cursor.getString(cursor.getColumnIndex(AdminContract.DIRECCION_DOMICILIO)));
admin.setCiudad(cursor.getString(cursor.getColumnIndex(AdminContract.CIUDAD)));
admin.setCorreo(cursor.getString(cursor.getColumnIndex(AdminContract.CORREO)));
admin.setPassword(cursor.getString(cursor.getColumnIndex(AdminContract.PASSWORD)));
admin.setNumeroTelefono(cursor.getString(cursor.getColumnIndex(AdminContract.NUMERO_TELEFONO)));
admin.setRUC(cursor.getString(cursor.getColumnIndex(AdminContract.RUC)));
cursor.close();
return admin;
}else{
return null;
}
}
public int getAdminCursorCount(){
SQLiteDatabase database = this.getReadableDatabase();
String query = "SELECT * FROM " + AdminContract.TABLE_NAME;
Cursor cursor = database.rawQuery(query, null);
return cursor.getCount();
}
public List<Admin> getAllAdmins(){
if(SELECTION == 1) {
List<Admin> adminList = new List<Admin>();
SQLiteDatabase database = this.getWritableDatabase();
String query = "SELECT * FROM " + AdminContract.TABLE_NAME;
Cursor cursor = database.rawQuery(query, null);
Admin admin = null;
if (cursor.moveToFirst()) {
do {
admin = new Admin();
admin.setNombre(cursor.getString(cursor.getColumnIndex(AdminContract.NOMBRE)));
admin.setDireccionDomicilio(cursor.getString(cursor.getColumnIndex(AdminContract.DIRECCION_DOMICILIO)));
admin.setCiudad(cursor.getString(cursor.getColumnIndex(AdminContract.CIUDAD)));
admin.setCorreo(cursor.getString(cursor.getColumnIndex(AdminContract.CORREO)));
admin.setPassword(cursor.getString(cursor.getColumnIndex(AdminContract.PASSWORD)));
admin.setNumeroTelefono(cursor.getString(cursor.getColumnIndex(AdminContract.NUMERO_TELEFONO)));
admin.setRUC(cursor.getString(cursor.getColumnIndex(AdminContract.RUC)));
adminList.addTop(admin);
} while (cursor.moveToNext());
}
cursor.close();
return adminList;
}else{
return null;
}
}
// END OF ADMIN METHODS ------------------------------------------------------------------------
// CLIENT METHODS ------------------------------------------------------------------------------
public void addClient(Cliente cliente){
if(SELECTION == 2){
SQLiteDatabase database = this.getWritableDatabase();
ContentValues cv = new ContentValues();
// Iniciamos datos
cv.put(ClientContract.NOMBRE_CLIENTE, cliente.getNombreCliente());
cv.put(ClientContract.NOMBRE_LOCAL, cliente.getNombreLocal());
cv.put(ClientContract.DIRECCION, cliente.getDireccion());
cv.put(ClientContract.CIUDAD, cliente.getCiudad());
cv.put(ClientContract.CORREO, cliente.getCorreoElectronico());
cv.put(ClientContract.ZONA, cliente.getZona());
cv.put(ClientContract.NUMERO_TELEFONO, cliente.getNumeroTelefono());
cv.put(ClientContract.CODIGO_VENDEDOR, cliente.getCodigoVendedor());
cv.put(ClientContract.RUC, cliente.getRUC());
cv.put(ClientContract.STANDBY, cliente.getStandBy());
// Insertamos
database.insert(ClientContract.TABLE_NAME, null, cv);
database.close();
}
}
public Cliente getClienteById(int id){
if(SELECTION == 2) {
SQLiteDatabase database = this.getReadableDatabase();
Cursor cursor = database.query(ClientContract.TABLE_NAME, ClientContract.COLUMNS, "_id = ?", new String[]{String.valueOf(id)}, null, null, null, null);
if (cursor != null) {
cursor.moveToFirst();
}
Cliente cliente = new Cliente();
cliente.setNombreCliente(cursor.getString(cursor.getColumnIndex(ClientContract.NOMBRE_CLIENTE)));
cliente.setNombreLocal(cursor.getString(cursor.getColumnIndex(ClientContract.NOMBRE_LOCAL)));
cliente.setDireccion(cursor.getString(cursor.getColumnIndex(ClientContract.DIRECCION)));
cliente.setCiudad(cursor.getString(cursor.getColumnIndex(ClientContract.CIUDAD)));
cliente.setCorreoElectronico(cursor.getString(cursor.getColumnIndex(ClientContract.CORREO)));
cliente.setZona(cursor.getString(cursor.getColumnIndex(ClientContract.ZONA)));
cliente.setNumeroTelefono(Integer.parseInt(cursor.getString(cursor.getColumnIndex(ClientContract.NUMERO_TELEFONO))));
cliente.setCodigoVendedor(Integer.parseInt(cursor.getString(cursor.getColumnIndex(ClientContract.CODIGO_VENDEDOR))));
cliente.setRUC(Integer.parseInt(cursor.getString(cursor.getColumnIndex(ClientContract.RUC))));
cliente.setStandBy(Integer.parseInt(cursor.getString(cursor.getColumnIndex(ClientContract.STANDBY))));
cliente.setID(Integer.parseInt(cursor.getString(cursor.getColumnIndex(ClientContract._ID))));
cursor.close();
return cliente;
}else{
return null;
}
}
public int getClientCursorCount(){
SQLiteDatabase database = this.getReadableDatabase();
String query = "SELECT * FROM " + ClientContract.TABLE_NAME;
Cursor cursor = database.rawQuery(query, null);
return cursor.getCount();
}
public List<Cliente> getAllClients(){
if(SELECTION == 2) {
List<Cliente> clienteList = new List<Cliente>();
SQLiteDatabase database = this.getWritableDatabase();
String query = "SELECT * FROM " + ClientContract.TABLE_NAME;
Cursor cursor = database.rawQuery(query, null);
Cliente cliente = null;
if (cursor.moveToFirst()) {
do {
cliente = new Cliente();
cliente.setNombreCliente(cursor.getString(cursor.getColumnIndex(ClientContract.NOMBRE_CLIENTE)));
cliente.setNombreLocal(cursor.getString(cursor.getColumnIndex(ClientContract.NOMBRE_LOCAL)));
cliente.setDireccion(cursor.getString(cursor.getColumnIndex(ClientContract.DIRECCION)));
cliente.setCiudad(cursor.getString(cursor.getColumnIndex(ClientContract.CIUDAD)));
cliente.setCorreoElectronico(cursor.getString(cursor.getColumnIndex(ClientContract.CORREO)));
cliente.setZona(cursor.getString(cursor.getColumnIndex(ClientContract.ZONA)));
cliente.setNumeroTelefono(Integer.parseInt(cursor.getString(cursor.getColumnIndex(ClientContract.NUMERO_TELEFONO))));
cliente.setCodigoVendedor(Integer.parseInt(cursor.getString(cursor.getColumnIndex(ClientContract.CODIGO_VENDEDOR))));
cliente.setRUC(Integer.parseInt(cursor.getString(cursor.getColumnIndex(ClientContract.RUC))));
cliente.setStandBy(Integer.parseInt(cursor.getString(cursor.getColumnIndex(ClientContract.STANDBY))));
cliente.setID(Integer.parseInt(cursor.getString(cursor.getColumnIndex(ClientContract._ID))));
clienteList.addTop(cliente);
} while (cursor.moveToNext());
}
cursor.close();
return clienteList;
}else{
return null;
}
}
public Cliente findClientByData(Object object){
Cliente cliente = null;
SQLiteDatabase database = this.getWritableDatabase();
String query = "SELECT * FROM " + ClientContract.TABLE_NAME;
Cursor cursor = database.rawQuery(query, null);
if(object.getClass().equals(String.class)){
if (cursor.moveToFirst()) {
do {
if(cursor.getString(cursor.getColumnIndex(ClientContract.NOMBRE_CLIENTE)).equals(object) || cursor.getString(cursor.getColumnIndex(ClientContract.NOMBRE_LOCAL)).equals(object)){
cliente = getClienteById(Integer.parseInt(cursor.getString(cursor.getColumnIndex(ClientContract._ID))));
break;
}
}while(cursor.moveToNext());
}
}
return cliente;
}
// END OF CLIENT METHODS -----------------------------------------------------------------------
}
And i Use in my MainActivity like this:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DatabaseHelper databaseHelperClient = new DatabaseHelper(InitActivity.this, 2);// Number two indicates to create table for client
databaseHelperClient.addClient(client);
DatabaseHelper databaseHelperAdmin = new DatabaseHelper(InitActivity.this, 1); // Number one indicates to create table for admin
databaseHelperAdmin.addAdmin(admin);
}
// But in this case just admin is created
i expect to create the "Client" table