· 6 years ago · Jan 25, 2020, 05:54 AM
1#include <iostream>
2#include <sqlite3.h>
3#include <vector>
4
5void dbInsertPlayer(sqlite3* db, std::string playerName, int id);
6
7static int callback(void* data, int rows, char** argv, char** azColName);
8
9void dbDeletePlayer(sqlite3* db, int id);
10
11int main(int argc, char** argv){
12 sqlite3* DB;
13 char* errormsg;
14 int status = 0;
15 status = sqlite3_open("players.db", &DB);
16
17 if (status != SQLITE_OK) {
18 std::cout << "DB unable to open: " << sqlite3_errmsg(DB) << std::endl;
19 return (-1);
20 }
21 std::cout << "Opened Database Successfully!" << std::endl;
22
23 std::string createTable = "CREATE TABLE IF NOT EXISTS PLAYERS("
24 "UserId INT PRIMARY KEY NOT NULL,"
25 "UserName TEXT NOT NULL,"
26 "Points INT NOT NULL,"
27 "GamePlayed INT NOT NULL,"
28 "GamesWon INT NOT NULL);";
29
30 int createTableStatus = sqlite3_exec(DB, createTable.c_str(), NULL, 0, &errormsg);
31
32 if (createTableStatus != SQLITE_OK){
33 std::cout << "Table could not be created" <<sqlite3_errmsg(DB) << std::endl;
34 }
35
36 dbInsertPlayer(DB, "billy", 1);
37 dbInsertPlayer(DB, "bobby", 2);
38 std::cout << "After Insert\n";
39 std::string selectBilly = "SELECT * FROM PLAYERS";
40 std::string data("callback function");
41 int selectStatus = sqlite3_exec(DB, selectBilly.c_str(), callback, (void*)data.c_str(), &errormsg);
42 if (selectStatus != SQLITE_OK){
43 std::cout << "Select could not be performed: " <<sqlite3_errmsg(DB) << std::endl;
44 }
45 dbDeletePlayer(DB, 1);
46
47 std::cout << "After Delete\n";
48
49 selectStatus = sqlite3_exec(DB, selectBilly.c_str(), callback, (void*)data.c_str(), &errormsg);
50 if (selectStatus != SQLITE_OK){
51 std::cout << "Select could not be performed: " <<sqlite3_errmsg(DB) << std::endl;
52 }
53
54 sqlite3_close(DB);
55 return (0);
56}
57
58void dbInsertPlayer(sqlite3* db, std::string playerName, int id){
59 std::string insertStatement = std::string("INSERT INTO PLAYERS VALUES ("+ std::to_string(id) + ", '"+playerName+"', 0, 0, 0);");
60 char* errormsg;
61 int insertStatus = sqlite3_exec(db, insertStatement.c_str(), NULL, 0, &errormsg);
62 if (insertStatus != SQLITE_OK){
63 std::cout << "DB unable to insert: " << sqlite3_errmsg(db) << std::endl;
64 }
65}
66
67static int callback(void* data, int rows, char** argv, char** azColName){
68 int i;
69 fprintf(stderr, "%s: ", (const char*)data);
70 for (i = 0; i < rows; i++) {
71 printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
72 }
73 printf("\n");
74 return 0;
75}
76
77void dbDeletePlayer(sqlite3* db, int id){
78 std::string deleteStatement = "DELETE FROM PLAYERS WHERE UserID = " + std::to_string(id) + ";";
79 char* errorMsg;
80 int deleteStatus = sqlite3_exec(db, deleteStatement.c_str(), callback, NULL, &errorMsg);
81 if (deleteStatus != SQLITE_OK){
82 std::cout << "delete unsucessful: " << errorMsg << std::endl;
83 }
84}