我正在尝试在Android应用中使用sqlite.我已经创建了这样的帮助器类:
public class EventosqlHelper {
// Configuração da base(nome e versão)
private static final int DB_VERSAO = 1;
private static final String DB_NOME = "pacixDB";
// Configuração da tabela (nome, colunas, tag para log)
private static final String tabela_nome = "eventos";
private static final String coluna_id = "id";
private static final String coluna_desc = "descricao";
private static final String coluna_data = "dataEvento";
private static final String TAG = EventosqlHelper.class.getSimpleName();
// Comando sql para criação da tabela
private static final String DATABASE_CREATE = "create table if not exists eventos (id integer primary key autoincrement, "
+ "descricao VARCHAR not null, dataEvento date);";
// Contexto para o qual vai passar as informações
private final Context context = null;
private DataBaseHelper DBHelper;
private sqliteDatabase database;
// Helper que extende de sqliteOpenHelper - implementa práticas para salvar,
// criar, etc
private static class DataBaseHelper extends sqliteOpenHelper {
DataBaseHelper(Context context) {
super(context, DB_NOME, null, DB_VERSAO);
}
// executado quando cria a classe: cria a base se não existir
@Override
public void onCreate(sqliteDatabase db) {
try {
db.execsql(DATABASE_CREATE);
} catch (Exception e) {
e.printstacktrace();
}
}
// método para upgrade da base
@Override
public void onUpgrade(sqliteDatabase db, int oldVersion, int newVersion) {
Log.w(TAG, "Atualizando base da versão " + oldVersion
+ " para a versão " + newVersion
+ ", que irá destruir todos os dados.");
db.execsql("DROP TABLE IF EXISTS eventos");
onCreate(db);
}
}
public EventosqlHelper open() throws sqlException {
this.database = DBHelper.getWritableDatabase();
return this;
}
public void close() {
DBHelper.close();
}
public long inserirRegistro(String descricao, String data) {
ContentValues valoresIniciais = new ContentValues();
valoresIniciais.put(coluna_desc, descricao);
valoresIniciais.put(coluna_data, data);
return database.insert(tabela_nome, null, valoresIniciais);
}
public boolean deletarRegistro(long id) {
return database.delete(tabela_nome, coluna_id + " = " + id, null) > 0;
}
public Cursor getRegistros() {
return database.query(false, tabela_nome, new String[] { coluna_id,
coluna_desc, coluna_data }, null, null, null, null, null, null);
}
我已经在互联网上关注了一些教程,并且了解sqlhelper类.但是现在,我如何创建数据库?这是文件,对不对?我是否必须在主要活动的onCreate方法上创建它?
我该怎么做呢?
解决方法:
好吧,我们引用Docs:
A helper class to manage database creation and version management.
You create a subclass implementing onCreate(sqliteDatabase),
onUpgrade(sqliteDatabase, int, int) and optionally
onopen(sqliteDatabase), and this class takes care of opening the
database if it exists, creating it if it does not, and upgrading it as
necessary. Transactions are used to make sure the database is always
in a sensible state.
因此,这意味着您不必显式创建sqliteOpenHelper为您完成的“数据库文件”.因此,第一次打开数据库时,它将被创建. (它将自动通过您的DataBaseHelper中的onCreate运行)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。