powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / покажите, где ошибка.
6 сообщений из 6, страница 1 из 1
покажите, где ошибка.
    #39350106
aaryzh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пишу код для работы с sqlite базой в dll. Для примера взял скайп. Работаю с таблицей сообщений
База открывается, запрос обрабатывается, исторические данные выводятся. Проблема в том, что, сообщения, который приходят онлайн не отбираются запросом. если выгрузить dll и вызвать снова, то новые сообщения подхватываются.
и еще проверял в Sqlite Expert Personal, сообщени sql запросом в онлайн подхватываются.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
wstring SQL_req ( L"select id, chatname, author, datetime( timestamp, 'unixepoch', 'localtime' ) as timestamp1, body_xml, timestamp from Messages "
 "where chatname = 'live:aaryzhikov1974' and timestamp >= " );

//      SQL_req += L"'";
      _i64tow( curtimer, SQL_1, 10 );
      SQL_req += SQL_1;
      SQL_req += L" order by id";

int sql_ret = sqlite3_prepare16_v2( db, SQL_req.c_str(), -1, &stmt, 0 );
 
 
         if ( ( ret_code == SQLITE_OK ) and ( sql_ret == SQLITE_OK ) )
         {
 
//              int num_col  = sqlite3_column_count( stmt );
 
//              int num_data = sqlite3_data_count( stmt );
              //LogFile << " Отобрано данных  столбцов " << num_col << " строк " << num_data << " \n ";
//              wsprintfW( S2, L" Отобрано данных  столбцов  %d   ", num_col );
//              WriteFileLogW( LogFile, S2 );
 
                ret_code = sqlite3_stmt_busy( stmt );
                sprintf( S1,"%s busy before step? %d\n", sqlite3_sql( stmt ), ret_code );
                WriteFileLog ( LogFile, S1 );
 
                ret_code = sqlite3_step( stmt );
                if ( ( SQLITE_DONE != ret_code ) || ( SQLITE_ROW != ret_code ) )
                {
                    sprintf( S1, "Error: %s\n", sqlite3_errmsg( db ));
                    WriteFileLog ( LogFile, S1 );
//                    exit(1);
                }
                ret_code = sqlite3_stmt_busy( stmt );
                sprintf( S1, "%s busy after step? %d\n", sqlite3_sql(stmt), ret_code );
                WriteFileLog ( LogFile, S1 );
 
              ret_code = sqlite3_reset( stmt );
              if ( SQLITE_OK != ret_code )
              {
                  sprintf( S1, "%s busy after reset? %d\n", sqlite3_sql(stmt), ret_code );
                  WriteFileLog ( LogFile, S1 );
//                  exit(1);
              }
 
              ret_code = sqlite3_stmt_busy( stmt );
              sprintf( S1, "%s busy after reset? %d ", sqlite3_sql(stmt), ret_code );
              WriteFileLog ( LogFile, S1 );
 
              while ( ( ret_code = sqlite3_step( stmt ) ) == SQLITE_ROW ) //пока в бд есть данные происходит считывание
              {
                   sprintf( S1, "ret_code in while %d ", ret_code );
                   WriteFileLog ( LogFile, S1 );
               }
...
Рейтинг: 0 / 0
покажите, где ошибка.
    #39350130
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aaryzhПроблема в том, что, сообщения, который приходят онлайн не отбираются запросом. если выгрузить dll и вызвать снова, то новые сообщения подхватываются.Значит они еще не записаны в базу. Или записаны, но в другую таблицу.
...
Рейтинг: 0 / 0
покажите, где ошибка.
    #39350141
aaryzh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl, в том-то и дело, что Sqlite Expert их тем же запросом их сразу видит, как только сообщение отправлено.
...
Рейтинг: 0 / 0
покажите, где ошибка.
    #39350164
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aaryzh,

Проблема явно не в SQLite, а в приложении. В том же самом соединении происходит переопрос таблицы? Или каждый раз открывается заново? Версии sqlite3.dll одинаковы как для Expert так и для приложения?
...
Рейтинг: 0 / 0
покажите, где ошибка.
    #39350217
aaryzh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VSVLAD,
логика работы такая. В основном приложении с периодом 5 сек происходит вызов функции dll, в ҡоторой открывается база, выполняется запрос, закрывается база, возврашается тело сообщения. новые сообщения sqlite_step не видит и возвращает 101 - done.
...
Рейтинг: 0 / 0
покажите, где ошибка.
    #39350271
aaryzh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VSVLAD,
Спасибо. Натолкнули на мысль и ошибку исправил. Действительно проблемы была в вызывающем приложении - некорректно отрабатывал вызов функции sqlite по событию.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / покажите, где ошибка.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]