Хорошо, я наконец-то получил решение. К сожалению, я должен ответить на свой вопрос ...
Я использовал библиотеку SQLite (http://www.sqlite.org/). Это было немного сложно, потому что документация sqlite немного расплывчата, но я сделал следующее:
- Скачать sqlitedll * .zip - извлечь файлы .def и .dll куда-нибудь.
- Создайте файл lib с помощью команды типа "c: \ program"
files \ micros ~ 1 \ vc98 \ bin \ lib "/def:sqlite3.def". Сделай это из команды
подскажите, в каталоге с файлом .def, с соответствующим
путь к вашему lib.exe. Вам может понадобиться сначала запустить vcvars32.bat, который
также в каталоге bin. Скопируйте полученный .lib в соответствующий
поместите, и установите это как каталог библиотеки в VC ++. (Или сделай это на
на основе проекта.)
- Загрузите файл sqlite-source * .zip и извлеките файл sqlite3.h
изнутри в подходящий каталог. Установите это как каталог включения
в вк ++. (Опять же, вы можете сделать это на основе проекта.)
- В вашем проекте, #include при необходимости, добавьте sqlite3.lib
в свой проект, скопируйте sqlite3.dll в каталог вашего исполняемого файла
или рабочий каталог, и вы должны быть готовы к работе.
Тогда легко использовать запросы без вывода сообщений, но если вы хотите использовать, например, SQL «SELECT», вы можете использовать этот код:
std::string queries;
// A prepered statement for fetching tables
sqlite3_stmt *stmt;
// Create a handle for database connection, create a pointer to sqlite3
sqlite3 *handle;
// try to create the database. If it doesnt exist, it would be created
// pass a pointer to the pointer to sqlite3, in short sqlite3**
int retval = sqlite3_open("local.db",&handle);
// If connection failed, handle returns NULL
if(retval){
System::Windows::Forms::MessageBox::Show("Database connection failed");
return;
}
// Create the SQL query for creating a table
char create_table[100] = "CREATE TABLE IF NOT EXISTS users (uname TEXT PRIMARY KEY,pass TEXT NOT NULL,activated INTEGER)";
// Execute the query for creating the table
retval = sqlite3_exec(handle,create_table,0,0,0);
// Insert first row and second row
queries = "INSERT INTO users VALUES('manish','manish',1)";
retval = sqlite3_exec(handle,queries.c_str(),0,0,0);
queries = "INSERT INTO users VALUES('mehul','pulsar',0)";
retval = sqlite3_exec(handle,queries.c_str(),0,0,0);
// select those rows from the table
queries = "SELECT * from users";
retval = sqlite3_prepare_v2(handle,queries.c_str(),-1,&stmt,0);
if(retval){
System::Windows::Forms::MessageBox::Show("Selecting data from DB Failed");
return ;
}
// Read the number of rows fetched
int cols = sqlite3_column_count(stmt);
while(1){
// fetch a row’s status
retval = sqlite3_step(stmt);
if(retval == SQLITE_ROW){
// SQLITE_ROW means fetched a row
// sqlite3_column_text returns a const void* , typecast it to const char*
for(int col=0 ; col<cols;col++){
const char *val = (const char*)sqlite3_column_text(stmt,col);
System::Windows::Forms::MessageBox::Show(stdstr2systemstr(sqlite3_column_name(stmt,col))+" = "+stdstr2systemstr(val));
}
}
else
if(retval == SQLITE_DONE){
// All rows finished
System::Windows::Forms::MessageBox::Show("All rows fetched");
break;
}
else{
// Some error encountered
System::Windows::Forms::MessageBox::Show("Some error encountered");
return ;
}
}
// Close the handle to free memory
sqlite3_close(handle);
Я ожидаю, что эта информация будет полезна!
Источники: