Ошибка «Нет такой таблицы» в SQLite Android - PullRequest
1 голос
/ 11 июля 2020

Я пытаюсь разработать программу для своего технологического курса. Но у меня проблемы с android, и я не знаю, как их решить. Если кто-то поможет мне, я буду очень благодарен.

Активность фрагмента «Мой дом»:

@Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        carregaLista();
        registerForContextMenu(listaPedidos);
    }

    private void carregaLista() {
        PedidoDAO dao = new PedidoDAO(getContext());
        List<PedidoDTO> pedidos = dao.buscaPedidos();
        dao.close();

        listaPedidos = (ListView) getView().findViewById(R.id.lista_pedidos);
        ArrayAdapter<PedidoDTO> adapter = new ArrayAdapter<PedidoDTO>(getContext(),  android.R.layout.simple_list_item_1, pedidos);
        listaPedidos.setAdapter(adapter);

        TextView view = (TextView) getView().findViewById(R.id.textview_nao_ha_pedidos);
        String resultadoo = dao.haPedidos();
        if (resultadoo == null){
            view.setText("Não há solicitações cadastradas");
        }
    }
PedidoDAO class:

@Override
    public void onCreate(SQLiteDatabase db) {
        String sql = "CREATE TABLE Pedido(" +
                "id_pedido INTEGER PRIMARY KEY," +
                "nome_solicitante TEXT NOT NULL," +
                "email_solicitante TEXT NOT NULL," +
                "nome_paciente TEXT NOT NULL," +
                "tipo_sanguineo TEXT NOT NULL," +
                "local_internacao TEXT NOT NULL," +
                "estado TEXT NOT NULL," +
                "cidade TEXT NOT NULL," +
                "motivo TEXT NOT NULL," +
                "outras_info TEXT);";
        db.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }

public List<PedidoDTO> buscaPedidos() {
        String sql = "SELECT * FROM Pedido;";
        SQLiteDatabase db = getReadableDatabase();
        Cursor c = db.rawQuery(sql, null);

        List<PedidoDTO> pedidos = new ArrayList<PedidoDTO>();
        while (c.moveToNext()){
            PedidoDTO pedidoDTO = new PedidoDTO();
            pedidoDTO.setId_pedido(c.getLong(c.getColumnIndex("id_pedido")));
            pedidoDTO.setNome_solicitante(c.getString(c.getColumnIndex("nome_solicitante")));
            pedidoDTO.setEmail_solicitante(c.getString(c.getColumnIndex("email_solicitante")));
            pedidoDTO.setNome_paciente(c.getString(c.getColumnIndex("nome_paciente")));
            pedidoDTO.setOutras_info(c.getString(c.getColumnIndex("outras_info")));
            pedidoDTO.setMotivo(c.getString(c.getColumnIndex("motivo")));
            pedidoDTO.setLocal_internacao(c.getString(c.getColumnIndex("local_internacao")));
            pedidoDTO.setCidade(c.getString(c.getColumnIndex("cidade")));
            pedidoDTO.setEstado(c.getString(c.getColumnIndex("estado")));
            pedidoDTO.setTipo_sanguineo(c.getString(c.getColumnIndex("tipo_sanguineo")));

            pedidos.add(pedidoDTO);
        }
        c.close();
        return pedidos;
    }

Когда я пытаюсь войти в систему, LogCat показывает следующее:

2020-07-11 13: 19: 00.642 2686-2686 / br.com.app.hemosis E / SQLiteLog: (1) нет такой таблицы: Pedido 2020-07-11 13: 19: 00.650 2686-2686 / br.com.app.hemosis E / Android Время выполнения: FATAL EXCEPTION: основной процесс: br.com.app.hemosis, PID: 2686 android .database.sqlite. SQLiteException: такой таблицы нет: Pedido (код 1 SQLITE_ERROR [1]): при компиляции: SELECT * FROM Pedido;

OBS: я бразилец и не очень хорошо знаю английский sh. Извините за грамматические ошибки.

1 Ответ

1 голос
/ 11 июля 2020

В классе PedidoDAO replcae oncreate () с ограничителем

public PedidoDAO(Context context_)
{
     SQLiteDatabase db = getReadableDatabase();
     String sql = "CREATE TABLE Pedido(" +
            "id_pedido INTEGER PRIMARY KEY," +
            "nome_solicitante TEXT NOT NULL," +
            "email_solicitante TEXT NOT NULL," +
            "nome_paciente TEXT NOT NULL," +
            "tipo_sanguineo TEXT NOT NULL," +
            "local_internacao TEXT NOT NULL," +
            "estado TEXT NOT NULL," +
            "cidade TEXT NOT NULL," +
            "motivo TEXT NOT NULL," +
            "outras_info TEXT);";
    db.execSQL(sql);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...