好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C# 常用公共方法

C# 常用公共方法,具体内容如下

1.后台调用weburl

?

string hostUrl = "http://www.a.com?id=123" ;

HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(hostUrl);

myReq.Method = "GET" ;

 

HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse();

Stream myStream = HttpWResp.GetResponseStream();

StreamReader sr = new StreamReader(myStream, Encoding.UTF8);

StringBuilder strBuilder = new StringBuilder();

while (-1 != sr.Peek())

{

strBuilder.Append(sr.ReadLine());

}

sr.Close();

myStream.Close();

HttpWResp.Close();

 

Newtonsoft.Json.Linq.JObject jo = (Newtonsoft.Json.Linq.JObject)Newtonsoft.Json.JsonConvert.DeserializeObject(strBuilder.ToString());

string resCode = jo[ "ReturnCode" ].ToString();

2.检测输入URL是否合法

?

/// <summary>

  /// 判断网址是否可以访问

  /// </summary>

  /// <param name="Url"></param>

  /// <returns></returns>

  protected bool ChkPageUrl( string url)

  {

   bool result = false ;

   try

   {

    HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);

    myHttpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko" ;

    myHttpWebRequest.Method = "GET" ;

    HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();

    if (myHttpWebResponse.StatusCode == HttpStatusCode.OK)

    {

     result = true ;

    }

    myHttpWebResponse.Close();

   }

   catch

   {

    result = false ;

   }

 

   return result;

  }

3.批量导出

?

/// <summary>

  /// 批量导出

  /// </summary>

  /// <returns></returns>

  public FileResult ExportStu()

  {

   //创建Excel文件的对象

   NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook();

   //添加一个sheet

   NPOI.SS.UserModel.ISheet sheet1 = book.CreateSheet( "Sheet1" );

   int pager_totalcount = ( int )Session[ "pager_totalcount" ];

   int totalCount = 0;

   //获取list数据

   List<ArticleEntity> infoList = new AchieveDAL.MyTestDAL().GetArticleList( "" , pager_totalcount, 1, out totalCount);

 

   //给sheet1添加第一行的头部标题

   NPOI.SS.UserModel.IRow row1 = sheet1.CreateRow(0);

   //创建时间 名称 商户订单号 | 交易号 对方 金额(元) 状态

   row1.CreateCell(0).SetCellValue( "编号" );

   row1.CreateCell(1).SetCellValue( "标题" );

   row1.CreateCell(2).SetCellValue( "内容" );

   int Width = 256;

   sheet1.SetColumnWidth(0, 10 * Width);

   sheet1.SetColumnWidth(1, 25 * Width);

   sheet1.SetColumnWidth(2, 60 * Width);

   if (infoList != null )

   {

    var list = infoList.OrderByDescending(p => p.ID);

 

    if (list != null )

    {

     int i = 0;

     //将数据逐步写入sheet1各个行

     foreach (var item in list)

     {

      i = i + 1;

      NPOI.SS.UserModel.IRow rowtemp = sheet1.CreateRow(i);

      rowtemp.CreateCell(0).SetCellValue(item.ID.ToString());

      rowtemp.CreateCell(1).SetCellValue(item.Title == null ? "" : item.Title.ToString());

      rowtemp.CreateCell(2).SetCellValue(item.Content == null ? "" : item.Content.ToString());

     }

    }

   }

   // 写入到客户端

   System.IO.MemoryStream ms = new System.IO.MemoryStream();

   book.Write(ms);

   ms.Seek(0, System.IO.SeekOrigin.Begin);

   return File(ms, "application/vnd.ms-excel" , HttpUtility.UrlEncode( "导出" , Encoding.UTF8).ToString() + DateTime.Now.ToString( "yyyyMMddHHmmss" ) + ".xls" );

 

  }

4.批量导入

 <input name="file" type="file" id="file" />
<input type="submit" name="Upload" value="上传" />

 

?

/// <summary>

   /// 批量导入

   /// </summary>

   /// <returns></returns>

   [HttpPost]

   public ActionResult ImportStu()

   {

    HttpPostedFileBase file = Request.Files[ "file" ];

    string FileName;

    string savePath;

    if (file == null || file.ContentLength <= 0)

    {

     return Content( "<script>alert('上传失败,请选择上传文件!');location.href='/MyTest/MVCPager';</script>" );

    }

    else

    {

     string filename = Path.GetFileName(file.FileName);

     int filesize = file.ContentLength; //获取上传文件的大小单位为字节byte

     string fileEx = System.IO.Path.GetExtension(filename); //获取上传文件的扩展名

     string NoFileName = System.IO.Path.GetFileNameWithoutExtension(filename); //获取无扩展名的文件名

     string FileType = ".xls,.xlsx" ; //定义上传文件的类型字符串

     if (FileType.Contains( ".exe" )) //EXCEL

     {

      return Content( "<script>alert('上传文件类型格式错误,不允许导入exe格式的文件!');location.href='/MyTest/MVCPager';</script>" );

     }

     FileName = NoFileName + DateTime.Now.ToString( "yyyyMMddhhmmss" ) + fileEx;

     string path = AppDomain.CurrentDomain.BaseDirectory + "uploads/" ;

     savePath = Path.Combine(path, FileName);

     file.SaveAs(savePath);

 

     if (FileType.Contains(fileEx)) //EXCEL

     {

      string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + savePath + ";" + "Extended Properties=Excel 8.0" ;

      OleDbConnection conn = new OleDbConnection(strConn);

      conn.Open();

      OleDbDataAdapter myCommand = new OleDbDataAdapter( "select * from [Sheet1$]" , strConn);

      DataSet myDataSet = new DataSet();

      try

      {

       myCommand.Fill(myDataSet, "ExcelInfo" );

      }

      catch (Exception ex)

      {

       return Content( "<script>alert('上传失败," + ex.Message + "!');location.href='/MyTest/MVCPager';</script>" );

      }

      //列顺序 标题 内容

      DataTable table = myDataSet.Tables[ "ExcelInfo" ].DefaultView.ToTable();

 

      //事物 异常回滚

      using (TransactionScope transaction = new TransactionScope())

      {

       for ( int i = 0; i < table.Rows.Count; i++)

       {

        ArticleEntity model = new ArticleEntity();

        model.Title = table.Rows[i][0].ToString();

        model.Content = table.Rows[i][1].ToString();

        new AchieveDAL.MyTestDAL().AddArticle(model);

       }

       transaction.Complete();

      }

     }

 

     return RedirectToAction( "MVCPager" , "MyTest" );

    }

   }

5.获取客户端的IP地址

 

?

/// <summary>

   /// 获取客户端的IP地址

   /// </summary>

   /// <returns>客户端IP地址</returns>

   public static string Get_ClientIP()

   {

    string result = string .Empty;

    result = HttpContext.Current.Request.Headers[ "X-Real-IP" ]; //Nginx 为前端时获取IP地址的方法

    if (result != null )

     return result;

 

    if (HttpContext.Current.Request.ServerVariables[ "REMOTE_ADDR" ] != null ) //发出请求的远程主机的IP地址

    {

     result = HttpContext.Current.Request.ServerVariables[ "REMOTE_ADDR" ].ToString();

    }

    else if (HttpContext.Current.Request.ServerVariables[ "HTTP_VIA" ] != null ) //判断是否设置代理,若使用了代理

    {

     if (HttpContext.Current.Request.ServerVariables[ "HTTP_X_FORWARDED_FOR" ] != null ) //获取代理服务器的IP

     {

      result = HttpContext.Current.Request.ServerVariables[ "HTTP_X_FORWARDED_FOR" ].ToString();

     }

     else

     {

      result = HttpContext.Current.Request.UserHostAddress;

     }

    }

    else

    {

     result = HttpContext.Current.Request.UserHostAddress;

    }

    if (result == "::1" )

     result = string .Empty;

    return result;

   }

6.AES对称加密

 

?

/// <summary>

/// 对称加密类

/// </summary>

public class AES

{

  /// <summary>

  /// 解密

  /// </summary>

  /// <param name="strDecrypt"></param>

  /// <param name="strKey"></param>

  /// <returns></returns>

  public static string Decrypt( string strDecrypt, string strKey)

  {

   try

   {

    byte [] bytes = Encoding.UTF8.GetBytes(FormsAuthentication.HashPasswordForStoringInConfigFile(strKey, "md5" ));

    byte [] inputBuffer = Convert.FromBase64String(strDecrypt);

    byte [] buffer3 = null ;

    using (RijndaelManaged managed = new RijndaelManaged())

    {

     managed.Key = bytes;

     managed.Mode = CipherMode.ECB;

     managed.Padding = PaddingMode.PKCS7;

     buffer3 = managed.CreateDecryptor().TransformFinalBlock(inputBuffer, 0, inputBuffer.Length);

    }

    return Encoding.UTF8.GetString(buffer3);

   }

   catch

   {

    return null ;

   }

  }

 

  /// <summary>

  /// 解密

  /// </summary>

  /// <param name="strDecrypt"></param>

  /// <param name="strKey"></param>

  /// <returns></returns>

  public static string Decrypt( string toDecrypt, string key, string iv)

  {

   byte [] bytes = Encoding.UTF8.GetBytes(key);

   byte [] buffer2 = Encoding.UTF8.GetBytes(iv);

   byte [] inputBuffer = Convert.FromBase64String(toDecrypt);

   RijndaelManaged managed = new RijndaelManaged

   {

    Key = bytes,

    IV = buffer2,

    Mode = CipherMode.CBC,

    Padding = PaddingMode.Zeros

   };

   byte [] buffer4 = managed.CreateDecryptor().TransformFinalBlock(inputBuffer, 0, inputBuffer.Length);

   return Encoding.UTF8.GetString(buffer4);

  }

 

  public static string DecryptStr( string EncryptString)

  {

   string str = "" ;

   if (! string .IsNullOrEmpty(EncryptString))

   {

    string sSource = Decrypt(EncryptString, "cn.solefu" );

    if (Utility.Left(sSource, 3) == "gk_" )

    {

     str = sSource.Substring(3);

    }

   }

   return str;

  }

 

  public static string DecryptStrByCBC( string EncryptString)

  {

   string str = "" ;

   if (! string .IsNullOrEmpty(EncryptString))

   {

    string sSource = Decrypt(EncryptString, "cn.solefu" , "cn.solefu" );

    if (Utility.Left(sSource, 3) == "gk_" )

    {

     str = sSource.Substring(3);

    }

   }

   return str;

  }

 

  /// <summary>

  /// 加密

  /// </summary>

  /// <param name="strEncrypt"></param>

  /// <param name="strKey"></param>

  /// <returns></returns>

  public static string Encrypt( string strEncrypt, string strKey)

  {

   try

   {

    byte [] bytes = Encoding.UTF8.GetBytes(FormsAuthentication.HashPasswordForStoringInConfigFile(strKey, "md5" ));

    byte [] inputBuffer = Encoding.UTF8.GetBytes(strEncrypt);

    byte [] inArray = null ;

    using (RijndaelManaged managed = new RijndaelManaged())

    {

     managed.Key = bytes;

     managed.Mode = CipherMode.ECB;

     managed.Padding = PaddingMode.PKCS7;

     inArray = managed.CreateEncryptor().TransformFinalBlock(inputBuffer, 0, inputBuffer.Length);

    }

    return Convert.ToBase64String(inArray, 0, inArray.Length);

   }

   catch

   {

    return null ;

   }

  }

 

  /// <summary>

  /// 加密

  /// </summary>

  /// <param name="strEncrypt"></param>

  /// <param name="strKey"></param>

  /// <returns></returns>

  public static string Encrypt( string toEncrypt, string key, string iv)

  {

   byte [] bytes = Encoding.UTF8.GetBytes(key);

   byte [] buffer2 = Encoding.UTF8.GetBytes(iv);

   byte [] inputBuffer = Encoding.UTF8.GetBytes(toEncrypt);

   RijndaelManaged managed = new RijndaelManaged

   {

    Key = bytes,

    IV = buffer2,

    Mode = CipherMode.CBC,

    Padding = PaddingMode.Zeros

   };

   byte [] inArray = managed.CreateEncryptor().TransformFinalBlock(inputBuffer, 0, inputBuffer.Length);

   return Convert.ToBase64String(inArray, 0, inArray.Length);

  }

 

  public static string EncryptStr( string SourceString)

  {

   return Encrypt( "gk_" + SourceString, "cn.solefu" );

  }

 

  public static string EncryptStr( string SourceString, bool UseInUrl)

  {

   return HttpUtility.UrlEncode(EncryptStr(SourceString));

  }

 

  public static string EncryptStrByCBC( string SourceString)

  {

   return Encrypt( "gk_" + SourceString, "cn.solefu" , "cn.solefu" );

  }

 

  public static string EncryptStrByCBC( string SourceString, bool UseInUrl)

  {

   return HttpUtility.UrlEncode(EncryptStrByCBC(SourceString));

  }

}

7.Cookies帮助类

 

?

public class CookiesHelper

  {

   public static void AddCookie( string cookieName, DateTime expires)

   {

    HttpCookie cookie = new HttpCookie(cookieName)

    {

     Expires = expires

    };

    AddCookie(cookie, null );

   }

 

   public static void AddCookie( string key, string value)

   {

    AddCookie( new HttpCookie(key, value), null );

   }

 

   public static void AddCookie(HttpCookie cookie, string Domain)

   {

    HttpResponse response = HttpContext.Current.Response;

    if (response != null )

    {

     cookie.HttpOnly = true ;

     cookie.Path = "/" ;

     if (! string .IsNullOrEmpty(Domain))

     {

      cookie.Domain = Domain;

     }

     response.AppendCookie(cookie);

    }

   }

 

   public static void AddCookie( string cookieName, DateTime expires, string Domain)

   {

    HttpCookie cookie = new HttpCookie(cookieName)

    {

     Expires = expires

    };

    AddCookie(cookie, Domain);

   }

 

   public static void AddCookie( string key, string value, DateTime expires)

   {

    HttpCookie cookie = new HttpCookie(key, value)

    {

     Expires = expires

    };

    AddCookie(cookie, null );

   }

 

   public static void AddCookie( string cookieName, string key, string value)

   {

    HttpCookie cookie = new HttpCookie(cookieName);

    cookie.Values.Add(key, value);

    AddCookie(cookie, null );

   }

 

   public static void AddCookie( string key, string value, bool withDomain, string Domain)

   {

    if (withDomain)

    {

     AddCookie( new HttpCookie(key, value), Domain);

    }

    else

    {

     AddCookie( new HttpCookie(key, value), null );

    }

   }

 

   public static void AddCookie( string key, string value, DateTime expires, string Domain)

   {

    HttpCookie cookie = new HttpCookie(key, value)

    {

     Expires = expires

    };

    AddCookie(cookie, Domain);

   }

 

   public static void AddCookie( string cookieName, string key, string value, DateTime expires)

   {

    HttpCookie cookie = new HttpCookie(cookieName)

    {

     Expires = expires

    };

    cookie.Values.Add(key, value);

    AddCookie(cookie, null );

   }

 

   public static void AddCookie( string cookieName, string key, string value, string Domain)

   {

    HttpCookie cookie = new HttpCookie(cookieName);

    cookie.Values.Add(key, value);

    AddCookie(cookie, Domain);

   }

 

   public static void AddCookie( string cookieName, string key, string value, DateTime expires, string Domain)

   {

    HttpCookie cookie = new HttpCookie(cookieName)

    {

     Expires = expires

    };

    cookie.Values.Add(key, value);

    AddCookie(cookie, Domain);

   }

 

   public static void AddDomainCookie( string key, string value, string Domain)

   {

    AddCookie( new HttpCookie(key, value), Domain);

   }

 

   public static HttpCookie GetCookie( string cookieName)

   {

    HttpRequest request = HttpContext.Current.Request;

    if (request != null )

    {

     if (request.Cookies[cookieName] != null )

     {

      return request.Cookies[cookieName];

     }

     if (request.Cookies[ ", " + cookieName] != null )

     {

      return request.Cookies[ ", " + cookieName];

     }

    }

    return null ;

   }

 

   public static string GetCookieValue( string cookieName)

   {

    return GetCookieValue(cookieName, null );

   }

 

   public static string GetCookieValue( string cookieName, string key)

   {

    HttpRequest request = HttpContext.Current.Request;

    if (request == null )

    {

     return "" ;

    }

    if (request.Cookies[cookieName] != null )

    {

     if (! string .IsNullOrEmpty(key) && request.Cookies[cookieName].HasKeys)

     {

      return request.Cookies[cookieName].Values[key];

     }

     return request.Cookies[cookieName].Value;

    }

    string str = ", " + cookieName;

    if (request.Cookies[str] == null )

    {

     return "" ;

    }

    if (! string .IsNullOrEmpty(key) && request.Cookies[str].HasKeys)

    {

     return request.Cookies[str].Values[key];

    }

    return request.Cookies[str].Value;

   }

 

   public static string GetCookieValue(HttpCookie cookie, string key)

   {

    if (cookie == null )

    {

     return "" ;

    }

    if (! string .IsNullOrEmpty(key) && cookie.HasKeys)

    {

     return cookie.Values[key];

    }

    return cookie.Value;

   }

 

   public static void RemoveCookie( string cookieName)

   {

    RemoveCookie(cookieName, null );

   }

 

   public static void RemoveCookie( string cookieName, string key)

   {

    HttpResponse response = HttpContext.Current.Response;

    if (response != null )

    {

     HttpCookie cookie = response.Cookies[cookieName];

     if (cookie != null )

     {

      if (! string .IsNullOrEmpty(key) && cookie.HasKeys)

      {

       cookie.Values.Remove(key);

      }

      else

      {

       response.Cookies.Remove(cookieName);

      }

     }

    }

   }

 

   public static void SetCookie( string cookieName, DateTime expires)

   {

    SetCookie(cookieName, null , null , new DateTime?(expires), null );

   }

 

   public static void SetCookie( string key, string value)

   {

    SetCookie(key, null , value, null , null );

   }

 

   public static void SetCookie( string cookieName, DateTime expires, string Domain)

   {

    SetCookie(cookieName, null , null , new DateTime?(expires), Domain);

   }

 

   public static void SetCookie( string key, string value, DateTime expires)

   {

    SetCookie(key, null , value, new DateTime?(expires), null );

   }

 

   public static void SetCookie( string cookieName, string key, string value)

   {

    SetCookie(cookieName, key, value, null , null );

   }

 

   public static void SetCookie( string key, string value, bool withDomain, string Domain)

   {

    if (withDomain)

    {

     SetCookie(key, null , value, null , Domain);

    }

    else

    {

     SetCookie(key, null , value, null , null );

    }

   }

 

   public static void SetCookie( string key, string value, DateTime expires, string Domain)

   {

    SetCookie(key, null , value, new DateTime?(expires), Domain);

   }

 

   public static void SetCookie( string cookieName, string key, string value, string Domain)

   {

    SetCookie(cookieName, key, value, null , Domain);

   }

 

   public static void SetCookie( string cookieName, string key, string value, DateTime? expires, string Domain)

   {

    HttpResponse response = HttpContext.Current.Response;

    if (response != null )

    {

     HttpCookie cookie = response.Cookies[cookieName];

     if (cookie != null )

     {

      cookie.Path = "/" ;

      if (! string .IsNullOrEmpty(Domain))

      {

       cookie.Domain = Domain;

      }

      if (! string .IsNullOrEmpty(key) && cookie.HasKeys)

      {

       cookie.Values.Set(key, value);

      }

      else if (! string .IsNullOrEmpty(value))

      {

       cookie.Value = value;

      }

      if (expires.HasValue)

      {

       cookie.Expires = expires.Value;

      }

      response.SetCookie(cookie);

     }

    }

   }

   /// <summary>

   /// 设置域的cookie

   /// </summary>

   /// <param name="key"></param>

   /// <param name="value"></param>

   /// <param name="Domain"></param>

   public static void SetDomainCookie( string key, string value, string Domain)

   {

    SetCookie(key, null , value, null , Domain);

   }

  }

8.DataTable转换成实体类

 

?

/// <summary>

/// #region DataTable转换成实体类

/// </summary>

/// <typeparam name="T"></typeparam>

public class ModelUtil<T> where T : new ()

{

 

  /// <summary>

  /// 填充对象列表:用DataSet的第一个表填充实体类

  /// </summary>

  /// <param name="ds">DataSet</param>

  /// <returns></returns>

  public static List<T> FillModel(DataSet ds)

  {

   if (ds == null || ds.Tables[0] == null || ds.Tables[0].Rows.Count == 0)

   {

    return null ;

   }

   else

   {

    return FillModel(ds.Tables[0]);

   }

  }

 

  /// <summary>

  /// 填充对象列表:用DataSet的第index个表填充实体类

  /// </summary>

  public static List<T> FillModel(DataSet ds, int index)

  {

   if (ds == null || ds.Tables.Count <= index || ds.Tables[index].Rows.Count == 0)

   {

    return null ;

   }

   else

   {

    return FillModel(ds.Tables[index]);

   }

  }

 

  /// <summary>

  /// 填充对象列表:用DataTable填充实体类

  /// </summary>

  public static List<T> FillModel(DataTable dt)

  {

   if (dt == null || dt.Rows.Count == 0)

   {

    return null ;

   }

   List<T> modelList = new List<T>();

   foreach (DataRow dr in dt.Rows)

   {

    //T model = (T)Activator.CreateInstance(typeof(T));

    T model = new T();

    for ( int i = 0; i < dr.Table.Columns.Count; i++)

    {

     List<PropertyInfo> propertyInfos = model.GetType().GetProperties().ToList();

 

     PropertyInfo item = propertyInfos.FirstOrDefault(p => string .Compare(p.Name, dr.Table.Columns[i].ColumnName, true ) == 0);

     if (item != null && dr[i] != DBNull.Value)

      try

      {

       item.SetValue(model, dr[i], null );

      }

      catch

      {

      }

    }

 

    modelList.Add(model);

   }

   return modelList;

  }

 

  /// <summary>

  /// 填充对象:用DataRow填充实体类

  /// </summary>

  public static T FillModel(DataRow dr)

  {

   if (dr == null )

   {

    return default (T);

   }

 

   //T model = (T)Activator.CreateInstance(typeof(T));

   T model = new T();

 

   for ( int i = 0; i < dr.Table.Columns.Count; i++)

   {

    List<PropertyInfo> propertyInfos = model.GetType().GetProperties().ToList();

 

    PropertyInfo item = propertyInfos.FirstOrDefault(p => string .Compare(p.Name, dr.Table.Columns[i].ColumnName, true ) == 0);

    if (item != null && dr[i] != DBNull.Value)

     try

     {

      item.SetValue(model, dr[i], null );

     }

     catch

     {

     }

   }

   return model;

  }

 

 

  /// <summary>

  /// 实体类转换成DataSet

  /// </summary>

  /// <param name="modelList">实体类列表</param>

  /// <returns></returns>

  public static DataSet FillDataSet(List<T> modelList)

  {

   if (modelList == null || modelList.Count == 0)

   {

    return null ;

   }

   else

   {

    DataSet ds = new DataSet();

    ds.Tables.Add(FillDataTable(modelList));

    return ds;

   }

  }

 

  /// <summary>

  /// 实体类转换成DataTable

  /// </summary>

  /// <param name="modelList">实体类列表</param>

  /// <returns></returns>

  public static DataTable FillDataTable(List<T> modelList)

  {

   if (modelList == null || modelList.Count == 0)

   {

    return null ;

   }

   DataTable dt = CreateData(modelList[0]);

 

   foreach (T model in modelList)

   {

    DataRow dataRow = dt.NewRow();

    foreach (PropertyInfo propertyInfo in typeof (T).GetProperties())

    {

     dataRow[propertyInfo.Name] = propertyInfo.GetValue(model, null );

    }

    dt.Rows.Add(dataRow);

   }

   return dt;

  }

 

  /// <summary>

  /// 根据实体类得到表结构

  /// </summary>

  /// <param name="model">实体类</param>

  /// <returns></returns>

  private static DataTable CreateData(T model)

  {

   DataTable dataTable = new DataTable( typeof (T).Name);

   foreach (PropertyInfo propertyInfo in typeof (T).GetProperties())

   {

    dataTable.Columns.Add( new DataColumn(propertyInfo.Name, propertyInfo.PropertyType));

   }

   return dataTable;

  }

 

  /// <summary>

  /// 将DataTable以转为List与Dictionary嵌套集合保存

  /// </summary>

  /// <param name="dt"></param>

  /// <returns></returns>

  public static List<Dictionary< string , string >> ToListDictionary(DataTable dt)

  {

   List<Dictionary< string , string >> list = null ;

   if (dt != null && dt.Rows.Count > 0)

   {

    list = new List<Dictionary< string , string >>();

    Dictionary< string , string > dic = null ;

    foreach (DataRow dr in dt.Rows)

    {

     dic = new Dictionary< string , string >();

     foreach (DataColumn dc in dt.Columns)

     {

      dic.Add(dc.ColumnName, dr[dc.ColumnName].ToString());

     }

     list.Add(dic);

    }

   }

   return list;

  }

 

  /// <summary>

  /// 请求的request的内容转换为model

  /// cza

  /// 2016-5-30 19:06:21

  /// </summary>

  /// <param name="context"></param>

  /// <returns></returns>

  public static T ConvertToModel(HttpContext context)

  {

   T t = new T();

   PropertyInfo[] propertys = t.GetType().GetProperties();

   foreach (PropertyInfo pi in propertys)

   {

    if (!pi.CanWrite)

     continue ;

    object value = context.Request[pi.Name];

    if (value != null && value != DBNull.Value)

    {

     try

     {

      if (value.ToString() != "" )

       pi.SetValue(t, Convert.ChangeType(value, pi.PropertyType), null ); //这一步很重要,用于类型转换

      else

       pi.SetValue(t, value, null );

     }

     catch

     { }

    }

   }

 

   return t;

  }

 

 

}

9.SQL Server数据库访问类

 

?

/// <summary>

/// SQL Server数据库访问类

/// </summary>

public abstract class SqlHelper

{

  //读取配置文件里的数据库连接字符串

  public static readonly string connStr = ConfigurationManager.ConnectionStrings[ "Conn" ].ConnectionString;

 

  //空构造

  public SqlHelper() { }

 

  //Hashtable to store cached parameters

  private static Hashtable parmCache = Hashtable.Synchronized( new Hashtable());

 

  /// <summary>

  /// 执行增删改【常用】

  /// </summary>

  public static int ExecuteNonQuery( string connectionString, CommandType commandType, string commandText, params SqlParameter[] paras)

  {

   SqlCommand cmd = new SqlCommand();

   using (SqlConnection conn = new SqlConnection(connectionString))

   {

    PrepareCommand(cmd, conn, null , commandType, commandText, paras);

    int val = cmd.ExecuteNonQuery();

    cmd.Parameters.Clear();   //清空参数

    return val;

   }

  }

 

  /// <summary>

  /// 执行增删改(对现有的数据库连接)【不常用】

  /// </summary>

  public static int ExecuteNonQuery(SqlConnection connection, CommandType commandType, string commandText, params SqlParameter[] paras)

  {

   SqlCommand cmd = new SqlCommand();

   PrepareCommand(cmd, connection, null , commandType, commandText, paras);

   int val = cmd.ExecuteNonQuery();

   cmd.Parameters.Clear();

   return val;

  }

 

  /// <summary>

  /// 执行多条sql语句(List泛型集合)【事务】(无参数)

  /// </summary>

  /// <param name="connectionString">数据库连接字符串</param>

  /// <param name="listSql">包含多条sql语句的泛型集合</param>

  /// <returns>受影响行数</returns>

  public static int ExecuteNonQuery( string connectionString, List< string > listSql)

  {

   SqlCommand cmd = new SqlCommand();

   SqlConnection conn = new SqlConnection(connectionString);

   conn.Open();

   SqlTransaction trans = conn.BeginTransaction();

   PrepareCommand(cmd, conn, trans, CommandType.Text, null , null );

   try

   {

    int count = 0;

    for ( int n = 0; n < listSql.Count; n++)

    {

     string strSql = listSql[n];

     if (strSql.Trim().Length > 1)

     {

      cmd.CommandText = strSql;

      count += cmd.ExecuteNonQuery();

     }

    }

    trans.Commit();

    cmd.Parameters.Clear();

    return count;

   }

   catch

   {

    trans.Rollback();

    cmd.Parameters.Clear();

    return 0;

   }

   finally

   {

    conn.Close();

   }

  }

 

  /// <summary>

  /// 执行多条sql语句(Hashtable)【事务】(带一组参数,一个参数也得封装成组)

  /// </summary>

  /// <param name="connectionString">数据库连接字符串</param>

  /// <param name="sqlStringList">Hashtable表,键值对形式</param>

  public static void ExecuteNonQuery( string connectionString, Hashtable sqlStringList)

  {

   using (SqlConnection conn = new SqlConnection(connectionString))

   {

    conn.Open();

    using (SqlTransaction trans = conn.BeginTransaction())

    {

     SqlCommand cmd = new SqlCommand();

     try

     {

      foreach (DictionaryEntry item in sqlStringList)

      {

       string cmdText = item.Key.ToString(); //要执行的sql语句

       SqlParameter[] cmdParas = (SqlParameter[])item.Value; //sql语句对应的参数

       PrepareCommand(cmd, conn, trans, CommandType.Text, cmdText, cmdParas);

       int val = cmd.ExecuteNonQuery();

       cmd.Parameters.Clear();

      }

      if (sqlStringList.Count > 0)

       trans.Commit();

     }

     catch

     {

      trans.Rollback();

      throw ;

     }

    }

   }

 

  }

 

  /// <summary>

  /// 返回DataReader对象

  /// </summary>

  public static SqlDataReader ExecuteReader( string connectionString, CommandType commandType, string cmdText, params SqlParameter[] paras)

  {

   SqlCommand cmd = new SqlCommand();

   SqlConnection conn = new SqlConnection(connectionString);

   try

   {

    PrepareCommand(cmd, conn, null , commandType, cmdText, paras);

    SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);

    cmd.Parameters.Clear();

    return reader;

   }

   catch

   {

    conn.Close();

    throw ;

   }

  }

 

  /// <summary>

  /// 返回第一行第一列信息(可能是字符串 所以返回类型是object)【常用】

  /// </summary>

  public static object ExecuteScalar( string connectionString, CommandType commandType, string commandText, params SqlParameter[] paras)

  {

   SqlCommand cmd = new SqlCommand();

   using (SqlConnection connection = new SqlConnection(connectionString))

   {

    PrepareCommand(cmd, connection, null , commandType, commandText, paras);

    object val = cmd.ExecuteScalar();

    cmd.Parameters.Clear();

    return val;

   }

  }

 

  /// <summary>

  /// 返回第一行第一列信息(针对现有的数据库连接)【不常用】

  /// </summary>

  public static object ExecuteScalar(SqlConnection connection, CommandType commandType, string commandText, params SqlParameter[] paras)

  {

   SqlCommand cmd = new SqlCommand();

 

   PrepareCommand(cmd, connection, null , commandType, commandText, paras);

   object val = cmd.ExecuteScalar();

   cmd.Parameters.Clear();

   return val;

  }

 

  /// <summary>

  /// 返回DataTable

  /// </summary>

  public static DataTable GetDataTable( string connectionString, CommandType commandType, string commandText, params SqlParameter[] paras)

  {

   SqlCommand cmd = new SqlCommand();

   using (SqlConnection conn = new SqlConnection(connectionString))

   {

    PrepareCommand(cmd, conn, null , commandType, commandText, paras);

    using (SqlDataAdapter da = new SqlDataAdapter(cmd))

    {

     DataTable dt = new DataTable();

     da.Fill(dt);

     return dt;

    }

   }

  }

 

  /// <summary>

  /// 返回DataSet

  /// </summary>

  public static DataSet GetDataset( string connectionString, CommandType commandType, string commandText, params SqlParameter[] paras)

  {

   SqlCommand cmd = new SqlCommand();

   using (SqlConnection conn = new SqlConnection(connectionString))

   {

    PrepareCommand(cmd, conn, null , commandType, commandText, paras);

    using (SqlDataAdapter da = new SqlDataAdapter(cmd))

    {

     DataSet ds = new DataSet();

     da.Fill(ds);

     return ds;

    }

   }

  }

 

  /// <summary>

  /// add parameter array to the cache

  /// </summary>

  /// <param name="cacheKey">Key to the parameter cache</param>

  /// <param name="cmdParms">an array of SqlParamters to be cached</param>

  public static void CacheParameters( string cacheKey, params SqlParameter[] commandParameters)

  {

   parmCache[cacheKey] = commandParameters;

  }

 

  /// <summary>

  /// Retrieve cached parameters

  /// </summary>

  /// <param name="cacheKey">key used to lookup parameters</param>

  /// <returns>Cached SqlParamters array</returns>

  public static SqlParameter[] GetCachedParameters( string cacheKey)

  {

   SqlParameter[] cachedParms = (SqlParameter[])parmCache[cacheKey];

 

   if (cachedParms == null )

    return null ;

 

   SqlParameter[] clonedParms = new SqlParameter[cachedParms.Length];

 

   for ( int i = 0, j = cachedParms.Length; i < j; i++)

    clonedParms[i] = (SqlParameter)((ICloneable)cachedParms[i]).Clone();

 

   return clonedParms;

  }

 

  /// <summary>

  /// 准备一个待执行的SqlCommand

  /// </summary>

  private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType commandType, string commandText, params SqlParameter[] paras)

  {

   try

   {

    if (conn.State != ConnectionState.Open)

    {

     conn.Close();

     conn.Open();

    }

    cmd.Connection = conn;

    if (commandText != null )

     cmd.CommandText = commandText;

    cmd.CommandType = commandType;  //这里设置执行的是T-Sql语句还是存储过程

 

    if (trans != null )

     cmd.Transaction = trans;

 

    if (paras != null && paras.Length > 0)

    {

     //cmd.Parameters.AddRange(paras);

     for ( int i = 0; i < paras.Length; i++)

     {

      if (paras[i].Value == null || paras[i].Value.ToString() == "" )

       paras[i].Value = DBNull.Value; //插入或修改时,如果有参数是空字符串,那么以NULL的形式插入数据库

      cmd.Parameters.Add(paras[i]);

     }

    }

   }

   catch (Exception ex)

   {

    throw new Exception(ex.Message);

   }

  }

 

  /// <summary>

  /// 通用分页存储过程,有条件查询,有排序字段,按照排序字段的降序排列

  /// </summary>

  /// <param name="PageSize">每页记录数</param>

  /// <param name="CurrentCount">当前记录数量(页码*每页记录数)</param>

  /// <param name="TableName">表名称</param>

  /// <param name="Where">查询条件,例:"ID>1000 AND Name like '%LiLinFeng%'" 排序条件,直接在后面加,例:" ORDER BY ID DESC,NAME ASC"</param>

  /// <param name="TotalCount">记录总数</param>

  /// <returns></returns>

  public static DataSet GetList( string connectionString, string Order, int PageSize, int CurrentCount, string TableName, string Where, out int TotalCount)

  {

   SqlParameter[] parmList =

    {

     new SqlParameter( "@PageSize" ,PageSize),

     new SqlParameter( "@CurrentCount" ,CurrentCount),

     new SqlParameter( "@TableName" ,TableName),

     new SqlParameter( "@Where" ,Where),

     new SqlParameter( "@Order" ,Order),

     new SqlParameter( "@TotalCount" ,SqlDbType.Int,4)

    };

   parmList[5].Direction = ParameterDirection.Output;

   DataSet ds = GetDataset(connectionString, CommandType.StoredProcedure, "sp_MvcPager" , parmList);

   TotalCount = Convert.ToInt32(parmList[5].Value);

   return ds;

  }

}

10.日志文件记录

 

?

public class WriteLog

{

  /// <summary>

  ///

  /// </summary>

  /// <param name="fileName">文件名</param>

  /// <param name="ex"></param>

  public static void WriteErorrLog( string fileName, Exception ex)

  {

   if (ex == null ) return ; //ex = null 返回

   DateTime dt = DateTime.Now; // 设置日志时间

   string time = dt.ToString( "yyyy-MM-dd HH:mm:ss" ); //年-月-日 时:分:秒

   string logName = dt.ToString( "yyyy-MM-dd" ); //日志名称

   string logPath = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, Path.Combine( "log" , fileName)); //日志存放路径

   string log = Path.Combine(logPath, string .Format( "{0}.log" , logName)); //路径 + 名称

   try

   {

    FileInfo info = new FileInfo(log);

    if (info.Directory != null && !info.Directory.Exists)

    {

     info.Directory.Create();

    }

    using (StreamWriter write = new StreamWriter(log, true , Encoding.GetEncoding( "utf-8" )))

    {

     write.WriteLine(time);

     write.WriteLine(ex.Message);

     write.WriteLine( "异常信息:" + ex);

     write.WriteLine( "异常堆栈:" + ex.StackTrace);

     write.WriteLine( "异常简述:" + ex.Message);

     write.WriteLine( "\r\n----------------------------------\r\n" );

     write.Flush();

     write.Close();

     write.Dispose();

    }

   }

   catch { }

  }

 

  /// <summary>

  ///

  /// </summary>

  /// <param name="fileName">文件名</param>

  /// <param name="message"></param>

  public static void WriteMessage( string fileName, string message)

  {

   //ex = null 返回

   DateTime dt = DateTime.Now; // 设置日志时间

   string time = dt.ToString( "yyyy-MM-dd HH:mm:ss" ); //年-月-日 时:分:秒

   string logName = dt.ToString( "yyyy-MM-dd" ); //日志名称

   string logPath = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, Path.Combine( "log" , fileName)); //日志存放路径

   string log = Path.Combine(logPath, string .Format( "{0}.log" , logName)); //路径 + 名称

   try

   {

    FileInfo info = new FileInfo(log);

    if (info.Directory != null && !info.Directory.Exists)

    {

     info.Directory.Create();

    }

    using (StreamWriter write = new StreamWriter(log, true , Encoding.GetEncoding( "utf-8" )))

    {

     write.WriteLine(time);

     write.WriteLine( "信息:" + message);

     write.WriteLine( "\r\n----------------------------------\r\n" );

     write.Flush();

     write.Close();

     write.Dispose();

    }

   }

   catch { }

  }

 

 

  public static void WriteErorrLog(Exception ex, string message)

  {

   if (ex == null ) return ; //ex = null 返回

   DateTime dt = DateTime.Now; // 设置日志时间

   string time = dt.ToString( "yyyy-MM-dd HH:mm:ss" ); //年-月-日 时:分:秒

   string logName = dt.ToString( "yyyy-MM-dd" ); //日志名称

   string logPath = System.AppDomain.CurrentDomain.BaseDirectory; //日志存放路径

   string log = Path.Combine(Path.Combine(logPath, "log" ), string .Format( "{0}.log" , logName)); //路径 + 名称

   try

   {

    FileInfo info = new FileInfo(log);

    if (info.Directory != null && !info.Directory.Exists)

    {

     info.Directory.Create();

    }

    using (StreamWriter write = new StreamWriter(log, true , Encoding.GetEncoding( "utf-8" )))

    {

     write.WriteLine(time);

     write.WriteLine(ex.Message);

     write.WriteLine( "异常信息:" + ex);

     write.WriteLine( "异常堆栈:" + ex.StackTrace);

     write.WriteLine( "异常简述:" + message);

     write.WriteLine( "\r\n----------------------------------\r\n" );

     write.Flush();

     write.Close();

     write.Dispose();

    }

   }

   catch { }

  }

 

  public static void WriteMessage( string message)

  {

   //ex = null 返回

   DateTime dt = DateTime.Now; // 设置日志时间

   string time = dt.ToString( "yyyy-MM-dd HH:mm:ss" ); //年-月-日 时:分:秒

   string logName = dt.ToString( "yyyy-MM-dd" ); //日志名称

   string logPath = System.AppDomain.CurrentDomain.BaseDirectory; //日志存放路径

   string log = Path.Combine(Path.Combine(logPath, "log" ), string .Format( "{0}.log" , logName)); //路径 + 名称

   try

   {

    FileInfo info = new FileInfo(log);

    if (info.Directory != null && !info.Directory.Exists)

    {

     info.Directory.Create();

    }

    using (StreamWriter write = new StreamWriter(log, true , Encoding.GetEncoding( "utf-8" )))

    {

     write.WriteLine(time);

     write.WriteLine( "信息:" + message);

     write.WriteLine( "\r\n----------------------------------\r\n" );

     write.Flush();

     write.Close();

     write.Dispose();

    }

   }

   catch { }

  }

}

11.JSON帮助类

 

?

/// <summary>

  /// JSON帮助类

  /// </summary>

  public class JsonHelper

  {

   #region 通用方法

   /// <summary>

   /// 格式化字符型、日期型、布尔型

   /// </summary>

   public static string StringFormat(string str, Type type)

   {

    if (type == typeof(string))

    {

     str = StringFilter(str);

     str = "\"" + str + "\"" ;

    }

    else if (type == typeof(DateTime) || type == typeof(DateTime?))

    {

     str = "\"" + str + "\"" ;

    }

    else if (type == typeof( bool ))

    {

     str = str.ToLower();

    }

    else if (type == typeof(Guid))

    {

     str = "\"" + str + "\"" ;

    }

    else if (type != typeof(string) && string.IsNullOrEmpty(str))

    {

     str = "\"" + str + "\"" ;

    }

    return str;

   }

 

   /// <summary>

   /// 过滤字符串

   /// </summary>

   public static string StringFilter(string str)

   {

    StringBuilder sb = new StringBuilder();

    for ( int i = 0; i < str.Length; i++)

    {

     char c = str.ToCharArray()[i];

     switch (c)

     {

      case '\"' :

       sb.Append( "\\\"" ); break ;

      case '\\' :

       sb.Append( "\\\\" ); break ;

      case '/' :

       sb.Append( "\\/" ); break ;

      case '\b' :

       sb.Append( "\\b" ); break ;

      case '\f' :

       sb.Append( "\\f" ); break ;

      case '\n' :

       sb.Append( "\\n" ); break ;

      case '\r' :

       sb.Append( "\\r" ); break ;

      case '\t' :

       sb.Append( "\\t" ); break ;

      default :

       sb.Append(c); break ;

     }

    }

    return sb.ToString();

   }

   #endregion

 

   #region 列转json

   /// <summary>

   /// 列转json

   /// </summary>

   /// <param name="dt">表</param>

   /// <param name="r">列</param>

   public static string ColumnToJson(DataTable dt, int r)

   {

    StringBuilder strSql = new StringBuilder();

    for ( int i = 0; i < dt.Rows.Count; i++)

    {

     strSql.Append(dt.Rows[i][r]);

     strSql.Append( "," );

    }

    return strSql.ToString().Trim( ',' );

   }

   #endregion

 

   #region 对象转json

   /// <summary>

   /// 对象转json

   /// </summary>

   public static string ToJson(object jsonObject)

   {

    StringBuilder sb = new StringBuilder();

    sb.Append( "{" );

    PropertyInfo[] propertyInfo = jsonObject.GetType().GetProperties();

    for ( int i = 0; i < propertyInfo.Length; i++)

    {

     object objectValue = propertyInfo[i].GetGetMethod().Invoke(jsonObject, null);

     Type type = propertyInfo[i].PropertyType;

     string strValue = objectValue.ToString();

     strValue = StringFormat(strValue, type);

     sb.Append( "\"" + propertyInfo[i].Name + "\":" );

     sb.Append(strValue + "," );

    }

    sb.Remove(sb.Length - 1, 1);

    sb.Append( "}" );

    return sb.ToString();

   }

   #endregion

 

   #region list转json

   /// <summary>

   /// list转json

   /// </summary>

   public static string ListToJson<T>(IList<T> list)

   {

    object obj = list[0];

    return ListToJson<T>(list, obj.GetType().Name);

   }

 

   private static string ListToJson<T>(IList<T> list, string JsonName)

   {

    StringBuilder Json = new StringBuilder();

    if (string.IsNullOrEmpty(JsonName))

     JsonName = list[0].GetType().Name;

    Json.Append( "{\"" + JsonName + "\":[" );

    if (list.Count > 0)

    {

     for ( int i = 0; i < list.Count; i++)

     {

      T obj = Activator.CreateInstance<T>();

      PropertyInfo[] pi = obj.GetType().GetProperties();

      Json.Append( "{" );

      for ( int j = 0; j < pi.Length; j++)

      {

       Type type = pi[j].GetValue(list[i], null).GetType();

       Json.Append( "\"" + pi[j].Name.ToString() + "\":" + StringFormat(pi[j].GetValue(list[i], null).ToString(), type));

       if (j < pi.Length - 1)

       {

        Json.Append( "," );

       }

      }

      Json.Append( "}" );

      if (i < list.Count - 1)

      {

       Json.Append( "," );

      }

     }

    }

    Json.Append( "]}" );

    return Json.ToString();

   }

   #endregion

 

   #region 对象集合转换为json

   /// <summary>

   /// 对象集合转换为json

   /// </summary>

   /// <param name="array">对象集合</param>

   /// <returns>json字符串</returns>

   public static string ToJson(IEnumerable array)

   {

    string jsonString = "[" ;

    foreach (object item in array)

    {

     jsonString += ToJson(item) + "," ;

    }

    jsonString = jsonString.Substring(0, jsonString.Length - 1);

    return jsonString + "]" ;

   }

   #endregion

 

   #region 普通集合转换Json

   /// <summary>

   /// 普通集合转换Json

   /// </summary>

   /// <param name="array">集合对象</param>

   /// <returns>Json字符串</returns>

   public static string ToArrayString(IEnumerable array)

   {

    string jsonString = "[" ;

    foreach (object item in array)

    {

     jsonString = ToJson(item.ToString()) + "," ;

    }

    jsonString.Remove(jsonString.Length - 1, jsonString.Length);

    return jsonString + "]" ;

   }

   #endregion

 

   #region DataSet转换为Json

   /// <summary>

   /// DataSet转换为Json

   /// </summary>

   /// <param name="dataSet">DataSet对象</param>

   /// <returns>Json字符串</returns>

   public static string ToJson(DataSet dataSet)

   {

    string jsonString = "{" ;

    foreach (DataTable table in dataSet.Tables)

    {

     jsonString += "\"" + table.TableName + "\":" + ToJson(table) + "," ;

    }

    jsonString = jsonString.TrimEnd( ',' );

    return jsonString + "}" ;

   }

   #endregion

 

   #region Datatable转换为Json

   /// <summary> 

   /// Datatable转换为Json 

   /// </summary>

   public static string ToJson(DataTable dt)

   {

    if (dt.Rows.Count > 0)

    {

     StringBuilder jsonString = new StringBuilder();

     jsonString.Append( "[" );

     DataRowCollection drc = dt.Rows;

     for ( int i = 0; i < drc.Count; i++)

     {

      jsonString.Append( "{" );

      for ( int j = 0; j < dt.Columns.Count; j++)

      {

       string strKey = dt.Columns[j].ColumnName;

       string strValue = drc[i][j].ToString();

 

       Type type = dt.Columns[j].DataType;

       jsonString.Append( "\"" + strKey + "\":" );

       strValue = StringFormat(strValue, type);

       if (j < dt.Columns.Count - 1)

        jsonString.Append(strValue + "," );

       else

        jsonString.Append(strValue);

      }

      jsonString.Append( "}," );

     }

     jsonString.Remove(jsonString.Length - 1, 1);

     jsonString.Append( "]" );

     return jsonString.ToString();

    }

    else

     return "[]" ;

   }

 

   /// <summary>

   /// DataTable转换为Json

   /// </summary>

   public static string ToJson(DataTable dt, string jsonName)

   {

    StringBuilder Json = new StringBuilder();

    if (string.IsNullOrEmpty(jsonName))

     jsonName = dt.TableName;

    Json.Append( "{\"" + jsonName + "\":[" );

    if (dt.Rows.Count > 0)

    {

     for ( int i = 0; i < dt.Rows.Count; i++)

     {

      Json.Append( "{" );

      for ( int j = 0; j < dt.Columns.Count; j++)

      {

       Type type = dt.Rows[i][j].GetType();

       Json.Append( "\"" + dt.Columns[j].ColumnName.ToString() + "\":" + StringFormat(dt.Rows[i][j].ToString(), type));

       if (j < dt.Columns.Count - 1)

        Json.Append( "," );

      }

      Json.Append( "}" );

      if (i < dt.Rows.Count - 1)

       Json.Append( "," );

     }

    }

    Json.Append( "]}" );

    return Json.ToString();

   }

   #endregion

 

   #region DataReader转换为Json

   /// <summary> 

   /// DataReader转换为Json 

   /// </summary> 

   /// <param name="dataReader">DataReader对象</param> 

   /// <returns>Json字符串</returns>

   public static string ToJson(DbDataReader dataReader)

   {

    StringBuilder jsonString = new StringBuilder();

    jsonString.Append( "[" );

    while (dataReader.Read())

    {

     jsonString.Append( "{" );

     for ( int i = 0; i < dataReader.FieldCount; i++)

     {

      Type type = dataReader.GetFieldType(i);

      string strKey = dataReader.GetName(i);

      string strValue = dataReader[i].ToString();

      jsonString.Append( "\"" + strKey + "\":" );

      strValue = StringFormat(strValue, type);

      if (i < dataReader.FieldCount - 1)

       jsonString.Append(strValue + "," );

      else

       jsonString.Append(strValue);

     }

     jsonString.Append( "}," );

    }

    dataReader.Close();

    jsonString.Remove(jsonString.Length - 1, 1);

    jsonString.Append( "]" );

    return jsonString.ToString();

   }

   #endregion

 

 

   #region 返回错误

   public static string error()

   {

    DataTable dt = new DataTable();

    dt.Columns.Add( "error" , typeof( int ));

    DataRow dr = dt.NewRow();

    dr[ "error" ] = 1;

    dt.Rows.Add(dr);

    return ToJson(dt);

   }

   #endregion

 

  }

 

 

11.转换帮助类

 

 

 

  public class ConvertHelper

  {

   public static int DateTimeToUnixInt(DateTime time )

   {

    DateTime time2 = TimeZone.CurrentTimeZone.ToLocalTime( new DateTime(0x7b2, 1, 1));

    TimeSpan span = (TimeSpan)( time - time2);

    return ( int )span.TotalSeconds;

   }

 

   public static decimal MoneyRound(decimal value, int decimals)

   {

    if (value < 0M)

    {

     return Math.Round((decimal)(value + (5M / ((decimal)Math.Pow(10.0, ( double )(decimals + 1))))), decimals, MidpointRounding.AwayFromZero);

    }

    return Math.Round(value, decimals, MidpointRounding.AwayFromZero);

   }

 

   public static double MoneyRound( double value, int decimals)

   {

    if (value < 0.0)

    {

     return Math.Round(( double )(value + (5.0 / Math.Pow(10.0, ( double )(decimals + 1)))), decimals, MidpointRounding.AwayFromZero);

    }

    return Math.Round(value, decimals, MidpointRounding.AwayFromZero);

   }

 

   public static decimal MoneyToDecimal(string str)

   {

    try

    {

     str = str.Replace( "," , "" );

     return decimal.Parse(str);

    }

    catch

    {

     return 0M;

    }

   }

 

   public static decimal Round(decimal d, int i)

   {

    if (d >= 0M)

    {

     d += 5M * ((decimal)Math.Pow(10.0, ( double )-(i + 1)));

    }

    else

    {

     d += -5M * ((decimal)Math.Pow(10.0, ( double )-(i + 1)));

    }

    string str = d.ToString();

    string[] strArray = str.Split( new char [] { '.' });

    int index = str.IndexOf( '.' );

    string str2 = strArray[0];

    string str3 = strArray[1];

    if (str3.Length > i)

    {

     str3 = str.Substring(index + 1, i);

    }

    d = decimal.Parse(str2 + "." + str3);

    return d;

   }

 

   public static double Round( double d, int i)

   {

    if (d >= 0.0)

    {

     d += 5.0 * Math.Pow(10.0, ( double )-(i + 1));

    }

    else

    {

     d += -5.0 * Math.Pow(10.0, ( double )-(i + 1));

    }

    string str = d.ToString();

    string[] strArray = str.Split( new char [] { '.' });

    int index = str.IndexOf( '.' );

    string str2 = strArray[0];

    string str3 = strArray[1];

    if (str3.Length > i)

    {

     str3 = str.Substring(index + 1, i);

    }

    d = double .Parse(str2 + "." + str3);

    return d;

   }

 

   public static bool ToBool(object o)

   {

    return ToBool(o, false );

   }

 

   public static bool ToBool(object o, bool DefaultValue)

   {

    bool flag;

    if ( bool .TryParse(ToString(o, true ), out flag))

    {

     return flag;

    }

    return DefaultValue;

   }

 

   public static DateTime ToDateTime(object o)

   {

    return ToDateTime(o, DateTime.Now);

   }

 

   public static DateTime ToDateTime(object o, DateTime DefaultValue)

   {

    DateTime time ;

    if (DateTime.TryParse(ToString(o, true ), out time ))

    {

     return time ;

    }

    return DefaultValue;

   }

 

   public static decimal ToDecimal(object o)

   {

    return ToDecimal(o, 0M);

   }

 

   public static decimal ToDecimal(object o, decimal DefaultValue)

   {

    decimal num;

    if (decimal.TryParse(ToString(o, true ), out num))

    {

     return num;

    }

    return DefaultValue;

   }

 

   public static double ToDouble(object o)

   {

    return ToDouble(o, 0.0);

   }

 

   public static double ToDouble(object o, double DefaultValue)

   {

    double num;

    if ( double .TryParse(ToString(o, true ), out num))

    {

     return num;

    }

    return DefaultValue;

   }

 

   public static float ToFloat(object o)

   {

    return ToFloat(o, 0f);

   }

 

   public static float ToFloat(object o, float DefaultValue)

   {

    float num;

    if ( float .TryParse(ToString(o, true ), out num))

    {

     return num;

    }

    return DefaultValue;

   }

 

   public static int ToInt(object o)

   {

    return ToInt(o, 0);

   }

 

   public static int ToInt(object o, int DefaultValue)

   {

    int num;

    if ( int .TryParse(ToString(o, true ), out num))

    {

     return num;

    }

    return DefaultValue;

   }

 

   public static long ToLong(object o)

   {

    return ToLong(o, 0L);

   }

 

   public static long ToLong(object o, long DefaultValue)

   {

    long num;

    if ( long .TryParse(ToString(o, true ), out num))

    {

     return num;

    }

    return DefaultValue;

   }

 

   public static string ToMoney(object o)

   {

    return ToDecimal(o).ToString( "###,###,###,###,###,##0.##" );

   }

 

   public static string ToMoney(string str)

   {

    try

    {

     return decimal.Parse(str).ToString( "###,###,###,###,###,##0.##" );

    }

    catch

    {

     return "0" ;

    }

   }

 

   public static string ToString(object o)

   {

    return ToString(o, "" , false );

   }

 

   public static string ToString(object o, bool bTrim)

   {

    return ToString(o, "" , bTrim);

   }

 

   public static string ToString(object o, string DefaultValue)

   {

    return ToString(o, DefaultValue, false );

   }

 

   public static string ToString(object o, string DefaultValue, bool bTrim)

   {

    if (object.Equals(o, null) || Convert.IsDBNull(o))

    {

     return DefaultValue;

    }

    if (bTrim)

    {

     return o.ToString().Trim();

    }

    return o.ToString();

   }

 

   public static DateTime UnixIntToDateTime(string timeStamp)

   {

    DateTime time = TimeZone.CurrentTimeZone.ToLocalTime( new DateTime(0x7b2, 1, 1));

    long ticks = long .Parse(timeStamp + "0000000" );

    TimeSpan span = new TimeSpan(ticks);

    return time .Add(span);

   }

  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

dy("nrwz");

查看更多关于C# 常用公共方法的详细内容...

  阅读:60次