/// <summary> /// 查询是否有重复的动画信息(新规) /// </summary> /// <param name="anime"></param> /// <returns></returns> public Animation SearchRepeatAnimeInfo(Animation anime, AnimeCommand.Command ctr) { return dao.SearchRepeatAnimeInfo(anime, ctr); }
/// <summary> /// 通过动画No查找动画信息 /// </summary> /// <param name="animeNo"></param> /// <returns></returns> public Animation GetAnimeFromAnimeNo(string animeNo) { string sqlcmd = @"SELECT TOP 1 * FROM {0} WHERE ANIME_NO = @animeNo AND ENABLE_FLG = 1 "; Collection<DbParameter> paras = new Collection<DbParameter>(); paras.Add(new SqlParameter("@animeNo", animeNo)); DataSet ds = DbCmd.DoSelect(string.Format(sqlcmd, CommonConst.TableName.T_ANIME_TBL), paras); if (ds.Tables[0].Rows.Count == 0) { return null; } Animation anime = new Animation(); anime.No = ds.Tables[0].Rows[0][0].ToString(); anime.CNName = ds.Tables[0].Rows[0][1].ToString(); anime.JPName = ds.Tables[0].Rows[0][2].ToString(); anime.Nickname = ds.Tables[0].Rows[0][3].ToString(); anime.status = Convert.ToInt32(ds.Tables[0].Rows[0][4]); anime.original = Convert.ToInt32(ds.Tables[0].Rows[0][5]); anime.playInfoList = this.GetPlayInfoListFromAnimeNo(anime.No); anime.characterList = this.GetCharacterListFromAnimeNo(anime.No); return anime; }
/// <summary> /// 删除选中单元格所在行的动画、角色、播放信息 /// </summary> public void DeleteSelectedRowsAnimeInfo() { if (AnimationDataGridview.SelectedCells.Count == 0) { MsgBox.Show(MSG_COMMON_002); return; } DialogResult res = MsgBox.Show(MSG_MAIN_001); if (res == DialogResult.Yes) { try { List<string> SelectedRowsAnimeNoList = GetSelectedRowsAnimeNoList(); foreach (string animeNo in SelectedRowsAnimeNoList) { Animation anime = new Animation(animeNo); anime.Delete(); } MsgBox.Show(MSG_COMMON_003); DataGridViewReload(); } catch (Exception ex) { MsgBox.Show(MSG_COMMON_001, ex.Message); } } }
/// <summary> /// 查询是否有重复的动画信息 /// </summary> /// <param name="anime"></param> /// <returns>重复的动画信息,如无则为null</returns> public Animation SearchRepeatAnimeInfo(Animation anime, AnimeCommand.Command ctr) { string sqlcmd = @"SELECT * FROM {0} WHERE ANIME_NO = @animeNo OR ANIME_CHN_NAME = @animeCNName OR ANIME_JPN_NAME = @animeJPName OR ANIME_NN = @nickname"; Collection<DbParameter> paras = new Collection<DbParameter>(); paras.Add(new SqlParameter("@animeNo", anime.No)); paras.Add(new SqlParameter("@animeCNName", anime.CNName)); paras.Add(new SqlParameter("@animeJPName", anime.JPName)); paras.Add(new SqlParameter("@nickname", anime.Nickname)); DataSet ds = DbCmd.DoSelect(string.Format(sqlcmd,CommonConst.TableName.T_ANIME_TBL), paras); if (ds.Tables[0].Rows.Count == 0) { return null; } if (ctr == AnimeCommand.Command.Update && ds.Tables[0].Rows[0][0].ToString().Equals(anime.No)) { return null; } Animation repeatAnime = new Animation(); repeatAnime.No = ds.Tables[0].Rows[0][0].ToString(); repeatAnime.CNName = ds.Tables[0].Rows[0][1].ToString(); repeatAnime.JPName = ds.Tables[0].Rows[0][2].ToString(); repeatAnime.Nickname = ds.Tables[0].Rows[0][3].ToString(); return repeatAnime; }
/// <summary> /// 更新动画信息 /// </summary> /// <param name="anime"></param> /// <returns></returns> public bool UpdateAnime(Animation anime) { #region 播放信息更新 //所有既存该动画的播放信息 string sql1 = @"SELECT PLAYINFO_ID FROM {0} WHERE ANIME_NO = @animeNo"; Collection<DbParameter> paras1 = new Collection<DbParameter>(); paras1.Add(new SqlParameter("@animeNo",anime.No)); DataSet ds1 = DbCmd.DoSelect(string.Format(sql1, CommonConst.TableName.T_PLAYINFO_TBL), paras1); List<int> ToDelPlayinfoIds = new List<int>(); foreach (DataRow dr in ds1.Tables[0].Rows) { if (dr[0].ToString().Equals(string.Empty)) { continue; } ToDelPlayinfoIds.Add(Convert.ToInt32(dr[0])); } //播放信息全走查确认,更新 foreach (PlayInfo pInfo in anime.playInfoList) { //确认播放是否存在 string sql = @"SELECT PLAYINFO_ID FROM {0} WHERE PLAYINFO_ID = @playinfoID AND ANIME_NO = @animeno "; Collection<DbParameter> paras = new Collection<DbParameter>(); paras.Add(new SqlParameter("@playinfoID", pInfo.ID)); paras.Add(new SqlParameter("@animeno", anime.No)); try { DataSet ds = DbCmd.DoSelect(string.Format(sql, CommonConst.TableName.T_PLAYINFO_TBL), paras); if (ds.Tables[0].Rows.Count > 0 && Convert.ToInt32(ds.Tables[0].Rows[0][0]) == pInfo.ID) { pInfo.Update(); //将已更新的播放信息从待删除列表中移除 if (ToDelPlayinfoIds.Contains(pInfo.ID)) { ToDelPlayinfoIds.Remove(pInfo.ID); } } else { pInfo.Insert(); } } catch (Exception ex) { throw ex; } } //删除更新后不存在的播放信息 foreach(int toDelPlayinfoId in ToDelPlayinfoIds) { PlayInfo pInfo = new PlayInfo(toDelPlayinfoId, anime.No); pInfo.Delete(); } #endregion #region 角色信息更新 //所有既存该动画的角色信息 string sql2 = @"SELECT CHARACTER_NO FROM {0} WHERE ANIME_NO = @animeNo "; Collection<DbParameter> paras2 = new Collection<DbParameter>(); paras2.Add(new SqlParameter("@animeNo", anime.No)); DataSet ds2 = DbCmd.DoSelect(string.Format(sql2, CommonConst.TableName.T_CHARACTER_TBL), paras2); List<string> ToDelCharacterNos = new List<string>(); foreach (DataRow dr in ds2.Tables[0].Rows) { if (dr[0].ToString().Equals(string.Empty)) { continue; } ToDelCharacterNos.Add(dr[0].ToString()); } //角色信息全走查确认,更新 foreach (Character cInfo in anime.characterList) { string sql = @"SELECT CHARACTER_NO FROM {0} WHERE CHARACTER_NO = @characterNo"; Collection<DbParameter> paras = new Collection<DbParameter>(); paras.Add(new SqlParameter("@characterNo", cInfo.No)); try { DataSet ds = DbCmd.DoSelect(string.Format(sql, CommonConst.TableName.T_CHARACTER_TBL), paras); if (ds.Tables[0].Rows.Count > 0 && ds.Tables[0].Rows[0][0].ToString().Equals(cInfo.No)) { cInfo.Update(); //将已更新的角色信息从待删除列表中移除 if (ToDelCharacterNos.Contains(cInfo.No)) { ToDelCharacterNos.Remove(cInfo.No); } } else { cInfo.Insert(); } } catch (Exception ex) { throw ex; } } //删除更新后不存在的播放信息 foreach (string toDelCharacterNo in ToDelCharacterNos) { Character cInfo = new Character(toDelCharacterNo); cInfo.Delete(); } #endregion #region 基本信息更新 //动画信息插入 string sqlcmd = @"UPDATE {0} SET ANIME_CHN_NAME = @animeCNName ,ANIME_JPN_NAME = @animeJPName ,ANIME_NN = @animeNickName ,STATUS = @status ,ORIGINAL = @original ,LAST_UPDATE_DATETIME = GETDATE() WHERE ANIME_NO = @animeNo "; Collection<DbParameter> paras0 = new Collection<DbParameter>(); paras0.Add(new SqlParameter("@animeNo", anime.No)); paras0.Add(new SqlParameter("@animeCNName", anime.CNName)); paras0.Add(new SqlParameter("@animeJPName", anime.JPName)); paras0.Add(new SqlParameter("@animeNickName", anime.Nickname)); paras0.Add(new SqlParameter("@status", anime.status)); paras0.Add(new SqlParameter("@original", anime.original)); try { DbCmd.DoCommand(string.Format(sqlcmd, CommonConst.TableName.T_ANIME_TBL), paras0); return true; } catch (Exception ex) { throw ex; } #endregion }
/// <summary> /// 插入动画信息以及对应的播放、角色信息 /// </summary> /// <param name="anime"></param> public bool InsertAnime(Animation anime) { //动画播放信息插入 if (anime.playInfoList.Count > 0) { foreach (PlayInfo pInfo in anime.playInfoList) { try { pInfo.Insert(); } catch (Exception ex) { throw ex; } } } //角色信息插入 if (anime.characterList.Count > 0) { foreach (Character cInfo in anime.characterList) { try { cInfo.Insert(); } catch (Exception ex) { throw ex; } } } //动画信息插入 string sqlcmd = @"INSERT INTO {0} ( ANIME_NO ,ANIME_CHN_NAME ,ANIME_JPN_NAME ,ANIME_NN ,STATUS ,ORIGINAL ,ENABLE_FLG ,LAST_UPDATE_DATETIME ) VALUES ( @animeNo ,@animeCNName ,@animeJPName ,@animeNickName ,@status ,@original ,1 ,GETDATE() )"; Collection<DbParameter> paras = new Collection<DbParameter>(); paras.Add(new SqlParameter("@animeNo", anime.No)); paras.Add(new SqlParameter("@animeCNName", anime.CNName)); paras.Add(new SqlParameter("@animeJPName", anime.JPName)); paras.Add(new SqlParameter("@animeNickName", anime.Nickname)); paras.Add(new SqlParameter("@status", anime.status)); paras.Add(new SqlParameter("@original", anime.original)); try { DbCmd.DoCommand(string.Format(sqlcmd, CommonConst.TableName.T_ANIME_TBL), paras); return true; } catch (Exception ex) { throw ex; } }