Форум программистов, компьютерный форум CyberForum.ru

SQLite Блокровка/разблокировка - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Экспорт двухмерного массива в JPEG / BMP (график) http://www.cyberforum.ru/cpp-beginners/thread918493.html
Уважаемые форумчане, Предисловие: есть программа, которые делает определенные итерационные расчеты и на каждой итерации выдает пачку txt файлов - в каждом из который содержатся данные о величине той или иной физической величины в определенной точке пространства (проекции - т.е. двухмерный вид) Что хочется получить в результате: Чтобы кроме txt-файлов программа сохраняла уже...
C++ Элементы Комбинаторики Даны натуральные числа a1,...a10. Предположим что имеется 10 монет достоинством a1,...,a10. Обозначим через bk число способов, которыми можно выплатить сумму k, т.е. bk - число решений уравнения a1x1+a2x2+...+a10x10=k, где xi может принимать целые неотрицательные значения. получить b0,...,b20. #include "stdio.h" #include <locale.h> #include <math.h> int main() {... http://www.cyberforum.ru/cpp-beginners/thread918466.html
C++ оооочень странно не выполняется условие
bool c = true; if(c == true) { cout << "w" << endl; loading(); c = false; } этот код должен выполнятся вроде бы 1 раз, но он выполняется постоянно.
Компилятор ругается на fopen C++
#include "stdafx.h" #include <iostream> #include <stdio.h> using namespace std; int main() { FILE *f = fopen("D:\lab.txt","r"); //вот тут вылазит //warning C4129: 'l' : unrecognized character escape sequence //я думала вообще что надо писать "rt", но на него тоже ругается, не могу понять(
C++ Блин почему выдает ошибку, исправьте пож http://www.cyberforum.ru/cpp-beginners/thread918452.html
Блин почему выдает ошибку, исправьте пож #include <iostream> #include <conio.h> using namespace std; class Bus { public: int number;
C++ Шаблон класса stack вопрос на похожую тему: Создал шаблон класса стек Stack < T >. Помещаю в стек и извлекаю из него для печати данные типа: int, char и определенный мною класс Rational (дробь). (для Rational есть перегреженная операция передачи в поток). Всё это работает. Теперь хочу получить доступ к отдельным полям Rational внутри функции Show(). Но компилятор не видит в подставляемом типе Т ... подробнее

Показать сообщение отдельно
Avazart
 Аватар для Avazart
6904 / 5144 / 253
Регистрация: 10.12.2010
Сообщений: 22,621
Записей в блоге: 17
05.07.2013, 23:16  [ТС]     SQLite Блокровка/разблокировка
Возвращает :
unable to close due to unfinalized statements or unfinished backups
Добавлено через 2 минуты
Что-то не могу понять где ошибка

Код класса обвертки ( код С++Builder)
Кликните здесь для просмотра всего текста
C++
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
//---------------------------------------------------------------------------
namespace My{
//---------------------------------------------------------------------------
class SQLite
{
   String FError;
   String FResult;
   char *error;
 
   bool   FOpen;
   sqlite3 *db;
 
   public:
    SQLite():FError(""),FOpen(0),error(0),db(0){};
    ~SQLite();
 
    bool Open(String Path);
    bool Exists(String SiteId);
    bool Insert(const My::Subject& Subject);
 
    bool View(TStringGrid* SG);
 
    bool  IsOpen() { return FOpen;  }
    String Error() { return FError; };
    String Result(){ return FResult;};
    bool Close();
};
//-----------------------------End My:: -------------------------------------
}
//---------------------------------------------------------------------------


Кликните здесь для просмотра всего текста
C++
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
//---------------------------------------------------------------------------
bool My::SQLite::Open(String Path)
{
  if(FOpen) return false;
 
  int res = sqlite3_open(UTF8String(Path).c_str(), &db);
  if( res )
    {
      FError= UTF8String(sqlite3_errmsg(db));
      sqlite3_close(db);
      return false;
    }
  else  FOpen= true;
 
return  true;
}
//---------------------------------------------------------------------------
bool My::SQLite::Insert(const My::Subject& Subject)
{
  UTF8String Query=
    L"INSERT INTO \"main\".\"Subjects\" \
   (Id,SiteId,Subject,Author,Reference)\
    VALUES (NULL,'"+Subject.SiteId    +L"','"+
                    Subject.Name      +L"','"+
                    Subject.Author    +L"','"+
                    Subject.Reference +L"')";
 
  int res = sqlite3_exec(db,Query.c_str(),0, 0, &error);
 
  if( res!=SQLITE_OK )
    {
      FError= UTF8String(error);
      sqlite3_free(error);
      return false;
    }
 
return  true;
}
//---------------------------------------------------------------------------
bool My::SQLite::Exists(String SiteId)
{
  sqlite3_stmt *statement;
 
  UTF8String Query=
      L"SELECT  EXISTS(SELECT * FROM  Subjects WHERE SiteId ='"+SiteId+L"')";
 
  int res = sqlite3_prepare(db, Query.c_str(), -1, &statement,0);
  if( res!=SQLITE_OK )
    {
      //FError= UTF8String(error);
      //sqlite3_free(error);
      FError= UTF8String(sqlite3_errmsg(db));
      return false;
    }
 
  sqlite3_step(statement);
  FResult = (char*)sqlite3_column_text(statement,0);
 
return  true;
}
//---------------------------------------------------------------------------
bool My::SQLite::View(TStringGrid* SG)
{
  sqlite3_stmt *statement;
 
  UTF8String Query=
      L"SELECT * FROM Subjects  ORDER BY Id LIMIT 100";
 
  int res = sqlite3_prepare(db, Query.c_str(), -1, &statement,0);
  if( res!=SQLITE_OK )
    {
      FError= UTF8String(sqlite3_errmsg(db));
      return false;
    }
 
  for(int r=0; r<100; ++r)
    {
      if( sqlite3_step(statement)==SQLITE_DONE) break;
 
      String Text;
 
      int col_count= sqlite3_column_count(statement);
      for(int c=0; c<col_count; ++c)
        {
          if(c>=2 && c<=4)
            {
              Text+= UTF8String((char*)sqlite3_column_text(statement,c));
              SG->Cells[2][r+1] = Text;
              Text+="\n";
            }
          else
            if(c<2)
              SG->Cells[c][r+1] = UTF8String((char*)sqlite3_column_text(statement,c));
           //   else
           //     SG->Cells[3][r+1] = UTF8String((char*)sqlite3_column_text(statement,c));
        }
    }
 
  sqlite3_finalize(statement);
 
return  true;
}
//---------------------------------------------------------------------------
bool My::SQLite::Close()
{
  int res= sqlite3_close(db);
  if( res!=SQLITE_OK )
    {
      FError= UTF8String(sqlite3_errmsg(db));
      return false;
    }
return true;
}
//---------------------------------------------------------------------------
My::SQLite::~SQLite()
{
  //if(FOpen) sqlite3_close(db);
};
//---------------------------------------------------------------------------


Добавлено через 5 минут
Вроде нашел ошибку в методе Exists забыл выполнить sqlite3_finalize()

C++
1
2
3
sqlite3_step(statement);
FResult = (char*)sqlite3_column_text(statement,0);
sqlite3_finalize(statement);
 
Текущее время: 07:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru