private void RefreshRemarks()
        {
            DataTable result = SqlUtil.Select("[Remark],[Table]",
                                              "Id 序号,Remark 注释,开机时间 对应开机时间,RemarkTime 注释创建时间",
                                              "[Table].序号 = [Remark].Id");

            for (int rowIndex = 0; rowIndex < result.Rows.Count; rowIndex++)
            {
                DataRow r = result.Rows[rowIndex];
                for (int columnIndex = 0; columnIndex < r.ItemArray.Count(); columnIndex++)
                {
                    string itemString = r.ItemArray[columnIndex].ToString();
                    if (UnicodeSaverUtil.IsChineseString(itemString))
                    {
                        string transformResult = Hex2ChiEngString(itemString);
                        r[columnIndex] = transformResult;
                    }
                }
            }
            this.tabControl1.SelectedIndex      = 0;
            this.dataGridViewRemarks.DataSource = result;
            this.dataGridViewRemarks.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.DisplayedCells);
        }
Esempio n. 2
0
        /// <summary>
        /// 将显示的一条转换成可以直接执行的sql字符串
        /// </summary>
        /// <param name="displayedItem">显示在屏幕上的单行文字</param>
        /// <returns></returns>
        private SqlItem GetSqlItemFromDisplayedString(string displayedItem)
        {
            // 直观模式的每条格式
            // 开机时间:2019-12-26 21:31:16.410
            // 关机时间: -- 2019-12-26 21:31:16.410
            if (opState == OutputState.MODERN)
            {
                if (UnicodeSaverUtil.IsChineseString(displayedItem))
                {
                    throw new ArgumentException("直观模式的时间字符串存在非法字符!");
                }

                if (displayedItem.Contains(" -- ") == false) //开机
                {
                    string  time      = displayedItem;
                    string  sqlString = "INSERT INTO [Table](开机时间) VALUES ('@time')".Replace("@time", time);
                    SqlItem item      = new SqlItem(sqlString);
                    return(item);
                }
                else // 关机
                {
                    string time      = displayedItem.Replace(" -- ", "").TrimEnd();
                    string sqlString = "UPDATE [Table] SET 关机时间 = '@time', 时长 = '@time' - 开机时间 WHERE 序号 in (SELECT MAX(序号) FROM[Table]) "
                                       .Replace("@time", time);
                    SqlItem item = new SqlItem(sqlString);
                    return(item);
                }
            }
            // 经典模式的每条格式
            // 开机时间:2019-12-26 21:31:16.410
            // 关机时间:2019-12-26 21:31:16.410
            else if (opState == OutputState.TRADITIONAL)
            {
                if (displayedItem.Contains("开机"))
                {
                    int index = displayedItem.IndexOf(':');
                    if (index == -1)
                    {
                        throw new ArgumentException("有条目不包含:");
                    }
                    string time = displayedItem.Substring(index + 1);
                    if (UnicodeSaverUtil.IsChineseString(time))
                    {
                        throw new ArgumentException("经典模式的时间字符串存在非法字符!");
                    }
                    string  sqlString = "INSERT INTO [Table](开机时间) VALUES ('@time')".Replace("@time", time);
                    SqlItem item      = new SqlItem(sqlString);
                    return(item);
                }
                else if (displayedItem.Contains("关机"))
                {
                    int index = displayedItem.IndexOf(':');
                    if (index == -1)
                    {
                        throw new ArgumentException("有条目不包含:");
                    }
                    string time = displayedItem.Substring(index + 1);
                    if (UnicodeSaverUtil.IsChineseString(time))
                    {
                        throw new ArgumentException("经典模式的时间字符串存在非法字符!");
                    }
                    string sqlString = "UPDATE [Table] SET 关机时间 = '@time', 时长 = '@time' - 开机时间 WHERE 序号 in (SELECT MAX(序号) FROM[Table]) "
                                       .Replace("@time", time);
                    SqlItem item = new SqlItem(sqlString);
                    return(item);
                }
                else
                {
                    throw new ArgumentException("经典模式的时间字符串存在非法字符!");
                }
            }
            // 原始模式
            else if (opState == OutputState.ORIGINAL)
            {
                return(new SqlItem(displayedItem));
            }
            return(null);
        }