Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подключение SQLite 3 к проекту на c++ bulder, подключение sqlite3 к c++ builder 
:(
    Опции темы
IF
  Дата 4.11.2009, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Прочитал темы по sqlite на форуме. 
темки старый, обсуждается старый sqlite. но проблема даже не в версии.

не могу подключить sqlite к проекту на c++ builder в Embarcadero® RAD Studio 2010.
мне необходимо сделать программу, создающую бд и работающую с ней. 

с языком запросов sql знаком. все уперлось в незнание как подключить sqlite3.c и sqlite3.h 
из архива sqlite-amalgamation-3_6_19.zip (скаченного с офф сайта) к проекту 
и начать работать с бд. (хотя бы создать файл бд в той же папке)

(dll за программой таскать не хочу. нужно чтобы все было в 1 файле)
подскажите как это сделать
PM MAIL   Вверх
jonie
Дата 4.11.2009, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



IF, ну "просто добавь воды" - добавь эти файлы в проект и всё будет готово.
рекомендую также посмотреть на проект sqlitepp, это boost надстройка над sqlite, очень даже симпотичная...


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Alexeis
Дата 4.11.2009, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата(IF @  4.11.2009,  15:51 Найти цитируемый пост)
не могу подключить sqlite к проекту на c++ builder в Embarcadero® RAD Studio 2010.

  Говорят через компоненты ZeosDBO можно использовать sqlite нативным для билдера способом (Через DataSource/Query)


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
IF
Дата 4.11.2009, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



создал чистый проект с++
далее с помощью add to project добавил два файла из архива sqlite3.c и sqlite3.h

добавляю текст из примера в программу. дописываю строку argv[i]="if.db"; чтобы создать бд.

Код

//---------------------------------------------------------------------------

#include <vcl.h>
#include <stdio.h>
#include <sqlite3.h>
#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
static int callback(void *NotUsed, int argc, char **argv, char **azColName){
  int i;
  for(i=0; i<argc; i++){
    printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
  }
  printf("\n");
  return 0;
}

int main(int argc, char **argv){
  sqlite3 *db;
  char *zErrMsg = 0;
  int rc;

  if( argc!=3 ){
    fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);
    exit(1);
  }
  argv[1]="if.db"; ////////////########### имя новой дб
  rc = sqlite3_open(argv[1], &db);
  if( rc ){
    fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
    sqlite3_close(db);
    exit(1);
  }
  rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);
  if( rc!=SQLITE_OK ){
    fprintf(stderr, "SQL error: %s\n", zErrMsg);
    sqlite3_free(zErrMsg);
  }
  sqlite3_close(db);
  return 0;
}


если не обращать внимания на printf, которые здесь не нужны, то в папке с программой должна хотя бы создавать сама бд в виде файла if.db. у меня же нет ничего(

p.s.: забыл добавить. я на с++ не кодил до этого, только на php и delphi. но как работать с бд представляю.

Это сообщение отредактировал(а) IF - 4.11.2009, 17:52
PM MAIL   Вверх
Anikmar
Дата 4.11.2009, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

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



А функция main что там делает вместе с формами?
PM MAIL ICQ   Вверх
IF
Дата 4.11.2009, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



взял с примера.
чувствую пример не совсем под builder)
PM MAIL   Вверх
Anikmar
Дата 4.11.2009, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

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



Цитата(IF @  4.11.2009,  19:04 Найти цитируемый пост)
взял с примера.
чувствую пример не совсем под builder)

Это уж точно.
Если работаете с формой поместите то, что вы запихали в main в обработчик нажатия какой-нибудь кнопки.
Саму main уберите - в билдере она в другом модуле находится и создается автоматически. Этот модуль называется также как проект.
PM MAIL ICQ   Вверх
IF
Дата 4.11.2009, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



так здесь int main(int argc, char **argv){
а у меня на копнку void __fastcall TForm1::Button1Click(TObject *Sender)
PM MAIL   Вверх
Anikmar
Дата 4.11.2009, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

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



Цитата(IF @  4.11.2009,  19:17 Найти цитируемый пост)
так здесь int main(int argc, char **argv){
а у меня на копнку void __fastcall TForm1::Button1Click(TObject *Sender) 

Ну и?
Что вас смущает не врубаюсь. Какие параметры функциям передать?
Код

rc = sqlite3_open("тут имя БД я так понимаю", &db);
...
rc = sqlite3_exec(db, "тут оператор SQL как я понял", callback, 0, &zErrMsg);


PM MAIL ICQ   Вверх
IF
Дата 4.11.2009, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



int argc, char **argv
их куда теперь написать?
если прямо в начале тела функции, то при надатии на кнопку выдается ошибка "access violation....".

Код
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  int argc;
  char **argv;
  sqlite3 *db;
  char *zErrMsg = 0;
  int rc;
  argv[1]="if.db";
  rc = sqlite3_open(argv[1], &db);
}


не работает, выдает ошибку. если убрать char **argv, то не знает argv
PM MAIL   Вверх
Anikmar
Дата 5.11.2009, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

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



Цитата(IF @  4.11.2009,  19:31 Найти цитируемый пост)
их куда теперь написать?

Выкините их нафиг - они не нужны.

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

Я же вам пример уже набросал

rc = sqlite3_open(argv[1], &db);

Это просто указатель на строку
PM MAIL ICQ   Вверх
mrbrooks
Дата 5.11.2009, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



Для Билдера можно использовать AnyDAC. 

Хотя я бы использовал dot.Net со всеми вытекающими.  smile 
PM MAIL   Вверх
Anikmar
Дата 6.11.2009, 01:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

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



Цитата(mrbrooks @  5.11.2009,  08:44 Найти цитируемый пост)
Хотя я бы использовал dot.Net со всеми вытекающими.    

А вытекает там на пару гигов...  smile 
PM MAIL ICQ   Вверх
mrbrooks
Дата 6.11.2009, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

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



Цитата(Anikmar @  6.11.2009,  01:22 Найти цитируемый пост)
А вытекает там на пару гигов...

Зря ты так  smile 

ADO.NET вещь достаточно удобная. А в связке с Hibernate вообще выше всех похвал.
PM MAIL   Вверх
Anikmar
Дата 6.11.2009, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

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



Цитата(mrbrooks @  6.11.2009,  08:54 Найти цитируемый пост)
Зря ты так   

ADO.NET вещь достаточно удобная. А в связке с Hibernate вообще выше всех похвал. 


Мое ИМХО к расточительству ресурсов всем известно  smile 

Жаден я не в меру!

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

Говорю, жаден я.  smile 
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

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

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


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

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


 




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


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

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