我正在开发一个需要用户注册的应用程序,数据库(sqlite)具有三个表,cliente表具有usuario表具有的所有内容,trabalhador表具有usuario表不具有的另外两行,并且table usuario拥有已注册用户的所有信息,但是我不确定是否仍然需要这两个表trabalhador表和cliente表的ID,因为如果我注册它们中的任何一个,两者都将成为usuario ,但是在考虑如何向新注册用户显示他的新注册信息时,我有一个疑问.
我有一个好主意,如何显示一个ArrayList,其中包含所有已注册用户的信息:
public ArrayList<Usuario> getAllUsuarios() {
ArrayList<Usuario> listaUsuarios = new ArrayList<Usuario>();
String query = "SELECT * FROM " + TABELA_USUARIOS;
sqliteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(query, null);
if (cursor.movetoFirst()) {
do {
Usuario usuario = cursorToUsuario(cursor); //método criado no banco de dados
listaUsuarios.add(usuario);
} while
(cursor.movetoNext());
}
return listaUsuarios;
}
public Usuario getUsuario(int id) {
sqliteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(
TABELA_USUARIOS,
COLUNAS,
"id = ?",
new String[]{String.valueOf(id)},
null, null, null, null);
if (cursor == null) {
return null;
} else {
cursor.movetoFirst();
Usuario usuario = cursorToUsuario(cursor); //método também criado
return usuario;
}
注册后将其重定向到要重定向的活动,但是问题是使用此方法显示了最后注册用户的数据.
我可以创建一个ArrayList来请求此活动中的所有注册用户:
final ArrayList<Usuario> listaUsuarios = bd.getAllUsuarios();
ArrayAdapter<Usuario> adapter = new ArrayAdapter<Usuario>(this,
android.R.layout.simple_list_item_1, listaUsuarios);
lvListaUsuarios.setAdapter(adapter);
我可以显示此活动中的所有用户,但是我无法正确显示仅显示最后一个用户的逻辑…
如果有人可以给我任何帮助,我将非常感激.
解决方法:
您可以使用ORDER BY DESC或cursor.moveToLast()
.
使用ORDER BY DESC:
public Usuario getLastUsuarios() {
String query = "SELECT * FROM " + TABELA_USUARIOS + " ORDER BY id DESC";
sqliteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(query, null);
if (cursor.movetoFirst()) {
return cursorToUsuario(cursor);
}
// not found.
return null;
}
使用cursor.movetoLast();:
public Usuario getLastUsuario() {
sqliteDatabase db = this.getReadableDatabase();
// get all rows in table.
Cursor cursor = db.query(TABELA_USUARIOS, null, null, null, null, null, null);
Usuario usuario = null;
if (cursor != null) {
cursor.movetoLast();
usuario = cursorToUsuario(cursor);
}
cursor.close();
return usuario;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。