方法onCreate没有在SQLOpenHelper中调用

时间:2014-06-19 18:16:41

标签: java android sqlite

当我创建一个类SQLite的新引用时,onCreate方法没有调用。问题是没有创建新表,当我进行查询时,出现错误表明该表不存在。

我尝试从构造函数调用方法onCreate,但是当我创建一个新实例时,这是调用所有时间,因此它不是解决方案。

我的代码是:

public class FotografiaDAOSqlite extends SQLiteOpenHelper {

   //Sentencia SQL para crear la tabla de Usuarios
   String sqlCreate = "CREATE TABLE fotografia (ID_FOTOGRAFIA INT PRIMARY KEY, ID_ARTICULO INT, URL VARCHAR(1000) );";

   public FotografiaDAOSqlite(Context contexto, String nombre,
                           CursorFactory factory, int version) {
    super(contexto, nombre, factory, version);  
    //onCreate(this.getReadableDatabase());
   }

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

从这里打电话:

ArticulosDAOSqlite accesoArticulos = new ArticulosDAOSqlite(getBaseContext(), "DBAuchic18", null, 1);
FotografiaDAOSqlite fotografiaDAO = new FotografiaDAOSqlite(getBaseContext(), "DBAuchic18", null, 1);
SQLiteDatabase dbb = fotografiaDAO.getWritableDatabase();
_art =  fotografiaDAO.obtenerFotografias(dbb, b.getInt("idarticulo"), new Articulos());
public Articulos obtenerFotografias(SQLiteDatabase db,int idArticulo, Articulos arti){
    ArrayList<String> arts = new ArrayList<String>();
     String[] args = new String[] {String.valueOf(idArticulo)};

     Cursor c = db.rawQuery("SELECT url FROM fotografia WHERE ID_ARTICULO=?",args);
     arti.setId_articulo(idArticulo);
     if (c.moveToFirst()) {
         //Recorremos el cursor hasta que no haya más registros
         do {
             arti.getListaFotografias().add(c.getString(0));
         } while(c.moveToNext());
    }
    c.close();
    return arti;
}

public Articulos obtenerFotografias(SQLiteDatabase db,int idArticulo, Articulos arti){
    ArrayList<String> arts = new ArrayList<String>();
     String[] args = new String[] {String.valueOf(idArticulo)};

     Cursor c = db.rawQuery("SELECT url FROM fotografia WHERE ID_ARTICULO=?",args);
     arti.setId_articulo(idArticulo);
     if (c.moveToFirst()) {
         //Recorremos el cursor hasta que no haya más registros
         do {
             arti.getListaFotografias().add(c.getString(0));

         } while(c.moveToNext());


    }
     c.close();
     return arti;
 }

该方法称为:

ArticulosDAOSqlite accesoArticulos = new ArticulosDAOSqlite(getBaseContext(), "DBAuchic18", null, 1);
FotografiaDAOSqlite fotografiaDAO = new FotografiaDAOSqlite(getBaseContext(), "DBAuchic18", null, 1);
SQLiteDatabase dbb = fotografiaDAO.getWritableDatabase();
_art =  fotografiaDAO.obtenerFotografias(dbb, b.getInt("idarticulo"), new Articulos());

0 个答案:

没有答案