Querying database works with static string - just need to ask the user

what they're searching for now
This commit is contained in:
ganome 2025-01-31 10:03:51 -07:00
parent bde8026eca
commit aee543a7b4
Signed by untrusted user who does not match committer: Ganome
GPG Key ID: 944DE53336D81B83
2 changed files with 40 additions and 29 deletions

View File

@ -1,4 +1,13 @@
# Hardware Database
Learning C++ while building a universal hardware database that can be referenced for any machine that
has already been added.
See your machine specs? If not - Add Them with a Pull Request!
Building from source:
Create a new build directory and enter it with `mkdir build && cd build`.
Then run the commands `cmake .. && make`.
The new binary is called hardwareDB.
make sure to copy the hardware.db from the parent directory, or move the new binary into the parent directory.
`mv ../hardware.db .` OR `mv hardwareDB ../` .

View File

@ -11,40 +11,18 @@
// Begin testing of SQLite3
static int createDB(const char* s);
static int createTable(const char* s);
static int searchTable(const char* s, std::string msearch);
static int callback(void* NotUsed, int argc, char** argv, char** azColName);
// static int createTable(const char* s);
int main() {
const char* dir = "hardware.db";
const char* dbFile = "hardware.db";
sqlite3* hardwareDB;
createDB(dir);
// createTable(dir);
/* //Create the CPU classes from the cpulist file
int counter= 0;
auto cpus = genCPUclasses();
for (CPU& cpu: cpus) {
// cpus[counter].HardwareSpecs["model"] = "value";
std::cout << cpu.HardwareSpecs["model"] << " loaded at index: " << counter << std::endl;
counter++;
}
*/
//Testing the new dictionaries
// cout << "Lets try the setCPU function!\n";
// std::cout << "A7800x3d main clock speed is: " << A7800x3d->HardwareSpecs["mainclock"] << std::endl;
// setHardwaremanufacturer(A7800x3d, "AMD");
// setCPUcores(A7800x3d, "cores", 8);
// setCPUthreads(A7800x3d, "threads", 16);
// setCPUmainclock(A7800x3d, "mainclock", "4.8 Ghz");
// setCPUboostclock(A7800x3d, "boostclock", "5.2 ghz");
// cout << "\n\nA7800x3d new main/boost speed is: " << A7800x3d->HardwareSpecs["mainclock"] << "/" << A7800x3d->HardwareSpecs["boostclock"] << endl;
// cout << "A7800x3d manufacturer is: " << A7800x3d->HardwareSpecs["manufacturer"] << "\n\n\n";
createDB(dbFile);
searchTable(dbFile, "7800x3d"); // Replace this string with a variable that is the query grabbed from the user!
system("sleep 1s");
@ -55,7 +33,6 @@ static int createDB(const char* s) {
sqlite3* hardwareDB;
int exit = 0;
exit = sqlite3_open(s, &hardwareDB);
sqlite3_close(hardwareDB);
@ -63,3 +40,28 @@ static int createDB(const char* s) {
return 0;
}
static int searchTable(const char* s, std::string msearch) {
sqlite3* hardwareDB;
int exit = sqlite3_open(s, &hardwareDB);
std::string sql = "SELECT * FROM cpu WHERE model='" + msearch + "';";
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;
}