SQLite rawQuery Выберите столбцы, названия которых являются действительными числами

У меня есть таблица, столбцы которой имеют номера:

Название таблицы "Valores"

id Nombre 11 18 12,3
01 Хуан 10 08 15
02 Роза 23 51 61
03 Пепе 35 18 11

Я хочу узнать сумму, которую вы выбрали любое имя в столбце. Примером для Розы в столбце 12.3 является 61. Я сделал следующие заявления:

columna = (EditText) findViewById(R.id.eT_columna);
valor = (EditText) findViewById(R.id.eT_valor);
String stColumna = columna.getText().toString();

    public void consulta (View v){

       //Determinación del valor
        Cursor fila_valores = bd_valores.rawQuery(
                "select "+ stColumna + " from Valores where Nombre", null);
        if (fila_valores.moveToFirst()) {
            valor.setText(fila_valores.getString(0));
        }
        bd_valores.close();
    }

запустить приложение получаю в результате 12.3 (правильное значение 61). В чем моя ошибка? Спасибо (извините за мой английский)

3 ответа

Решение

Я нашел решение проблемы:

columna = (EditText) findViewById(R.id.eT_columna);
Nombre = (EditText) findViewById(R.id.eT_Nombre);
valor = (EditText) findViewById(R.id.eT_valor);
String stColumna = columna.getText().toString();
String stNombre = Nombre.getText().toString();

    public void consulta (View v){

       //Determinación del valor
        Cursor fila_valores = bd_valores.rawQuery(
                "select "+ '"' + stColumna +'"'+ " from Valores where Nombre=" + "'"+stNombre+"'", null);
        if (fila_valores.moveToFirst()) {
            valor.setText(fila_valores.getString(0));
        }
        fila_valores.close();
    }

Спасибо за помощь.

SELECT 12.3

выбирает числовой литерал 12.3 а не колонна 12.3, Чтобы выбрать столбец, укажите идентификатор:

SELECT "12.3"

Пример:

sqlite> create table a("12.3");
sqlite> insert into a select 45.6;
sqlite> select 12.3 from a;
12.3
sqlite> select "12.3" from a;
45.6

Кроме того, ваш where Nombre довольно бессмысленно как таковое.

Вы забыли указать значение условия (например, Rosa) в запросе.

select "+ stColumna + " from Valores where Nombre = 'Rosa'
Другие вопросы по тегам