将数据插入sqlite数据库表时出现未知错误

时间:2014-11-16 18:28:24

标签: java android sqlite logcat

这是错误:http://i.imgur.com/eR1N1j0.png

我不是指所选行上的错误,而是单击按钮时发生的错误。

LoginOpenHelper的getIDUsuario方法代码如下:

public String getIDUsuario(String usuario, String senha){
        SQLiteDatabase db = this.getWritableDatabase();

        String id = "id_usuario";

        String[] columns = {id};
        String[] selectionArgs ={usuario, senha};

        Cursor cursor = db.query("usuarios", columns, "nome_usuario=? AND senha=?", selectionArgs, null, null, null);

        StringBuffer buffer = new StringBuffer();
        while(cursor.moveToNext()){
            int index0 = cursor.getColumnIndex(id);
            int idUsuario = cursor.getInt(index0);
            buffer.append(idUsuario);
        }

        return buffer.toString();
    }

第91行是:

Cursor cursor = db.query("usuarios", columns, "nome_usuario=? AND senha=?", selectionArgs, null, null, null);

这是MockActivityTransacao类中cadastrarTransacao方法的代码:

public void cadastrarTransacao(View view) {
        TransacaoDTO transacaoDTO = new TransacaoDTO();
        LoginDTO loginDTO = new LoginDTO();

        //int idUsuario = Integer.parseInt(activity.getIDUsuario(loginOpenHelper));

        transacaoDTO.setDesc(edtDescricao.getText().toString());
        transacaoDTO.setData(edtData.getText().toString());
        transacaoDTO.setValor(Long.parseLong(edtValor.getText().toString()));
        transacaoDTO.setIdUsuario(Integer.parseInt(loginOpenHelper.getIDUsuario(loginDTO.getUsuario(), loginDTO.getSenha())));

        ValidacaoMock resultado = mockBO.cadastrarOperacao(transacaoDTO);

        MensagemUtil.addMsg(this, resultado.getMensagem());

        Intent i = new Intent(this, MockListActivity.class);
        startActivity(i);
        finish();
    }

第53行就是这个:

transacaoDTO.setIdUsuario(Integer.parseInt(loginOpenHelper.getIDUsuario(loginDTO.getUsuario(), loginDTO.getSenha())));

我认为问题是代码没有从LoginDTO中检索值,后者有以下代码:

public class LoginDTO implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1111108194849414002L;

    private String usuario;
    private String senha;

    public String getUsuario() {
        return usuario;
    }

    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }
}

我无法想办法解决它。

1 个答案:

答案 0 :(得分:0)

“绑定值”指向查询的selectionArgs。如果任何一个selectionArgs值为null,则可能会出现此错误。在logcat中打印并检查是否

String[] selectionArgs ={usuario, senha};

任何一个usuario或senha都是null。