如何从 sqlite table 中加载多个 EDITTEXT 的数据
how to load data from a sqlite table for several EDITTEXT
我无法获取此数据并显示在 activity 上,有人可以帮助我吗?我如何调用 DAO 并传递此数据?
到目前为止已使用 classes 的所有痕迹来解决此问题。
Class 型号
@DatabaseTable(tableName = "pessoa")
public class Pessoa implements EntidadePersitivel {
@DatabaseField(generatedId = true)
private int id;
@DatabaseField
private int codigo;
@DatabaseField
private String nome;
@DatabaseField
private String cnpjCpf;
public void setUf(String uf) {
this.uf = uf;
}
@DatabaseField
private String rgIE;
@DatabaseField
private String cep;
@DatabaseField
private String uf;
@DatabaseField
private String cidade;
@DatabaseField
private String bairro;
@DatabaseField
private String endereco;
@DatabaseField
private String numero;
@DatabaseField
private String complemento;
@DatabaseField
private String foneComercial;
@DatabaseField
private String foneResidencial;
@DatabaseField
private String foneCelular;
@DatabaseField
private String email;
public Pessoa(int id, int codigo, String nome, String cnpjCpf, String rgIE,
String cep, String cidade, String bairro, String endereco,
String numero, String complemento, String foneComercial, String foneResidencial, String foneCelular, String email) {
this.id = id;
this.codigo = codigo;
this.nome = nome;
this.cnpjCpf = cnpjCpf;
this.rgIE = rgIE;
this.cep = cep;
this.cidade = cidade;
this.bairro = bairro;
this.endereco = endereco;
this.numero = numero;
this.complemento = complemento;
this.foneComercial = foneComercial;
this.foneResidencial = foneResidencial;
this.foneCelular = foneCelular;
this.email = email;
}
public Pessoa() {
}
classDAO
*/
public class PessoaDao extends BaseDaoImpl<Pessoa, Integer> {
public PessoaDao(ConnectionSource connectionSource) throws SQLException {
super(Pessoa.class);
setConnectionSource(connectionSource);
initialize();
}
}
class 数据库助手
public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
private static final String dataBaseName= "central";
private static final int version =1;
public DatabaseHelper(Context context) {
super(context, dataBaseName, null, version);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) {
try {
TableUtils.createTable(connectionSource,LoginSeralizable.class);
TableUtils.createTable(connectionSource, Pessoa.class);
} catch (java.sql.SQLException e) {
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int oldVersion, int newVersion) {
try {
TableUtils.dropTable(connectionSource, LoginSeralizable.class,true);
TableUtils.dropTable(connectionSource, Pessoa.class, true);
onCreate(sqLiteDatabase, connectionSource);
} catch (java.sql.SQLException e) {
e.printStackTrace();
}
}
@Override
public void close(){
super.close();
}
}
错误日志
致命异常:Thread-284
Process: routerbox.com.br.centraisdoassinante, PID: 25202
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object routerbox.com.br.centraisdoassinante.routerbox.com.br.centraisdoassinante.Dao.PessoaDao.queryForId(java.lang.Object)' on a null object reference
at routerbox.com.br.centraisdoassinante.DadosCadastrais.run(DadosCadastrais.java:49)
at java.lang.Thread.run(Thread.java:818)
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object routerbox.com.br.centraisdoassinante.routerbox.com.br.centraisdoassinante.Dao.PessoaDao.queryForId(java.lang.Object)' on a null object reference
您正在尝试在空对象中执行方法 queryForId
,这是什么意思?
PessoaDao
是一个非静态 class,这意味着您需要先实例化它才能使用它们的方法。
所以您删除了调用此函数的代码部分,但如果我没记错的话,您有类似的东西:
PessoaDao.queryForId('1');
但你需要做:
PessoaDao pessoaDao = new PessoaDao(yourConnectionSource);
pessoaDao.queryForId('1');
顺便说一句,我想 Pessoa
是葡萄牙语吧?也许你可以在Stack Overflow in portuguese里问,这样我可以更好地回答你,你也不需要应付我糟糕的英语:)
我喜欢 lucas 说过的话,我参考连接和管理
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dados_cadastrais);
databaseHelper = new DatabaseHelper(DadosCadastrais.this);
new Thread(new Runnable() {
@Override
public void run() {
try {
pessoaDao = new PessoaDao(databaseHelper.getConnectionSource());
pessoa= pessoaDao.queryForId(1);
edtNome= (EditText) findViewById(R.id.edtNome);
edtNome.setText(pessoa.getNome());
} catch (SQLException e) {
e.printStackTrace();
}
}
}).start();
}
我无法获取此数据并显示在 activity 上,有人可以帮助我吗?我如何调用 DAO 并传递此数据?
到目前为止已使用 classes 的所有痕迹来解决此问题。
Class 型号
@DatabaseTable(tableName = "pessoa")
public class Pessoa implements EntidadePersitivel {
@DatabaseField(generatedId = true)
private int id;
@DatabaseField
private int codigo;
@DatabaseField
private String nome;
@DatabaseField
private String cnpjCpf;
public void setUf(String uf) {
this.uf = uf;
}
@DatabaseField
private String rgIE;
@DatabaseField
private String cep;
@DatabaseField
private String uf;
@DatabaseField
private String cidade;
@DatabaseField
private String bairro;
@DatabaseField
private String endereco;
@DatabaseField
private String numero;
@DatabaseField
private String complemento;
@DatabaseField
private String foneComercial;
@DatabaseField
private String foneResidencial;
@DatabaseField
private String foneCelular;
@DatabaseField
private String email;
public Pessoa(int id, int codigo, String nome, String cnpjCpf, String rgIE,
String cep, String cidade, String bairro, String endereco,
String numero, String complemento, String foneComercial, String foneResidencial, String foneCelular, String email) {
this.id = id;
this.codigo = codigo;
this.nome = nome;
this.cnpjCpf = cnpjCpf;
this.rgIE = rgIE;
this.cep = cep;
this.cidade = cidade;
this.bairro = bairro;
this.endereco = endereco;
this.numero = numero;
this.complemento = complemento;
this.foneComercial = foneComercial;
this.foneResidencial = foneResidencial;
this.foneCelular = foneCelular;
this.email = email;
}
public Pessoa() {
}
classDAO
*/
public class PessoaDao extends BaseDaoImpl<Pessoa, Integer> {
public PessoaDao(ConnectionSource connectionSource) throws SQLException {
super(Pessoa.class);
setConnectionSource(connectionSource);
initialize();
}
}
class 数据库助手
public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
private static final String dataBaseName= "central";
private static final int version =1;
public DatabaseHelper(Context context) {
super(context, dataBaseName, null, version);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) {
try {
TableUtils.createTable(connectionSource,LoginSeralizable.class);
TableUtils.createTable(connectionSource, Pessoa.class);
} catch (java.sql.SQLException e) {
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int oldVersion, int newVersion) {
try {
TableUtils.dropTable(connectionSource, LoginSeralizable.class,true);
TableUtils.dropTable(connectionSource, Pessoa.class, true);
onCreate(sqLiteDatabase, connectionSource);
} catch (java.sql.SQLException e) {
e.printStackTrace();
}
}
@Override
public void close(){
super.close();
}
}
错误日志
致命异常:Thread-284
Process: routerbox.com.br.centraisdoassinante, PID: 25202
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object routerbox.com.br.centraisdoassinante.routerbox.com.br.centraisdoassinante.Dao.PessoaDao.queryForId(java.lang.Object)' on a null object reference
at routerbox.com.br.centraisdoassinante.DadosCadastrais.run(DadosCadastrais.java:49)
at java.lang.Thread.run(Thread.java:818)
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object routerbox.com.br.centraisdoassinante.routerbox.com.br.centraisdoassinante.Dao.PessoaDao.queryForId(java.lang.Object)' on a null object reference
您正在尝试在空对象中执行方法 queryForId
,这是什么意思?
PessoaDao
是一个非静态 class,这意味着您需要先实例化它才能使用它们的方法。
所以您删除了调用此函数的代码部分,但如果我没记错的话,您有类似的东西:
PessoaDao.queryForId('1');
但你需要做:
PessoaDao pessoaDao = new PessoaDao(yourConnectionSource);
pessoaDao.queryForId('1');
顺便说一句,我想 Pessoa
是葡萄牙语吧?也许你可以在Stack Overflow in portuguese里问,这样我可以更好地回答你,你也不需要应付我糟糕的英语:)
我喜欢 lucas 说过的话,我参考连接和管理
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dados_cadastrais);
databaseHelper = new DatabaseHelper(DadosCadastrais.this);
new Thread(new Runnable() {
@Override
public void run() {
try {
pessoaDao = new PessoaDao(databaseHelper.getConnectionSource());
pessoa= pessoaDao.queryForId(1);
edtNome= (EditText) findViewById(R.id.edtNome);
edtNome.setText(pessoa.getNome());
} catch (SQLException e) {
e.printStackTrace();
}
}
}).start();
}