public bool AddPlayerCompanion(VF.SQLPlayerID _PlayerID, VF.SQLUploadID _UploadID, DateTime _UpdateTime, int _CompanionID) { var conn = OpenConnection(); try { using (var cmd = new NpgsqlCommand("INSERT INTO playercompaniontable(playerid, uploadid, updatetime, companionid) VALUES(:PlayerID, :UploadID, :UpdateTime, :CompanionID)", conn)) { cmd.Parameters.Add(new NpgsqlParameter("PlayerID", NpgsqlDbType.Integer)).Value = (int)_PlayerID; cmd.Parameters.Add(new NpgsqlParameter("UploadID", NpgsqlDbType.Integer)).Value = (int)_UploadID; cmd.Parameters.Add(new NpgsqlParameter("UpdateTime", NpgsqlDbType.Timestamp)).Value = _UpdateTime; cmd.Parameters.Add(new NpgsqlParameter("CompanionID", NpgsqlDbType.Integer)).Value = _CompanionID; int rowsAffected = cmd.ExecuteNonQuery(); } return(true); } catch (NpgsqlException ex) { if (ex.Code == "23505") //unique key violation { //Ignore error, this just means the data was already in the DB! return(true); } else { VF_RealmPlayersDatabase.Logger.ConsoleWriteLine("AddPlayerCompanion() Failed to add PlayerID(" + (int)_PlayerID + "), UploadID(" + (int)_UploadID + ") UpdateTime(" + _UpdateTime + ") CompanionID(" + _CompanionID + ")"); VF_RealmPlayersDatabase.Logger.LogException(ex); } } finally { CloseConnection(); } return(false); }
public bool UpsertItemOwner(int _ItemID, int _SuffixID, VF.SQLPlayerID _PlayerID, VF.SQLIngameItemID?_LatestItemInfo = null, DateTime?_DateAquired = null) { if (_LatestItemInfo.HasValue == false) { _LatestItemInfo = new SQLIngameItemID(0); } if (_DateAquired.HasValue == false) { _DateAquired = DateTime.MaxValue; } var conn = OpenConnection(); try { using (var cmd = new NpgsqlCommand("INSERT INTO ItemOwnerTable(ItemID, SuffixID, PlayerID, DateAquired, LatestItemInfo) VALUES(:ItemID, :SuffixID, :PlayerID, :DateAquired, :LatestItemInfo) ON CONFLICT ON CONSTRAINT itemownertable_pkey DO UPDATE SET DateAquired = EXCLUDED.DateAquired, LatestItemInfo = EXCLUDED.LatestItemInfo", conn)) { cmd.Parameters.Add(new NpgsqlParameter("ItemID", NpgsqlDbType.Integer)).Value = _ItemID; cmd.Parameters.Add(new NpgsqlParameter("SuffixID", NpgsqlDbType.Integer)).Value = _SuffixID; cmd.Parameters.Add(new NpgsqlParameter("PlayerID", NpgsqlDbType.Integer)).Value = (int)_PlayerID; cmd.Parameters.Add(new NpgsqlParameter("DateAquired", NpgsqlDbType.Timestamp)).Value = _DateAquired.Value; cmd.Parameters.Add(new NpgsqlParameter("LatestItemInfo", NpgsqlDbType.Integer)).Value = (int)_LatestItemInfo.Value; int affectedRows = cmd.ExecuteNonQuery(); if (affectedRows == 1) { return(true); } } } finally { CloseConnection(); } return(false); }