using System; using System.Collections.Generic; using System.Configuration; using System.Text; using SuperMap.RealEstate.Web.UI.WebControls; namespace HZQR.Common.Common { /// /// 通用方法 /// public class Common { #region 方法 -> 获得GridView的查询条件 /// /// 获得GridView的查询条件 /// /// SelectMethodParametersArgs /// public static string GetSqlWhereByParameter(SelectMethodParametersArgs e) { string sqlWhere = ""; string whereSqlString = e.WhereSqlString; foreach (var item in e.Parameters) { var key = item.Key; var val = item.Value.ToString(); if (val.StartsWith("%") && val.EndsWith("%")) { whereSqlString = whereSqlString.Replace(":" + key + " ", "'" + val + "' ").Replace(":" + key + ")", "'" + val + "')"); } else { whereSqlString = whereSqlString.Replace(":" + key, val); } } sqlWhere = whereSqlString.TrimStart(' '); if (!string.IsNullOrEmpty(sqlWhere) && !sqlWhere.StartsWith("where")) { sqlWhere = " WHERE " + sqlWhere; } if (sqlWhere.IndexOf("order by") > -1) { sqlWhere = sqlWhere.Substring(0, sqlWhere.IndexOf("order by")); } return sqlWhere; } #endregion #region 方法 -> SQL中拼IN最大表达式数为1000,超过则用OR替换 public static string GetInString(string id, List list) { StringBuilder sb = new StringBuilder(); String returnString = ""; if (list.Count == 0 || null == list) { returnString = sb.Append(id).Append("=''").ToString(); } for (int i = 0; i < list.Count; i++) { if (i == 0) { sb.Append(id); sb.Append(" in ("); } sb.Append("'"); sb.Append(list[i].ToString()); sb.Append("'"); if (i >= 900 && i < list.Count - 1) { if (i % 900 == 0) { sb.Append(") or "); sb.Append(id); sb.Append(" in ("); } else { sb.Append(","); } } else { if (i < list.Count - 1) { sb.Append(","); } } if (i == list.Count - 1) { sb.Append(")"); } } returnString = "(" + sb.ToString() + ")"; return returnString; } #endregion #region 方法 -> 获取上个月第一天和最后一天 //获取上个月第一天 public static DateTime FirstDayOfPreviousMonth(DateTime datetime) { return datetime.AddDays(1 - datetime.Day).AddMonths(-1); } //获取上个月的最后一天 public static DateTime LastDayOfPrdviousMonth(DateTime datetime) { return datetime.AddDays(1 - datetime.Day).AddDays(-1); } #endregion #region 方法 -> 将DateTime类型转换为long类型 /// /// 将DateTime类型转换为long类型 /// /// 时间 /// public static long ConvertDataTimeLong(DateTime dt) { DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); TimeSpan toNow = dt.Subtract(dtStart); long timeStamp = toNow.Ticks; timeStamp = long.Parse(timeStamp.ToString().Substring(0, timeStamp.ToString().Length - 7)); return timeStamp; } #endregion #region 方法 -> 将Long类型转换为DateTime类型 /// /// 将Long类型转换为DateTime类型 /// /// long /// s public static DateTime ConvertLongDateTime(long d) { DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); long lTime = long.Parse(d + "0000000"); TimeSpan toNow = new TimeSpan(lTime); DateTime dtResult = dtStart.Add(toNow); return dtResult; } /// /// 时间戳(毫秒值)String转换为DateTime类型转换 /// /// 毫秒时间戳 /// public static DateTime TicksToDate(string time) { return new DateTime((Convert.ToInt64(time) * 10000) + 621355968000000000); } #endregion #region 方法 -> 解析数字型的日期 /// /// 解析数字型的日期 /// /// 数字型的日期 /// public static string TranslateDateTime(string DateTimeString) { string str = ""; switch (DateTimeString.Length) { case 6: str = DateTimeString.Substring(0, 4) + "/" + DateTimeString.Substring(4, 2); break; case 8: str = DateTimeString.Substring(0, 4) + "/" + DateTimeString.Substring(4, 2) + "/" + DateTimeString.Substring(6, 2); break; default: if (DateTimeString.Length >= 14) { str = DateTimeString.Substring(0, 4) + "/" + DateTimeString.Substring(4, 2) + "/" + DateTimeString.Substring(6, 2) + " " + DateTimeString.Substring(8, 2) + ":" + DateTimeString.Substring(10, 2) + ":" + DateTimeString.Substring(12, 2); } break; } return str; } #endregion #region 方法 -> 将数字型月份转成日期格式(当月第一天) /// /// 将数字型月份转成日期格式(当月第一天) /// /// 月份字符串 /// public static DateTime TranslateMonth(string MonthString) { string str = MonthString.Substring(0, 4) + "-" + MonthString.Substring(4, 2) + "-01"; return DateTime.Parse(str); } #endregion #region 方法 -> 将数字型数据插入到Oracle数据库 /// /// 将数字型数据插入到Oracle数据库 /// /// 数字型数据 /// public static string InsertNumberToOracle(int? data) { if (data != null) { return data.ToString(); } else { return "NULL"; } } /// /// 将数字型数据插入到Oracle数据库 /// /// 字符串数据 /// public static string InsertNumberToOracle(string data) { if (!string.IsNullOrWhiteSpace(data)) { return data; } else { return "NULL"; } } #endregion #region 方法 -> 将日期型数据插入到Oracle数据库 /// /// 将日期型数据插入到Oracle数据库 /// /// 日期型数据 /// public static string InsertDateToOracle(DateTime? data) { if (data != null) { return "TO_DATE('" + data + "','YYYY/MM/DD HH24:MI:SS')"; } else { return "NULL"; } } /// /// 将日期型数据插入到Oracle数据库 /// /// 字符串数据 /// public static string InsertDateToOracle(string data) { if (!string.IsNullOrWhiteSpace(data)) { return "TO_DATE('" + data + "','YYYY/MM/DD HH24:MI:SS')"; } else { return "NULL"; } } #endregion #region 方法 -> 获取字符串中某个字符在第几次出现的位置 /// /// 获取字符串中某个字符在第几次出现的位置 /// /// 字符串 /// 检索字符 /// 搜索起始位置 /// 第几次出现 /// public static int ValueIndexOf(string originValue, char searchValue, int startIndex = 0, uint searchTime = 1) { int position = -1; //判断字符串中是否存在检索字符串 if (originValue.Substring(startIndex).IndexOf(searchValue) > 0) { //将字符串按照originValue进行分组 string[] values = originValue.Substring(startIndex).Split(searchValue); //遍历数组,查找searchValue出现的位置 for (int showTime = 0; showTime < values.Length && showTime < searchTime; showTime++) { position += values[showTime].Length + 1; } } return position; } /// /// 获取字符串中某个字符在第几次出现的位置 /// /// 字符串 /// 检索字符串 /// 搜索起始位置 /// 第几次出现 /// public static int ValueIndexOf(string originValue, string searchValue, int startIndex = 0, uint searchTime = 1) { int position = -1; //判断字符串中是否存在检索字符串 if (originValue.Substring(startIndex).IndexOf(searchValue) > 0) { //将字符串按照originValue进行分组 string[] values = originValue.Substring(startIndex).Split(searchValue); //遍历数组,查找searchValue出现的位置 for (int showTime = 0; showTime < values.Length && showTime < searchTime; showTime++) { position += values[showTime].Length + 1; } } return position; } #endregion #region 方法 -> 更新AppSettings中的键值 /// /// 更新AppSettings中的键值 /// /// 指定键的字符串 /// 指定值的字符串 public static void AddUpdateAppSettings(string key, string value) { var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); var settings = configFile.AppSettings.Settings; if (settings[key] == null) { settings.Add(key, value); } else { settings[key].Value = value; } configFile.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name); } #endregion #region 方法 -> 获取数据表字段查询语句 /// /// 获取数据表字段查询语句 /// /// 用户名称 /// 数据表名 /// public static string GetTableColumnSQL(string OwnerName, string TableName) { string SQLString = string.Format(@"SELECT A.OWNER,A.TABLE_NAME,A.COLUMN_NAME,B.COMMENTS, A.DATA_TYPE,A.CHAR_LENGTH,A.DATA_PRECISION, A.DATA_SCALE,A.NULLABLE,A.DATA_DEFAULT,A.COLUMN_ID FROM DBA_TAB_COLUMNS A LEFT JOIN ALL_COL_COMMENTS B ON A.OWNER = B.OWNER AND A.TABLE_NAME = B.TABLE_NAME AND A.COLUMN_NAME = B.COLUMN_NAME WHERE A.OWNER = '{0}' AND A.TABLE_NAME = '{1}'", OwnerName, TableName); return SQLString; } #endregion } }