Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сохранение результата запроса Sqlite в массив 
:(
    Опции темы
Sanderland
Дата 1.12.2011, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 2.3.2009

Репутация: нет
Всего: нет



Здравствуйте. НАчал осваивать SQlite как собственно и Си.

Столкнулся с такой проблемой. При выполнении запроса я могу обработать и вывести на экран результат. А как сохранить его в отдельный массив ??? либо как сравнить результаты с эталоном который я ввел с клавиатуры. ?
PM MAIL   Вверх
newbee
Дата 1.12.2011, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: нет
Всего: 19



Покажи, как ты его выводишь.


--------------------
You're face to face
With man who sold the world
PM   Вверх
Sanderland
Дата 1.12.2011, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 2.3.2009

Репутация: нет
Всего: нет



Эмм... ну просто ввожу данные. Это имя человека, имя группы и номер телефона.
Вообще мне необходимо следующие. 
- просмотр всех номеров телефонов для заданного человека,
– просмотр всех людей в справочнике и для заданной группы людей,

scanf("%s%s%s",&manname,&grname,&telnomber);       // ввод данных

Это сообщение отредактировал(а) Sanderland - 1.12.2011, 16:00
PM MAIL   Вверх
newbee
Дата 1.12.2011, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: нет
Всего: 19



Цитата(Sanderland @  1.12.2011,  16:26 Найти цитируемый пост)
При выполнении запроса я могу обработать и вывести на экран результат.

Цитата(Sanderland @  1.12.2011,  16:48 Найти цитируемый пост)
Эмм... ну просто ввожу данные.
Таки покажи, как ты выводишь результат запроса. Уверена, что невозможно вывести данные предварительно не сохранив их. Показывай давай)


--------------------
You're face to face
With man who sold the world
PM   Вверх
Sanderland
Дата 1.12.2011, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 2.3.2009

Репутация: нет
Всего: нет



Код

         sqlzap="SELECT * FROM tgr";                                                     // запрос
         rc = sqlite3_open("tel_sprav.db", &dbTelspr);                                 // открываю базу
         rc = sqlite3_exec(dbTelspr, sqlzap, callback, NULL, &errmsg);             // выполняю запрос



функция callback

Код

static int callback(void *notused, int coln, char **rows, char **colnm)
{
    /*
        coln - число столбцов в запрашиваемой таблице
        rows - массив значений в записи
        colnm - имена столбцов
    */
    int i;
    static int b = 1;
    // печать названий столбцов

    if (b) // печатать только один раз
    {
        for(i=0; i<coln; i++)
            printf("%s\t", colnm[i]);
        printf("\n");
        b = 0;
    }
    // печать разделителя строк
    for(i=0; i<coln; i++)
        printf("-------\t");
    printf("\n");
    //печать значений
    for(i=0; i<coln; i++)
        printf("%s\t|", rows[i]);
    printf("\n");

    return 0;

} // end callback


Проблема в том что я не могу передать данные из callback в основную программу.
PM MAIL   Вверх
newbee
Дата 1.12.2011, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: нет
Всего: 19



Не можешь, потому что sqllite сама их удаляет?

Прямо внутри callback вызывай функцию-обработчик результатов или функцию-сохранялку результатов, если они тебе нужны потом.


--------------------
You're face to face
With man who sold the world
PM   Вверх
Sanderland
Дата 1.12.2011, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 2.3.2009

Репутация: нет
Всего: нет



Хмм....ТОЧНО!
а не подскажете как ??? а то у меня не получаеться из callback вызвать какую либо функцию :(( Где ее описать нужно ???

как вызвать функцию из static callback и сохранить данные для использования в основной программе ?

Это сообщение отредактировал(а) Sanderland - 1.12.2011, 16:50
PM MAIL   Вверх
newbee
Дата 1.12.2011, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: нет
Всего: 19



Код

void save_sqllite_result(void *notused, int coln, char **rows, char **colnm){
 ...
}

void callback(void *notused, int coln, char **rows, char **colnm){ // rename me
 ...
 save_sqllite_result(notused,coln,rows,colnm);
 ...
}




--------------------
You're face to face
With man who sold the world
PM   Вверх
Sanderland
Дата 1.12.2011, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 2.3.2009

Репутация: нет
Всего: нет



Не получаеться.... функция callback выполняеться только когда лна определена как static. :(
PM MAIL   Вверх
newbee
Дата 1.12.2011, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: нет
Всего: 19



Цитата(Sanderland @  1.12.2011,  18:27 Найти цитируемый пост)
Не получаеться.... функция callback выполняеться только когда лна определена как static. :( 
Такого не бывает. Скорее всего у тебя где-то конфликты имен. Да и что мешает ей оставаться static?


--------------------
You're face to face
With man who sold the world
PM   Вверх
Sanderland
Дата 1.12.2011, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 2.3.2009

Репутация: нет
Всего: нет



Так.. Кажеться я уже близок. smile 

я ток не пойму теперь....

У меня запрос не хочет сохраняться в двумерном массиве.

Код

masStr=rows;


сохраняет только последнюю строчку и то ее можно прочитать только в callback.А если обращаюсь из основной программы, то там кракозябры. Как я понял что-то с указателями напутал. А мне нужна матрица из всей таблицы. Если добавляю счетчик, выбивает из программы

Это сообщение отредактировал(а) Sanderland - 1.12.2011, 20:10
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Базы данных | Следующая тема »


 




[ Время генерации скрипта: 0.0879 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.