Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Inserir Aluno

Quando faço a inserção de Aluno no banco o Id sempre permanece com 0 (Zero). Abaixo o AlunoDAO e a Classe Aluno. Alguem pode de ajudar.

AlunoDAO package br.com.evb.agenda.DAO;

import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper;

import java.util.ArrayList; import java.util.List;

import br.com.evb.agenda.modelo.Aluno;

/* Created by Edgar on 30/05/2017. */

public class AlunoDAO extends SQLiteOpenHelper{

public AlunoDAO(Context context) { super(context, "Agenda", null, 1); }

@Override public void onCreate(SQLiteDatabase db) { String sql = "CREATE TABLE Alunos (id INTEGER PRIMARY KEY, nome TEXT NOT NULL, endereco TEXT, telefone TEXT, site TEXT, nota REAL);"; db.execSQL(sql); }

@Override public void onUpgrade(SQLiteDatabase db, int v1, int v2) { String sql = "DROP TABLE Alunos;"; db.execSQL(sql); onCreate(db); }

public void insere(Aluno aluno) {

SQLiteDatabase db = getWritableDatabase(); ContentValues dados = new ContentValues(); dados.put("nome", aluno.getNome()); dados.put("endereco", aluno.getEndereco()); dados.put("telefone", aluno.getTelefone()); dados.put("site", aluno.getSite()); dados.put("nota", aluno.getNota());

db.insert ("Alunos", null, dados);

}

public List buscaAluno(String sql ) { /String sql = "SELECT FROM Alunos";*/ SQLiteDatabase db = getReadableDatabase(); Cursor c = db.rawQuery(sql, null); List alunos = new ArrayList(); while (c.moveToNext()) { Aluno aluno = new Aluno (); aluno.setId(c.getLong(c.getColumnIndex("nome"))); aluno.setNome(c.getString(c.getColumnIndex("nome"))); aluno.setEndereco(c.getString(c.getColumnIndex("endereco"))); aluno.setTelefone(c.getString(c.getColumnIndex("telefone"))); aluno.setSite(c.getString(c.getColumnIndex("site"))); aluno.setNota(c.getDouble(c.getColumnIndex("nota")));

alunos.add(aluno); } c.close(); return alunos; }

public void deleta(Aluno aluno) { SQLiteDatabase db = getWritableDatabase(); String[] params = {aluno.getId().toString()}; db.delete("Alunos", "id = ?", params); } }

Classe Aluno package br.com.evb.agenda.modelo;

/* Created by Edgar on 29/05/2017. */

public class Aluno { private Long id; private String nome; private String endereco; private String telefone; private String site; private double nota;

public Long getId() { return id; }

public void setId(long id) { this.id = id; }

public String getNome() { return nome; }

public void setNome(String nome) { this.nome = nome; }

public String getEndereco() { return endereco; }

public void setEndereco(String endereco) { this.endereco = endereco; }

public String getTelefone() { return telefone; }

public void setTelefone(String telefone) { this.telefone = telefone; }

public String getSite() { return site; }

public void setSite(String site) { this.site = site; }

public double getNota() { return nota; }

public void setNota(double nota) { this.nota = nota; }

@Override public String toString() { return getId() + " - " + getNome(); } }

1 resposta
solução!

Você pode criar o campo "id" como "AUTOINCREMENT" olhe o link https://www.tutorialspoint.com/sqlite/sqlite_using_autoincrement.htm

ex:

@Override public void onCreate(SQLiteDatabase db) { String sql = "CREATE TABLE Alunos (id INTEGER PRIMARY KEY AUTOINCREMENT, nome TEXT NOT NULL, endereco TEXT, telefone TEXT, site TEXT, nota REAL);";