Well I'm trying to make a request, but I have two tables, order and product_product, and a screen where I fill in all the information and click to finish.
First the application makes an insert in the order table, then it makes another one in the product_order table, but to do the insert in the product_order table the application must pick up the order id, so I made a select looking for that id before performing the insertion , but I'm not able to recover this id, let's go to the codes:
btnConclude:
Button confirma = (Button) findViewById(R.id.btnConfirmar);
confirma.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final BancoController crud = new BancoController(getBaseContext());
EditText data = (EditText) findViewById(R.id.edtData);
EditText emissao = (EditText) findViewById(R.id.edtEmissao);
EditText obs = (EditText) findViewById(R.id.edtObs);
String dataString = data.getText().toString();
String emissaoString = emissao.getText().toString();
String obsString = obs.getText().toString();
String resultadoPe;
String resultadoPp;
Spinner spClientes = (Spinner) findViewById(R.id.spCliente);
Spinner spCarteira = (Spinner) findViewById(R.id.spCarteira);
Spinner spPagamentos = (Spinner) findViewById(R.id.spPagamento);
SQLiteCursor dadosClientes = (SQLiteCursor) spClientes.getAdapter().getItem(
spClientes.getSelectedItemPosition());
SQLiteCursor dadosCarteira = (SQLiteCursor) spCarteira.getAdapter().getItem(
spCarteira.getSelectedItemPosition());
SQLiteCursor dadosPagamentos = (SQLiteCursor) spPagamentos.getAdapter().getItem(
spPagamentos.getSelectedItemPosition());
String idCliente = String.valueOf(dadosClientes.getInt(0));
String idCarteira = String.valueOf(dadosCarteira.getInt(0));
String idPagamento = String.valueOf(dadosPagamentos.getInt(0));
crud.op = 2;
resultadoPe = crud.insereDados(null, null, null, null, null, null, null, null,
null, null, null, null, idCliente, idPagamento, idCarteira, dataString,
emissaoString, obsString, null, null, null, null, null);
Toast.makeText(getApplication(), resultadoPe, Toast.LENGTH_LONG).show();
final Cursor cursor = crud.pegarIdPedido();
pedId = cursor.getString(cursor.getColumnIndexOrThrow(CriaBanco.getPedId()));
ArrayList<Produtos> produtos = produtosAdapter.getProdutos();
int linhas = produtos.size();
for (int i = 0; i < linhas; i++ ){
crud.op = 3;
Produtos linha = produtos.get(i);
String id = linha.getId();
String qtd = linha.getQuantidade();
String preco = linha.getPreco();
int ipreco = Integer.parseInt(preco);
int iqtd = Integer.parseInt(qtd);
int itotal = ipreco / iqtd;
String stotal = String.valueOf(itotal);
resultadoPp = crud.insereDados(null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, pedId,
id, qtd, preco, stotal);
Toast.makeText(getApplication(), resultadoPp, Toast.LENGTH_LONG).show();
}
}
});
PasteDirection:
public Cursor pegarIdPedido(){
Cursor cursor;
db = banco.getReadableDatabase();
cursor = db.rawQuery("SELECT MAX(" + banco.getPedId() + ") AS " + banco.getPedTabela() +
" FROM " + banco.getPedTabela(), null);
if(cursor != null){
cursor.moveToFirst();
}
db.close();
return cursor;
}
This is the problem:
pedId = cursor.getString(cursor.getColumnIndexOrThrow(CriaBanco.getPedId()));
Can anyone help me?
Note: When I run the app and it arrives in this section, there is no error in Android Monitor, but the application is forced to close.
Thank you in advance!
--- EDIT ---
InsertData:
public String insereDados
(String nome, String apelido, String cpf, String rg, String endereco, String bairro,
String municipio, String uf, String cep, String email, String fone, String cla,
String par, String car, String cpag, String data, String emissao, String obs, String ped,
String pro, String quantidade, String unitario, String item /**String lpPcodigo,
String lpDescri, String lpQtd, String lpPreco*/){
long resultadoC = -1;
long resultadoPe = -1;
long resultadoPr = -1;
//long resultadoLp = -1;
db = banco.getWritableDatabase();
switch (op){
case 1://Insere cliente:
ContentValues cvc;
cvc = new ContentValues();
cvc.put(CriaBanco.getParNome(), nome);
cvc.put(CriaBanco.getParApelido(), apelido);
cvc.put(CriaBanco.getParCpf(), cpf);
cvc.put(CriaBanco.getParRg(), rg);
cvc.put(CriaBanco.getParEndereco(), endereco);
cvc.put(CriaBanco.getParBairro(), bairro);
cvc.put(CriaBanco.getParMunicipio(), municipio);
cvc.put(CriaBanco.getParUf(), uf);
cvc.put(CriaBanco.getParCep(), cep);
cvc.put(CriaBanco.getParEmail(), email);
cvc.put(CriaBanco.getParFone(), fone);
resultadoC = db.insert(CriaBanco.getParTabela(), null, cvc);
break;
case 2://Insere Pedido
ContentValues cvpe;
cvpe = new ContentValues();
cvpe.put(CriaBanco.getClaId(), cla);
cvpe.put(CriaBanco.getPparId(), par);
cvpe.put(CriaBanco.getCarId(), car);
cvpe.put(CriaBanco.getCpagId(), cpag);
cvpe.put(CriaBanco.getPedData(), data);
cvpe.put(CriaBanco.getPedEmissao(), emissao);
cvpe.put(CriaBanco.getPedObs(), obs);
resultadoPe = db.insert(CriaBanco.getPedTabela(), null, cvpe);
break;
case 3: // Insere Pedido Produto
ContentValues cvpr;
cvpr = new ContentValues();
cvpr.put(CriaBanco.getPppedId(), ped);
cvpr.put(CriaBanco.getPpproId(), pro);
cvpr.put(CriaBanco.getPproQnt(), quantidade);
cvpr.put(CriaBanco.getPproUnit(), unitario);
cvpr.put(CriaBanco.getPproItem(), item);
resultadoPr = db.insert(CriaBanco.getPprodTabela(), null, cvpr);
break;
}
db.close();
if (resultadoC != -1){
return "Cliente inserido com sucesso!";
}else if(resultadoPe != -1 || resultadoPr != -1){
return "Pedido realizado com sucesso!";
}/**else if(resultadoLp != -1) {
return "Produto adicionado a lista com sucesso!";
}*/else{
return "Erro ao inserir registro (cliente/pedido)!";
}
}