4
respostas

Android e SqlServer

Olá, tenho uma dúvida em relação a banco de dados e Android. Meu app Agenda não roda, na aula 4 do curso Android I, atividade 4 ele testa a conexão com o BD da aplicação, e suspeito do porque minha aplicação não rodar. Tenho no meu computador instalado o SQL Server Management Studio 2017, no curso ele usa o SQLite, essa diferença de bancos, pode interferir ? Antes do BD meu app rodava normalmente, mas agora não.

4 respostas

Fala ai Murilo, de boa cara ?

Então, tecnicamente isso não deve dar nenhum problema.

Porque o sqlite roda apenas no aparelho, que não tem nenhuma interferencia do seu computador.

Se seu app parou de funcionar precisamos investigar o motivo, pode postar aqui para gente ver o erro :D

Olá Murilo,

o SQLite é o banco de dados mais padrão para usar localmente em aplicações Android. Esse banco é o que vai rodar dentro da sua app, no aparelho do usuário, independente do seu computador.

Apesar de você estar rodando a app em um emulador que está dentro do seu computador, ele não vai usar os programas que você tem instalado na sua máquina, ele vai usar o que é disponibilizado pelo Android. Lembre que o emulador cria uma réplica de um aparelho e vai "simular" os recursos de um dispositivo mobile.

É por isso que usar o SQL Server Management Studio 2017 não vai funcionar: pois o android não tem ele lá dentro ;)

Esse é o código DAO do meu app

public class AlunoDAO extends SQLiteOpenHelper {

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

    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql = "CREATE TABLE AlunosAlura ( 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 i, int i1) {
        String sql = "DROP TABLE IF EXISTS AlunosAlura;";
        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("AlunosAlura", null, dados);
    }

    public List<Aluno> buscaAlunos() {
        String sql = "SELECT * FORM AlunosAlura;";
        SQLiteDatabase db = getReadableDatabase();
        Cursor c = db.rawQuery(sql,null);

        List<Aluno> alunos = new ArrayList<Aluno>();
        while(c.moveToNext())
        {
            Aluno aluno = new Aluno();
            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;
    }
}

Este é o código do formulárioActivity

public class FormularioActivity extends AppCompatActivity {
    private FormularioHelper helper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_formulario);

        helper = new FormularioHelper(this);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu_formulario,menu);

        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId()) {
            case R.id.menu_formulario_ok:
                Aluno aluno = helper.pegaAluno();
                AlunoDAO dao = new AlunoDAO(this);
                dao.insere(aluno);
                dao.close();

                Toast.makeText(FormularioActivity.this, aluno.getNome()+" foi cadastrado !", Toast.LENGTH_SHORT).show();

                finish();
                break;
        }
        return super.onOptionsItemSelected(item);
    }
}

Obrigado Tais. Então devo baixar o SQLite e usá-lo como um driver do projeto ? E se sim, como que importo o arquivo ?