>

Fórum

Fórum da RL System, voltado para analistas, programadores etc. Tudo sobre linguagem de programação e desenvolvimento Full Stack: Banco de Dados, Android, C#, Java, .NET, PHP, Node, Javascript, TypeScript, Front, HTML e muito mais.



Como gravar dados de um Spinner em um db?


Como faço para salvar dados de um spinner em um db?
Eu estou utilizando um que pega dados já salvos em um db e mostra para o usuario, em uma janela eu crio e salvo o produto e na outra eu seleciono qual eu quero, até a parte de salvar e mostrar consegui fazer, mas não consigo salvar o produto que eu escoho no spinner, ele ta sempre salvando umas coisas locas, uma das que ele salvou foi "android.database.sqlite.SQLiteCursor@4053ef40.
Poderiam me ajudar a resolver isso?



32 Respostas


ola patrik

tem este exemplo aqui

http://androidhive.info/2012/06/android-populating-spinner-data-from-sqlite-database/

ai depois vc adapta no seu projeto





sim andre a parte de listar os dados no spinner eu consegui fazer, o que nao consigo é gravar os dados do spinner no db




ola patrik ...

mostre a sua tela pra gente analisarmos




http://rlsystem.com.br/forum/disco/uploads/4aa9ea94718729ea36e1cb89a9f97f6d-Sem título.png
eh a parte que tem a caixa de texto que eu nao que comando usar






o problema so ta no produto?? o cliente ta vindo???




não não, eu consigo listar os dois em seus respectivos spinner, isso é tranquilo, eu não consigo é gravar os dados desses spinners no banco.






entao mostra os codigos dos spinners




patrik

seu problema é pq vc naum ta fazendo isso aki , por exemplo

spEstados.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView parent, View view, int posicao, long id) {
// TODO Auto-generated method stub
Toast.makeText(AndroidConrole.this, "Você clicou em " estados.get(posicao), Toast.LENGTH_LONG).show();
}

ai se vc fizer o exemplo ai de cima coloca numa variavel , no caso pro exemplo acima ficaria assim

estado = estados get(posicao);

depois vc colocaria no seu exemplo de vendas_click, no meu exemplo ficaria assim

ctv.put("estados", estado)

(...)




vou te mandar meu fonte ai vc faz isso pra mim e deixa tudo o que vc fez comentado, so comenta nao precisa escrever nada, que dai leio o seu ultimo post e consigo entender, porque vc falando assim pra mim nao é muito clara entende

http://rlsystem.com.br/forum/disco/uploads/6d1d1cb4a7f1ab28d61666ed515e820f-Ibr- copia salva.zip




opa patrik

o que eu estou querendo dizer é q vc naum deve fazer desse seu jeito p fazer a selecao do objeto

vc deve fazer deste jeito como vc pode ver abaixo:

spClientes_venda.setOnItemSelectedListener(new OnItemSelectedListener() {

@Override
public void onItemSelected(AdapterView parent, View view,
int posicao, long arg3) {
// TODO Auto-generated method stub
SQLiteCursor c = (SQLiteCursor)parent.getAdapter().getItem(posicao);
clientes = c.getString(1).toString();



e tambem naum declare o spinner dentro do oncreate , declare ele antes do oncreate ai vc naum precisa criar no oncreate e no click do botao
e tambem declare o clientes antes do oncreate... ai vai dar certo... qualquer duvida assista o android gratuito q la o rafael explica direitinho.... la ele ensina como fazer numa lista mas dar pra colocar essa informacao num spinner




o que eu faço com esse clientes que tem aqui "clientes" = c.getString(1).toString(); ?





coloque la no click do botao na parte q ta

(...)

ctv.put("clientes", clientes)

(...)
mas não se esqueca de declarar antes do oncreate...

String clientes ;






coloque naquela parte

ctv.put("cliente", spClientes_venda.getSelectedItem().toString());




ele ta passando o parametro em branco agora, vou te mostrar o que fiz

primeiro declarei o clientes String clientes;

depois coloquei o codigo que vc me falou
spClientes_venda.setOnItemSelectedListener(new OnItemSelectedListener() {

@Override
public void onItemSelected(AdapterView parent, View view,
int posicao, long arg3) {
// TODO Auto-generated method stub
SQLiteCursor c = (SQLiteCursor)parent.getAdapter().getItem(posicao);
clientes = c.getString(1).toString();
}

public void onNothingSelected(AdapterView parent) {

}
});

e por fim alterei a parte que te pedi ctv.put("cliente", clientes);





coloque o logcat no click do botao depois do

(...)

if(db.insert ("venda", "_id", ctv) > 0 )
Log.d("ctv", ctv.toString);
(...)

e poste aqui o resultado




o resultado é esse produto=null cliente=null






agora coloque um logcat

(...)
c.getString(1).toString();
Log.d("clientes", clientes);
(...)




nesse nao aparece nada nao aparece no log




vc nao axa melhor me ajudar plo skype?
se quiser me add ai pdallanora






estranho.... vc adicionou os dados no cliente....

qdo eu chegar em ksa.. eu te ajudo.....




sim adicionei certinho

que horas vc chega?




andre, poderia me ajudar aqui?





opa patrik

estava viajando , desculpa....

feliz ano novo...

mostre o seu codigo do novavenda.java.. por favor




ola patrik

dê uma olhada neste link

http://androidbrasilprojetos.org/android/introducao-a-banco-de-dados-android-parte-3-com-simplecursoradapter/






se vc achar muito complicado este exemplo tem este aki...

http://helpdev.com.br/2012/01/23/android-criando-um-listview-personalizado/




bom dia andre feliz ano novo
nao respondi ontem porque por ventura passei mal o dia todo, nem pude ir trabalhar
vou lhe mandar meu codigo completo para voce dar uma olhada acho que é melhor do que te mandar apenas a classe NovaVenda


http://rlsystem.com.br/forum/disco/uploads/a0d85f27d0c3b1564a15b284bbc59431-Ibr- copia salva.zip




eu tava dando uma olhado em alguns artigos e encontrei bastante gente que utiliza esse codigo pra fazer a inserção de dados do spinner no db

String sql = "INSERT INTO vendas (produto, preco) VALUES ('"
// spNome.getContext().toString() "','"
spinnerProduto "','"
spinnerCliente "')";
db.execSQL(sql);


sera que no meu caso não é assim que deve ser feito também?




O que vc acha?




Olá Patrick

Por que você não pega os itens dele, faz um loop e joga via comando insert.

É igual fazer um loop no Adapter dele, assim como no ListView.




e como eu faço isso Rafael?




Patrick

Da uma olhadinha lá no curso de Android Online e principalmente o Android Best Practices, que vai dar uma ótima noção de como trabalhar com isso.

Abaixo tem um código, tenta adaptar de acordo com o que tu precisa, ali ele varre um spinner e vai pegando os itens. Dentro do for você pode fazer o insert. Para pegar o item. Veja no exemplo


Spinner s = (Spinner) findViewById(R.id.spinner_id);
for(i=0; i < adapter.getCount(); i++) {
// Pegar o nome do item
String nome = adapter.getItem(i).toString();
// Em baixo faz teu insert usando o rawQuery do SqliteDatabase.

}




Perfeito Rafael, você me deu uma otima ideia e deu certo muito obrigado