/// <summary>
        /// 向Studio中填充游戏
        /// </summary>
        /// <param name="studio"></param>
        public static void FillStudioGameSql(Models.Studio.Studio studio, Loader loader)
        {
            using (var sqlConnection = new SqlConnection(ConString))
            {
                // 使用了Target占位符表示目标ID
                var sqlCommand = new SqlCommand("SELECT GameNumber FROM GameInfo WHERE GameStudio = @Target", sqlConnection);
                // 构造Parameter对象
                var targetSqlParameter = new SqlParameter("@Target", SqlDbType.VarChar, 255);
                targetSqlParameter.Value = studio.StudioNumber;
                sqlCommand.Parameters.Add(targetSqlParameter);

                sqlConnection.Open();
                var result = sqlCommand.ExecuteReader();

                while (result.Read())
                {
                    Models.Game.Game game = GameSQLController.ReadGameInfoFromStudioSql(result["GameNumber"].ToString(), studio, loader);

                    if (game.GameIsDeveloping)
                    {
                        studio.AddDevelopingGame(game);
                    }
                    else
                    {
                        studio.AddDevelopedGame(game);
                        // game.StartSales();
                    }
                }

                result.Close();
            }
        }
Пример #2
0
        /// <summary>
        /// 向数据库移除开发关系
        /// </summary>
        /// <param name="game"></param>
        /// <param name="developer"></param>
        public static void DeleteDeveloperRelation(Models.Game.Game game, Models.Staff.Staff developer)
        {
            using (var sqlConnection = new SqlConnection(ConString))
            {
                var sqlCommand = new SqlCommand("DELETE FROM DeveloperRelation WHERE ( DeveloperStaffNumber = "
                                                + ConvertStringToSql(developer.StaffNumber) + "AND DeveloperGameNumber = "
                                                + ConvertStringToSql(game.GameNumber)
                                                + ")", sqlConnection);

                sqlConnection.Open();
                sqlCommand.ExecuteNonQuery();
            }
        }
Пример #3
0
        /// <summary>
        /// 向数据库插入开发关系
        /// </summary>
        /// <param name="game"></param>
        /// <param name="developer"></param>
        public static void InsertDeveloperRelation(Models.Game.Game game, Models.Staff.Staff developer)
        {
            using (var sqlConnection = new SqlConnection(ConString))
            {
                var sqlCommand = new SqlCommand("INSERT INTO DeveloperRelation VALUES ("
                                                + ConvertStringToSql(developer.StaffNumber) + ","
                                                + ConvertStringToSql(game.GameNumber)
                                                + ")", sqlConnection);

                sqlConnection.Open();
                sqlCommand.ExecuteNonQuery();
            }
        }
 protected void ConfirmDevelop_OnClick(object sender, ImageClickEventArgs e)
 {
     try
     {
         Models.Game.Game newGame = new Models.Game.Game(T_GameNumber.Text, T_GameName.Text, PageBase.PagePlayer.PlayerNumber);
         newGame.GameStudioObject = PageBase.PagePlayer.PlayerStudio;
         newGame.AddDeveloper(PageBase.PagePlayer.PlayerStudio.FindStaff(D_Producer.SelectedValue));
         newGame.StartDevelop(int.Parse(T_GameDDL.Text));
         AddButtonPanel.Visible = true;
         AddGamePanel.Visible   = false;
     }
     catch (Exception exception)
     {
         Response.Write("<script>alert('请检查输入!')</script>");
     }
 }
        /// <summary>
        ///     从数据库中读取游戏数据并生成实例,员工信息从工作室中抓取
        /// </summary>
        /// <param name="gameNumber"></param>
        /// <returns></returns>
        public static Models.Game.Game ReadGameInfoFromStudioSql(string gameNumber, Models.Studio.Studio studio, Loader loader)
        {
            Models.Game.Game game = null;

            using (var sqlConnection = new SqlConnection(ConString))
            {
                // 使用了Target占位符表示目标ID
                var sqlCommand = new SqlCommand("SELECT * FROM GameInfo WHERE GameNumber = @Target", sqlConnection);
                // 构造Parameter对象
                var targetSqlParameter = new SqlParameter("@Target", SqlDbType.VarChar, 255);
                targetSqlParameter.Value = gameNumber;
                sqlCommand.Parameters.Add(targetSqlParameter);

                sqlConnection.Open();
                var result = sqlCommand.ExecuteReader();

                if (result.HasRows)
                {
                    result.Read();
                    game = new Models.Game.Game(result["GameNumber"].ToString(),
                                                result["GameName"].ToString(),
                                                int.Parse(result["GamePrice"].ToString()),
                                                int.Parse(result["GameFun"].ToString()),
                                                int.Parse(result["GameArt"].ToString()),
                                                int.Parse(result["GameMusic"].ToString()),
                                                int.Parse(result["GameSales"].ToString()),
                                                result["GameStudio"].ToString(),
                                                (Genres)int.Parse(result["GameGenres"].ToString()),
                                                Convert.ToBoolean(int.Parse(result["GameIsDeveloping"].ToString()))
                                                );
                    game.GameStartDevelopTime  = DateTime.Parse(result["GameStartDevelopTime"].ToString());
                    game.GameFinishDevelopTime = DateTime.Parse(result["GameFinishDevelopTime"].ToString());
                    game.Developers            = StaffSQLController.GetDevelopersListFromStudioSql(game.GameNumber, studio, loader);
                    game.GameStudioObject      = studio;
                }

                result.Close();
            }

            return(game);
        }
        public static void InsertGameInfoSql(Models.Game.Game game)
        {
            using (var sqlConnection = new SqlConnection(ConString))
            {
                var commandStringBuilderFirstPart  = new StringBuilder("INSERT INTO GameInfo (");
                var commandStringBuilderSecondPart = new StringBuilder(") VALUES (");
                var properties = game.GetType().GetProperties();

                // 抓取属性名称生成SQL语句
                var cur = 1;
                foreach (var property in properties)
                {
                    commandStringBuilderFirstPart.Append(property.Name);
                    if (property.PropertyType.Name == "String")
                    {
                        commandStringBuilderSecondPart
                        .Append(ConvertStringToSql((string)game.GetPropertyValue(property.Name)));
                    }
                    else
                    {
                        commandStringBuilderSecondPart.Append((int)game.GetPropertyValue(property.Name));
                    }
                    if (cur++ < properties.Length)
                    {
                        commandStringBuilderFirstPart.Append(", ");
                        commandStringBuilderSecondPart.Append(", ");
                    }
                }

                var command = commandStringBuilderFirstPart + commandStringBuilderSecondPart.ToString() +
                              ")";
                var sqlCommand = new SqlCommand(command, sqlConnection);

                sqlConnection.Open();
                sqlCommand.ExecuteNonQuery();
            }
        }
        /// <summary>
        ///     比对两个Game实例生成SQL语句
        /// </summary>
        /// <param name="origin">旧实例</param>
        /// <param name="target">新实例</param>
        public static void UpdateGameInfoSql(Models.Game.Game origin, Models.Game.Game target)
        {
            // 属性比对,生成的SQL语句只包含要修改的部分
            var properties = origin.GetType().GetProperties();
            var updateList = new List <PropertyInfo>();

            foreach (var property in properties)
            {
                if (!Equals(origin.GetPropertyValue(property.Name), target.GetPropertyValue(property.Name)))
                {
                    updateList.Add(property);
                }
            }

            // 生成SQL语句
            var commandStringBuilder = new StringBuilder("UPDATE GameInfo SET ");

            var cur = 1;

            foreach (var targetProperty in updateList)
            {
                if (targetProperty.PropertyType.Name == "String")
                {
                    commandStringBuilder.Append(targetProperty.Name + " = " +
                                                ConvertStringToSql((string)target
                                                                   .GetPropertyValue(targetProperty.Name)));
                }
                else if (targetProperty.PropertyType.Name == "Genres")
                {
                    commandStringBuilder.Append(targetProperty.Name + " = " +
                                                (int)(Genres)target.GetPropertyValue(targetProperty.Name));
                }

                else if (targetProperty.PropertyType.Name == "Boolean")
                {
                    commandStringBuilder.Append(targetProperty.Name + " = " +
                                                Convert.ToInt32((bool)target.GetPropertyValue(targetProperty.Name)));
                }

                else if (targetProperty.PropertyType.Name == "DateTime")
                {
                    commandStringBuilder.Append(targetProperty.Name + " = " +
                                                ConvertStringToSql(target.GetPropertyValue(targetProperty.Name).ToString()));
                }
                else
                {
                    commandStringBuilder.Append(targetProperty.Name + " = " +
                                                (int)target.GetPropertyValue(targetProperty.Name));
                }
                if (cur++ < updateList.Count)
                {
                    commandStringBuilder.Append(", ");
                }
            }

            commandStringBuilder.Append(" WHERE GameNumber = " + ConvertStringToSql(origin.GameNumber));

            // 执行
            try
            {
                using (var sqlConnection = new SqlConnection(ConString))
                {
                    var sqlCommand = new SqlCommand(commandStringBuilder.ToString(), sqlConnection);

                    sqlConnection.Open();
                    sqlCommand.ExecuteNonQuery();
                }
            }
            // 留了一个Catch,记得处理
            catch (Exception e)
            {
                Debug.WriteLine(e.Message);
                Debug.WriteLine("无变化");
            }
        }