Несколько таблиц в БД SQLite - PullRequest
2 голосов
/ 07 октября 2011

Я работал с одной таблицей, и все мои программы в порядке, но теперь я должен добавить другую таблицу в свою базу данных, и по логике это код:

package net.ShamanOperativo;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class UsuariosSQLiteHelper extends SQLiteOpenHelper {

    //Sentencia SQL para crear la tabla de Incidentes
    String sqlCreate = "CREATE TABLE Incidentes  ( idInterno INTEGER PRIMARY KEY  , codReg TEXT, codGr TEXT, entidad TEXT, codInc TEXT, loc TEXT, dom TEXT, sint TEXT, movil TEXT, sexo TEXT, edad INTEGER, estado TEXT, latitud DOUBLE, longitud DOUBLE,colorLoc TEXT, colorGr TEXT )";
    String sqlCreate2 = "CREATE TABLE Moviles (idInterno INTEGER PRIMARY KEY, numMovil TEXT, colMovil TEXT, estado TEXT, localidad TEXT, cantServ INTEGER)";
    String sqlCreateIndex = "CREATE UNIQUE INDEX idxIdInterno ON Incidentes(idInterno)";

    public UsuariosSQLiteHelper(Context contexto, String nombre,
                               CursorFactory factory, int version) {
        super(contexto, nombre, factory, version);


    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        //Se ejecuta la sentencia SQL de creación de la tabla
        db.execSQL(sqlCreate);
        db.execSQL(sqlCreateIndex);
        db.execSQL(sqlCreate2);




    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int versionAnterior, int versionNueva) {

        //Se elimina la versión anterior de la tabla
        db.execSQL("DROP TABLE IF EXISTS Incidentes");
        db.execSQL("DROP TABLE IF EXISTS Moviles");


        //Se crea la nueva versión de la tabla
        db.execSQL(sqlCreate);
        db.execSQL(sqlCreate2);

    }
}

Моя таблица Incidentes в порядке, это то, что я использовал всегда ... но я не могу использовать таблицу Moviles, я использую свою таблицу здесь:

 UsuariosSQLiteHelper usdbh =
                new UsuariosSQLiteHelper(this, "DBIncidentes", null, 1);

            SQLiteDatabase db = usdbh.getWritableDatabase();         //Abro base de datos para escritura

            if(db != null)
            {

                 //db.execSQL("DELETE from Moviles");
                 for (int i=0; i<= (vecTotal.length) -1; i++) {



                String reg = vecTotal[i].toString(); 
                String [] inc = TextUtils.split(reg, "\\^");




                String numMovil = inc[0];
                String colMovil = inc[1];
                String estado = inc[2];
                String localidad = inc[3];
                String strCantServ = inc[4];

                Integer cantServ = Integer.parseInt(strCantServ);



                try{                

                    //Insertamos los datos en la tabla Incidentes
 db.execSQL("INSERT INTO Moviles ( idInterno, numMovil, colMovil, estado, localidad, cantServ) " +
             "VALUES ("+(i+1)+", '" + numMovil +"', '" + colMovil +"' , '" + estado +"', '" + localidad +"', " +cantServ +" )");



}

catch (Exception e)

{
    e.getMessage();


}

Есть ли еще одна вещь, которую я должен сделать, чтобы обрабатывать две таблицы или больше?Это не тот же адаптер, а просто ссылка на таблицу базы данных, к которой я хочу обратиться или добавить информацию?

Когда программа хочет добавить информацию в Moviles, logcat говорит, что не может, потому что Moviles этого не делаетесть.

1 Ответ

3 голосов
/ 07 октября 2011

Нет, ничего не нужно делать для обработки более 1 таблицы.

Я думаю, что ваша таблица не создана, потому что ни onCreate() (потому что ваша база данных уже существует), ни onUpdate() (вы никогда не увеличивали версию базы данных, которую вы передаете UsuariosSQLiteHelper, верно?) называется.

...