Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подключение 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   Вверх
benefaktor
Дата 12.11.2009, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



как подключится к бд с паролем? если просто указывать пароль в connectionstring пишет что database encrypted?
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

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

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


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

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


 




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


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

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