当我创建一个类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());