Я пишу базу данных, которая будет использоваться для игры. Так что в этой базе данных у меня есть таблица PLAYERS
, которая содержит некоторую информацию об игроках в игре. Для одного из столбцов этой таблицы мне нужен список, который будет содержать целые числа (идентификаторы) игроков, которые дружат с текущим игроком. (как список друзей)
Проблема в том, что сначала размер этого списка не определен и изменится (при добавлении или удалении друга), а вторая проблема заключается в том, что sqlite3 позволяет использовать только основные значения, такие как INT, TEXT и др. c. Поэтому мой вопрос заключается в том, как я мог бы добавить такой столбец в мою таблицу и соответствующим образом изменить его (что означает добавление или удаление содержимого из него)?
Я знаю, выполняя поиск, я мог бы добавить вторую таблицу и использовать ее, не используя Я действительно знаю, как это сделать, и я был бы признателен, если бы кто-то мог помочь и направить меня, бросьте его.
Вот код:
std::string sql = "CREATE TABLE IF NOT EXISTS PLAYERS("
"ID INTEGER PRIMARY KEY AUTOINCREMENT, "
"USERNAME TEXT NOT NULL UNIQUE, "
"PASSWORD TEXT NOT NULL, "
"SCORE REAL NOT NULL );";
// here I want to add the column that I am talking about with name of FRIENDS which contains the ID (a list of integers) of the other players
int ret = 0;
char* errMsg;
ret = sqlite3_exec(DB, sql.c_str(), nullptr, 0, &errMsg);
if (ret != SQLITE_OK) {
std::cerr << "Table creation error: " << sqlite3_errmsg(DB) << std::endl;
sqlite3_free(errMsg);
return false;
} else {
std::cout << "Table created successfully." << std::endl;
}
std::ostringstream osql;
osql << "INSERT INTO PLAYERS (USERNAME, PASSWORD, SCORE) VALUES('" << "mra" << "', '" << "12456" << "', " << 20.2 << ");";
std::string sql = osql.str();
int ret = 0;
char* errMsg;
ret = sqlite3_exec(DB, sql.c_str(), nullptr, 0, &errMsg);
if (ret != SQLITE_OK) {
std::cerr << "Insertion error: " << sqlite3_errmsg(DB) << std::endl;
sqlite3_free(errMsg);
return false;
} else {
std::cout << "Insertion was successfull." << std::endl;
}
Спасибо заранее за вашу помощь.