Форум: Форум C++Разное
Новые темы: 00
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подключение Sqllite к С++
 
 автор: Quies   (08.03.2009 в 17:21)   письмо автору
 
 

Не получается подключить Sqllite к С++. Среда разработки wxDev C++ под Windows.
С сайта http://www.sqlite.org/ скачал файлы sqlite3.def и sqlite3.dll , но не знаю, как их подключить к программе.
Попробовал так:

#include <cstdlib>
#include <iostream>
#pragma comment(lib,"sqlite3.dll");

using namespace std;


int main(int argc, char *argv[])
{

    cout << "test \n";

    system("PAUSE");
    return EXIT_SUCCESS;
}

Но, что делать с файлом sqlite3.def , не знаю. Где то, прочитал что его нужно преобразовать в файл sqlite3.lib, а потом, подключить, но как, не понимаю.

Так же скачал программу sqlite manager, создал там, таблицу users с полями id,login,password. Поместил файл таблицу в ту же директорию где лежит .exe файл проекта. Как прочитать данные из этой таблицы (файл users.sqllite)?
Если возможно, пример простого скрипта по подключению .dll библиотеки и извлечению допустим одной записи из этой таблицы.

  Ответить  
 
 автор: Quies   (28.02.2010 в 16:55)   письмо автору
 
   для: Quies   (08.03.2009 в 17:21)
 

Тем, не менее. Проблема до сих пор актуальна. Так и не удалось, найти, как подключить sqlite к с++ .
Среда разработки wxDev С++ , но думаю большой разницы не будет, если есть аналог подключения скажем под Visual С++ .

Как я уже писал, с офф. сайта есть на скачку 2 файла sqlite3.def и sqlite3.dll . Задача тем самым сводиться к подключению любой dll , с def файлом , но это мне тоже не удалось.

Пробывал как описано на этой странице. http://www.cyberforum.ru/cpp/thread22030.html

Но тоже не работает, не запускает функции из dll-ки

  Ответить  
 
 автор: cod   (02.06.2010 в 18:44)
 
   для: Quies   (28.02.2010 в 16:55)
 

Скачивай amalgamation packages, первый в разделе Download и подключай sqlite3.c & sqlite3.h в проект. все будет работать. только если у тебя с++ проект, выключи использование precompiled headers для sqlite3.c файла

  Ответить  
 
 автор: ayalon   (26.04.2012 в 23:39)   письмо автору
 
   для: cod   (02.06.2010 в 18:44)
 

Получилось!
Скачиваем с сайта http://www.sqlite.org/download.htmlсамый верхний файл sqlite-amalgamation-3071100.zip(1.30 MiB) .This ZIP archive contains all C source code for SQLite 3.7.11 combined into a single source file. К моменту прочтения Вами этого сообщения версия файла может быть другой. Файлы разжимаете в директорию Вашего проекта (там где находятся Ваши .cpp и .h файлы). Затем, в Visual Studio 2010 после создания проекта MFC application (не console application), добавляем в Ваш .cpp файл #include "sqlite3.h" .
.В Solution Explorer в Header Files добавляем файл sqlite3.h. А в Source Files добавляем sqlite3.c файл.
В Source Files правой кнопкой выбираем property (свойствах) на файле sqlite3.c , и во вкладке C/C++ в- /Precompiled Headers справа в- Precompiled Header выбираем Not Using Precompiled Headers.
В меню программы Visual Studio нажимаем на Project , в открывшейся лесенке в самом низу жмём на Properties Вашего проекта, откроется окно и в самом верху в Configuration выбрать All Configurations. На закладке General строка Use of MFC должна быть включена как Shared DLL, Use of ATL как Not Using ATL, Common Language Runtime как No CLR. Во вкладке C/C++ --> Code Generation --> Runtime Library установить в Multi-Threaded DLL (/MD).
А вот этот код можете смело добавить в Ваш проект:

// This is the callback function to display the select data in the table 
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 _tmain(int argc, char* argv[])
{
sqlite3 *db; // sqlite3 db struct
char *zErrMsg = 0;
int rc;

// Open the test.db file
rc = sqlite3_open("test.db", &db);

if( rc ){
// failed
fprintf(stderr, "Can't open database: %s\n"sqlite3_errmsg(db));

else
{
// success
fprintf(stderr, "Open database successfully\n\n");
}

// ..
// .. after open database
// ..

const char *pSQL[6];

// Create a new myTable in database
pSQL[0] = "create table myTable (FirstName varchar(30), LastName varchar(30), Age smallint)";

// Insert first data item into myTable
pSQL[1] = "insert into myTable (FirstName, LastName, Age) values ('Woody', 'Alan', 45)";

// Insert second data item into myTable
pSQL[2] = "insert into myTable (FirstName, LastName, Age) values ('Micheal', 'Bay', 38)"
;

// Select all data in myTable
pSQL[3] = "select * from myTable";

// Remove all data in myTable
pSQL[4] = "delete from myTable"

// Drop the table from database
pSQL[5] = "drop table myTable";

// execute all the sql statement
for(int i = 0; i < 4; i++)
{
rc = sqlite3_exec(db, pSQL[i], callback, 0, &zErrMsg);
if( rc!=SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
break;
}
}

// ..
// .. before close database
// ..

// Open the test.db file
sqlite3_close(db);

getchar();

return 0;
}

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования