DB SQLite中的多个表

时间:2011-10-07 00:17:00

标签: java android database sqlite create-table

我正在使用一个表,我的所有程序都没问题,但现在我必须在我的数据库中添加另一个表,并且通过逻辑这是代码:

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 个答案:

答案 0 :(得分:3)

不,您不需要为处理1个以上的表做任何额外的事情。

我认为您的表未创建,因为onCreate()(因为您的数据库已经存在)和onUpdate()都没有(您从未增加传递给UsuariosSQLiteHelper的数据库版本,对吗?)被称为。