sqlite数据库数据未在Android实际设备中加载

时间:2014-07-07 19:14:45

标签: android sqlite android-sqlite

我创建了一个应用程序,它包含sqlite数据库,用于联系人列表。应用程序在模拟器中成功运行它显示联系人列表然后我用真实设备检查。当我检查真实设备一切正常但sqlite数据库数据未加载到真实设备它显示空列表视图。 搜索此问题的解决方案。很多人建议卸载应用程序并再次将其安装在手机上。我做了但它无法正常工作,再次显示空列表

我应该怎样做才能在真实设备中加载数据?

2 个答案:

答案 0 :(得分:0)

如果您在本地工作,您的模拟器可以从db获取数据,但实际设备不能。要获取真实设备的数据,您应该打开外接设备的电脑(也许您可以使用Wi-Fi连接)。如果您有托管或类似的东西,从db获取数据应该没有问题。

答案 1 :(得分:0)

因此,您可以使用SQLite Query函数或rawQuery直接使用SQLite数据库。 基本上,一个选择将在工作台上并返回一个Cursor,您可以使用getInt(int columnIndex),getString(int columnIndex)处理数据,依此类推。 要查找列的索引,只需使用getColumnIndex(String columnName)

基本示例:

public class Teste extends Activity {

public Contato carregarContato(String nomeContato){

SQLiteOpenHelper helper = new SQLiteOpenHelper(this, "nomebanco", null, 1) {

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE CONTATO (  " 
        + "    ID INTEGER, " 
        + "    NOME VARCHAR( 100 ), " 
        + "    TELEFONE VARCHAR( 30 ) );");

    }
};


Cursor cursor = helper.getReadableDatabase().query("CONTATO", null, " NOME LIKE '%?%'", new String[]{nomeContato}, null, null, null);

if (cursor.moveToNext()) {
    Contato contato = new Contato();

    contato.setCodigo(cursor.getInt(cursor.getColumnIndex("ID")));
    contato.setNome(cursor.getString(cursor.getColumnIndex("NOME")));
    contato.setTelefone(cursor.getString(cursor.getColumnIndex("TELEFONE")));
    return contato;
} else 
    return null;
}

public class Contato {
private int codigo;
private String nome;
private String telefone;
public int getCodigo() {
    return codigo;
}
public void setCodigo(int codigo) {
    this.codigo = codigo;
}
public String getNome() {
    return nome;
}
public void setNome(String nome) {
    this.nome = nome;
}
public String getTelefone() {
    return telefone;
}
public void setTelefone(String telefone) {
    this.telefone = telefone;
}

}