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); }
/// <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); }