hardwaredb/src/main.cpp

105 lines
2.5 KiB
C++
Raw Normal View History

#include <boost/algorithm/string/case_conv.hpp>
#include <cctype>
2025-01-28 10:06:50 -07:00
#include <iostream>
2025-01-30 22:21:42 -07:00
#include <stdio.h>
#include <string>
#include <cctype>
2025-01-30 22:21:42 -07:00
#include <sqlite/command.hpp>
#include <sqlite/result.hpp>
#include <sqlite3.h>
#include <boost/algorithm/string.hpp>
/*
* Implementing SQLite3 on suggestion from MD.rpm - Thanks MD!
*
*/
//Declare all the functions
2025-01-30 23:48:45 -07:00
static int createDB(const char* s);
static int searchTable(const char* s, std::string msearch);
static int callback(void* NotUsed, int argc, char** argv, char** azColName);
2025-01-30 22:21:42 -07:00
// static int createTable(const char* s);
2025-01-28 10:06:50 -07:00
int main() {
const char* dbFile = "hardware.db";
2025-01-30 23:48:45 -07:00
sqlite3* hardwareDB;
2025-01-30 22:21:42 -07:00
std::string msearch;
std::string msearchlower;
createDB(dbFile);
char quit = '&';
char searchby = '&';
while(tolower(quit) != 'q') {
std::cout << "========================\n";
std::cout << "Welcome to the Universal Hardware database!\n";
std::cout << "(S)earch for a part by model name\n";
std::cout << "(Q)uit hardware database\n";
std::cin >> quit;
switch(tolower(quit)) {
case 's':
std::cout << "What would you like to search by?\n";
std::cout << "(M)odel name\n";
std::cout << "(Q)uit\n";
std::cin >> searchby;
switch(tolower(searchby)) {
case 'm':
std::cout << "Enter search string: ";
std::cin >> msearch;
msearchlower = boost::algorithm::to_lower_copy(msearch);
searchTable(dbFile, msearchlower); // Replace this string with a variable that is the query grabbed from the user!
break;
default:
break;
}
break;
case 'q':
break;
// default:
// break;
}
}
// system("sleep 1s");
2025-01-28 10:06:50 -07:00
return 0;
}
2025-01-30 23:48:45 -07:00
static int createDB(const char* s) {
sqlite3* hardwareDB;
int exit = 0;
exit = sqlite3_open(s, &hardwareDB);
sqlite3_close(hardwareDB);
return 0;
}
static int searchTable(const char* s, std::string msearchlower) {
sqlite3* hardwareDB;
int exit = sqlite3_open(s, &hardwareDB);
std::string sql = "SELECT * FROM cpu WHERE model LIKE '%" + msearchlower + "%';";
sqlite3_exec(hardwareDB, sql.c_str(), callback, NULL, NULL);
return 0;
}
static int callback(void* NotUsed, int argc, char** argv, char** azColName) {
// Wrap out ouput so it's easier to read for multiple results
std::cout << "=====================" << std::endl;
for (int i=0; i < argc; i++) {
//column name and value
std::cout << azColName[i] << ": " << argv[i] << std::endl;
}
std::cout << std::endl;
return 0;
}