数据操作层的基类,主要封装了数据的增,删,改,查功能

using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Data.Common ;

using Sybase.Data.AseClient;


namespace DataAccess
{
 /// <summary>
 /// 数据操作层的基类,主要封装了数据的增,删,改,查功能
 /// </summary>
 public abstract class BaseAccess
 {
  #region 私有和保护成员

  protected DbManager  _DbManager = null;    // 数据库连接对象
  protected  string _TableName    = string.Empty ; // 表名
  protected  string _PKName       = string.Empty ; // 主键字段名

  #endregion

  #region 私有属性
  /// <summary>
  /// 基本SELECT SQL语句
  /// </summary>
  protected string SelectSql
  {
   get
   {
    return string.Format("SELECT * FROM [{0}] " ,_TableName) ;
    
   }
  }
  #endregion

  #region 构造函数

  /// <summary>
  /// 构造方法
  /// </summary>
  /// <param name="objDbManager">访问管理器</param>
  public BaseAccess(DbManager  objDbManager)
  {
   this._DbManager = objDbManager;
  }
  #endregion

  #region 公共属性

  /// <summary>
  /// 当前活动数据库连接对象
  /// </summary>
  public AseConnection CurrentConnection
  {
   get
   {
    return this._DbManager.CurrentConnection;
   }
   
  }
  
  
  /// <summary>
  /// 当前活动事务对象
  /// </summary>
  public AseTransaction CurrentTransaction
  {
   get
   {
    return this._DbManager.CurrentTransaction ;
   }
  }

  #endregion

  #region 公共方法
  /// <summary>
  /// 数据库更新方法
  /// </summary>
  /// <param name="objDataSet">数据集</param>
  /// <returns>返回更新行数</returns>
  public int Update(string strSql)
  {    
   return ExecuteSql(strSql);
  }

  /// <summary>
  /// 数据库插入方法
  /// </summary>
  /// <param name="strSql">插入SQL语句</param>
  /// <returns>返回插入的行</returns>
  public int Insert(string strSql)
  {
   return ExecuteSql(strSql); 
  }

  /// <summary>
  /// 查询全部数据方法
  /// </summary>
  /// <param name="objDataSet">返回数据集</param>
  /// <returns>返回查询行数</returns>
  public int QueryAll(ref DataSet objDataSet)
  { 
   AseDataAdapter objAseDataAdapter = new AseDataAdapter(SelectSql,CurrentConnection ); 
     
   if(this.CurrentTransaction != null)
   {
    objAseDataAdapter.SelectCommand.Transaction = CurrentTransaction;
   }
   
   return objAseDataAdapter.Fill (objDataSet,_TableName);
  }

  /// <summary>
  /// 查询全部数据方法
  /// </summary>
  /// <param name="objDataSet">返回数据集</param>
  /// <returns>返回查询行数</returns>
  public int QueryAll(ref DataTable objDataTable)
  { 
   AseDataAdapter objAseDataAdapter = new AseDataAdapter(SelectSql,CurrentConnection ); 
     
   if(this.CurrentTransaction != null)
   {
    objAseDataAdapter.SelectCommand.Transaction = CurrentTransaction;
   }
   DataSet ds = new DataSet();
   int nRows = objAseDataAdapter.Fill (ds,_TableName);
   objDataTable = ds.Tables[0];
   return nRows;
  }

  /// <summary>
  /// 得到ID对应的数据
  /// </summary>
  /// <param name="objDataSet">返回数据集</param>
  /// <param name="ID">主键值</param>
  /// <returns>返回查询行数</returns>
  public int QueryByID(ref DataSet objDataSet,int ID)
  {
   string strSql = string.Format("SELECT * FROM {0} WHERE {1} = {2}", _TableName, _PKName, ID) ;  

   AseCommand  objCommand = new AseCommand (strSql);
   
   objCommand.Connection = CurrentConnection;
   if(this.CurrentTransaction != null)
   {
    objCommand.Transaction = CurrentTransaction;
   }
   
   AseDataAdapter objAseDataAdapter = new AseDataAdapter();     
   objAseDataAdapter.SelectCommand    = objCommand;  

   return  objAseDataAdapter.Fill(objDataSet,_TableName);
   
  }

  /// <summary>
  /// 得到ID对应的数据
  /// </summary>
  /// <param name="objDataSet">返回数据集</param>
  /// <param name="ID">主键值</param>
  /// <returns>返回查询行数</returns>
  public int QueryByID(ref DataTable objDataTable,int ID)
  {
   string strSql = string.Format("SELECT * FROM {0} WHERE {1} = {2}", _TableName, _PKName, ID) ;  

   AseCommand  objCommand = new AseCommand (strSql);
   
   objCommand.Connection = CurrentConnection;
   if(this.CurrentTransaction != null)
   {
    objCommand.Transaction = CurrentTransaction;
   }
   
   AseDataAdapter objAseDataAdapter = new AseDataAdapter();     
   objAseDataAdapter.SelectCommand    = objCommand;  

   DataSet ds = new DataSet();
   int nRows = objAseDataAdapter.Fill (ds,_TableName);
   objDataTable = ds.Tables[0];
   return nRows;
   
  }


  /// <summary>
  /// 得到ID对应的数据
  /// </summary>
  /// <param name="objDataSet">返回数据集</param>
  /// <param name="ID">主键值</param>
  /// <returns>返回查询行数</returns>
  public int QueryByID(ref DataSet objDataSet,string ID)
  { 
   string strSql = string.Format("{0} WHERE {1} = '{2}'", SelectSql, _PKName, ID) ;  
   AseCommand  objCommand = new AseCommand (strSql);
   objCommand.Connection = CurrentConnection;
   if(this.CurrentTransaction != null)
   {
    objCommand.Transaction = CurrentTransaction;
   }

   AseDataAdapter objAseDataAdapter = new AseDataAdapter();
   objAseDataAdapter.SelectCommand    = objCommand;

   return objAseDataAdapter.Fill (objDataSet,_TableName);
   
  }

  /// <summary>
  /// 得到ID对应的数据
  /// </summary>
  /// <param name="objDataSet">返回数据集</param>
  /// <param name="ID">主键值</param>
  /// <returns>返回查询行数</returns>
  public int QueryByID(ref DataTable objDataTable,string ID)
  { 
   string strSql = string.Format("{0} WHERE {1} = '{2}'", SelectSql, _PKName, ID) ;  
   AseCommand  objCommand = new AseCommand (strSql);
   objCommand.Connection = CurrentConnection;
   if(this.CurrentTransaction != null)
   {
    objCommand.Transaction = CurrentTransaction;
   }

   AseDataAdapter objAseDataAdapter = new AseDataAdapter();
   objAseDataAdapter.SelectCommand    = objCommand;

   DataSet ds = new DataSet();
   int nRows = objAseDataAdapter.Fill (ds,_TableName);
   objDataTable = ds.Tables[0];
   return nRows;
   
  }


  /// <summary>
  /// 用SQL查询数据
  /// </summary>
  /// <param name="objDataSet">返回数据集</param>
  /// <param name="strWhere">SQL语句(WHERE 以后部分)</param>
  /// <returns>返回查询行数</returns>
  public int QueryByWhere(ref DataSet objDataSet,string strWhere)
  {     
   AseCommand  objCommand = new AseCommand (SelectSql + " WHERE " + strWhere);
   objCommand.Connection = CurrentConnection;
   if(this.CurrentTransaction != null)
   {
    objCommand.Transaction = CurrentTransaction;
   }
   
   AseDataAdapter objAseDataAdapter = new AseDataAdapter() ;
   objAseDataAdapter.SelectCommand    = objCommand ;

   return objAseDataAdapter.Fill (objDataSet,_TableName);
    
  }

  /// <summary>
  /// 用SQL查询数据
  /// </summary>
  /// <param name="objDataSet">返回数据集</param>
  /// <param name="strWhere">SQL语句(WHERE 以后部分)</param>
  /// <returns>返回查询行数</returns>
  public int QueryByWhere(ref DataTable objDataTable,string strWhere)
  {     
   AseCommand  objCommand = new AseCommand (SelectSql + " WHERE " + strWhere);
   objCommand.Connection = CurrentConnection;
   if(this.CurrentTransaction != null)
   {
    objCommand.Transaction = CurrentTransaction;
   }
   DataSet ds = new DataSet();
   AseDataAdapter objAseDataAdapter = new AseDataAdapter() ;
   objAseDataAdapter.SelectCommand    = objCommand ;

   int nRows = objAseDataAdapter.Fill(ds,_TableName);
   objDataTable = ds.Tables[0];
   return nRows;
    
  }

  /// <summary>
  /// 用SQL查询数据
  /// </summary>
  /// <param name="dataSet">返回数据集</param>
  /// <param name="strSql">整个SQL语句</param>
  /// <returns>返回查询行数</returns>
  public int QueryBySql(ref DataSet dataSet ,string strSql)
  {
   AseCommand objCommand = new AseCommand (strSql);
  
   objCommand.Connection = CurrentConnection;
   if(this.CurrentTransaction != null)
   {
    objCommand.Transaction = CurrentTransaction;
   }
  
   AseDataAdapter objAseDataAdapter = new AseDataAdapter();   
   objAseDataAdapter.SelectCommand    = objCommand ;
 
   return objAseDataAdapter.Fill (dataSet,_TableName);
   
  }

  /// <summary>
  /// 用SQL查询数据
  /// </summary>
  /// <param name="objTable">返回数据集</param>
  /// <param name="strSql">整个SQL语句</param>
  /// <returns>返回查询行数</returns>
  public int QueryBySql(ref DataTable objTable ,string strSql)
  {
   AseCommand objCommand = new AseCommand (strSql);
  
   objCommand.Connection = CurrentConnection;
   if(this.CurrentTransaction != null)
   {
    objCommand.Transaction = CurrentTransaction;
   }
   
  
   AseDataAdapter objAseDataAdapter = new AseDataAdapter();   
   objAseDataAdapter.SelectCommand    = objCommand ;
   DataSet ds = new DataSet() ;
 
   int nRows = objAseDataAdapter.Fill(ds,_TableName);
   objTable = ds.Tables[0] ;
   return nRows ;
   
  }


  /// <summary>
  /// 删除数据
  /// </summary>
  /// <param name="strSql">删除SQL语句</param>
  /// <returns>删除行数</returns>
  public int DeleteData(string strSql)
  {
   return ExecuteSql(strSql);
  }

  /// <summary>
  /// 更新State状态
  /// </summary>
  /// <param name="strFieldName">字段名</param>
  /// <param name="strText">更新值</param>
  /// <param name="ID">主键ID</param>
  /// <returns>返回更新行</returns>
  public int UpdateState(string strFieldName,int intText,string ID)
  {
   string strSql = string.Format("UPDATE {0} set {1}={2} WHERE {3} = '{4}'", _TableName,strFieldName,intText, _PKName, ID) ;
   AseCommand  objCommand = new AseCommand(strSql) ;   
   objCommand.Connection = CurrentConnection ;
   if(CurrentTransaction != null)
   {
    objCommand.Transaction =CurrentTransaction ;
   }
   return objCommand.ExecuteNonQuery() ; 
  }

  /// <summary>
  /// 更新State状态
  /// </summary>
  /// <param name="strFieldName">字段名</param>
  /// <param name="strText">更新值</param>
  /// <param name="ID">主键ID</param>
  /// <returns>返回更新行</returns>
  public int UpdateState(string strFieldName,string strText,string ID)
  {
   string strSql = string.Format("UPDATE {0} set {1}='{2}' WHERE {3} = '{4}'", _TableName,strFieldName,strText, _PKName, ID) ;
   AseCommand  objCommand = new AseCommand(strSql) ;   
   objCommand.Connection = CurrentConnection ;
   if(CurrentTransaction != null)
   {
    objCommand.Transaction =CurrentTransaction ;
   }
   return objCommand.ExecuteNonQuery() ; 
  }

  /// <summary>
  /// 更新State状态
  /// </summary>
  /// <param name="strFieldName">字段名</param>
  /// <param name="strText">更新值</param>
  /// <param name="ID">主键ID</param>
  /// <returns>返回更新行</returns>
  public int UpdateState(string strFieldName,string strText,string strFieldName2, string ID)
  {
   string strSql = string.Format("UPDATE {0} set {1}='{2}' WHERE {3} = '{4}'", _TableName,strFieldName,strText, strFieldName2, ID) ;
   AseCommand  objCommand = new AseCommand(strSql) ;   
   objCommand.Connection = CurrentConnection ;
   if(CurrentTransaction != null)
   {
    objCommand.Transaction =CurrentTransaction ;
   }
   return objCommand.ExecuteNonQuery() ; 
  }

  /// <summary>
  /// 更新State状态
  /// </summary>
  /// <param name="strFieldName">字段名</param>
  /// <param name="strText">更新值</param>
  /// <param name="ID">主键ID</param>
  /// <returns>返回更新行</returns>
  public int UpdateState(string strFieldName,int intText,string strFieldName2, int ID)
  {
   string strSql = string.Format("UPDATE {0} set {1}={2} WHERE {3} = {4}", _TableName,strFieldName,intText, strFieldName2, ID) ;
   AseCommand  objCommand = new AseCommand(strSql) ;   
   objCommand.Connection = CurrentConnection ;
   if(CurrentTransaction != null)
   {
    objCommand.Transaction =CurrentTransaction ;
   }
   return objCommand.ExecuteNonQuery() ; 
  }

  /// <summary>
  /// 更新State状态
  /// </summary>
  /// <param name="strFieldName">字段名</param>
  /// <param name="strText">更新值</param>
  /// <param name="ID">主键ID</param>
  /// <returns>返回更新行</returns>
  public int UpdateState(string strFieldName,string strText,int ID)
  {
   string strSql = string.Format("UPDATE {0} set {1}='{2}' WHERE {3} = {4}", _TableName,strFieldName,strText, _PKName, ID) ;
   AseCommand  objCommand = new AseCommand(strSql) ;   
   objCommand.Connection = CurrentConnection ;
   if(CurrentTransaction != null)
   {
    objCommand.Transaction =CurrentTransaction ;
   }
   return objCommand.ExecuteNonQuery() ; 
  }


  /// <summary>
  /// 更新State状态
  /// </summary>
  /// <param name="strFieldName">字段名</param>
  /// <param name="strText">更新值</param>
  /// <param name="ID">主键ID</param>
  /// <returns>返回更新行</returns>
  public int UpdateState(string strFieldName,int intText,int ID)
  {
   string strSql = string.Format("UPDATE {0} set {1}={2} WHERE {3} = {4}", _TableName,strFieldName,intText, _PKName, ID) ;
   AseCommand  objCommand = new AseCommand(strSql) ;   
   objCommand.Connection = CurrentConnection ;
   if(CurrentTransaction != null)
   {
    objCommand.Transaction =CurrentTransaction ;
   }
   return objCommand.ExecuteNonQuery() ; 
  }

  /// <summary>
  /// 删除数据库中ID对应数据
  /// </summary>
  /// <param name="ID">对象ID</param>
  /// <returns>删除行数</returns>
  public int Delete(int ID)
  {
   string strSql = string.Format("DELETE FROM {0} WHERE {1} = {2}", _TableName, _PKName, ID) ;
   AseCommand  objCommand = new AseCommand(strSql) ;   
   objCommand.Connection = CurrentConnection ;
   if(CurrentTransaction != null)
   {
    objCommand.Transaction =CurrentTransaction ;
   }
   return objCommand.ExecuteNonQuery() ;
   
  }

  /// <summary>
  /// 删除数据库中ID对应数据
  /// </summary>
  /// <param name="ID">对象ID</param>
  /// <returns>删除行数</returns>
  public int Delete(string ID)
  {
   string strSql = string.Format("DELETE FROM {0} WHERE {1} = '{2}'", _TableName, _PKName, ID) ;
   AseCommand  objCommand = new AseCommand(strSql);
   objCommand.Connection = CurrentConnection;
   if(CurrentTransaction !=null)
   {
    objCommand.Transaction =CurrentTransaction;
   }
   return objCommand.ExecuteNonQuery();
   
  }

  /// <summary>
  /// 执行SQL语句
  /// </summary>
  /// <param name="strSql"></param>
  /// <returns>所影响数据库记录的行数</returns>
  public int ExecuteSql(string strSql)
  {
   try
   {
    AseCommand objCmd = new AseCommand(strSql) ;
   
    objCmd.Connection = this.CurrentConnection ;
    if(CurrentTransaction != null)
    {
     objCmd.Transaction = CurrentTransaction ;
    }
    return objCmd.ExecuteNonQuery() ;
   }
   catch
   {
    return -1;
   }
  }

 

  /// <summary>
  /// 是否存在字段值
  /// </summary>
  /// <param name="strName">返回0表示不存在,返回1表示已经存在</param>
  /// <returns></returns>
  public int IsExistFieldValue(string strFieldName,string strFieldValue)
  {
   string strSql = string.Format("select count(*) from {0} where {1}='{2}' and scType=0",_TableName,strFieldName,strFieldValue);
   DataTable objTable = new DataTable();
   QueryBySql(ref objTable,strSql);
   return Convert.ToInt32(objTable.Rows[0][0]);
  }

  /// <summary>
  /// 是否存在字段值
  /// </summary>
  /// <param name="strName">返回0表示不存在,返回1表示已经存在</param>
  /// <returns></returns>
  public int IsExistFieldValue(string strFieldName,int intFieldValue)
  {
   string strSql = string.Format("select count(*) from {0} where {1}={2} and scType=0",_TableName,strFieldName,intFieldValue);
   DataTable objTable = new DataTable();
   QueryBySql(ref objTable,strSql);
   return Convert.ToInt32(objTable.Rows[0][0]);
  }

  #endregion
  
 }
}
///
//数据库管理类
///
using System ;
using System.Data ;
using System.Data.OleDb ;
using System.Text ;
using Common ;
using Sybase.Data.AseClient;


namespace DataAccess
{
 
 /// <summary>
 /// 数据库管理类
 /// </summary>
 public class DbManager:IDisposable
 {
  #region 私有属性

  private AseConnection _CurrentConnection   = null ; // 当前数据库连接对象
  private AseTransaction _CurrentTransaction = null; // 当前事务处理对象
  private int intTranLayer      = 0 ;      // 事务嵌套处理的层数
  private string _ConnectionStr = string.Empty ;   // 数据库连接字符串

  #endregion

  #region 公共属性
  /// <summary>
  /// 当前数据库连接对象
  /// </summary>
  public  AseConnection CurrentConnection
  {
   get
   {
    if(_CurrentConnection==null)
    {
     _CurrentConnection = new AseConnection(_ConnectionStr);
    }
    if(_CurrentConnection.State == ConnectionState.Closed)
    {
     _CurrentConnection.Open();
    }
    return _CurrentConnection;
   }
  }

  /// <summary>
  /// 当前事务处理对象
  /// </summary>
  public AseTransaction CurrentTransaction
  {
   get
   {
    return _CurrentTransaction;
   }
  }

  /// <summary>
  /// 开始事务处理
  /// </summary>  
  public void BeginTransaction()
  {   
   if(_CurrentTransaction == null)
   {
    _CurrentTransaction = CurrentConnection.BeginTransaction() ;
   }
   intTranLayer++ ;   
   
  }

  /// <summary>
  /// 提交事务
  /// </summary>
  public void Commit()
  {
   // 有嵌套事务,此处不提交事务
   if(intTranLayer > 1)
   {
    intTranLayer-- ;
    
   }
   if(_CurrentTransaction != null && intTranLayer == 1)
   {
    
    _CurrentTransaction.Commit() ;
    _CurrentTransaction = null ;
    intTranLayer = 0 ;    
   }   
   
  }

  /// <summary>
  /// 回滚事务
  /// </summary>
  public void Rollback()
  {
   if(_CurrentTransaction!=null)
   {
    intTranLayer = 0 ;
    _CurrentTransaction.Rollback() ;
    _CurrentTransaction = null ;
   }
   
  }

  #endregion

  #region 私有方法
  public DbManager()
  {  
   if(_CurrentConnection == null)
   {
    _ConnectionStr = Common.Config.ConnectionString ;
    _CurrentConnection = new AseConnection(_ConnectionStr) ;
   }
  }
  
  #endregion

  #region 保护方法

  /// <summary>
  /// 释放数据库连接
  /// </summary>
  public void Dispose() 
  { 
   if(_CurrentConnection.State==ConnectionState.Open)
   {
    _CurrentConnection.Close();
   }
   this._CurrentConnection.Dispose();
   GC.SuppressFinalize(this);
  }

  protected void Finalize()
  {
   Dispose();
   
  }

  #endregion  
 }
}
//
//配置文件

using System.Xml;
using System;
using System.Collections;
using System.Configuration;
using System.Collections.Specialized;
using System.IO ;

namespace Common

 /// <summary>
 /// ZTECMSystemConfig 的摘要说明。
 /// </summary>
 public class Config:IConfigurationSectionHandler
 {
  private const  string DATAACCESS_CONNECTIONSTRING_DEFAULT   = "Provider=Sybase.ASEOLEDBProvider;Server Name=127.0.0.1,5000;Initial Catalog=unknow;User Id=sa;Password="; // 缺省数据库连接串
  private const  string DATAACCESS_CONNECTIONSTRING           = "ComConfig.DataAccess.ConnectionString"; // WebConfig中数据库连接字符串的节点名
  
  private static string _ConnectionString; // 数据库连接字符串
  private static string _AppRoot;    // 应用程序根目录

  /// <summary>
  /// 在调用ASP.NET应用程序之前从Web.Config中获取系统配置参数
  /// </summary>
  /// <param name="parent">
  ///  对应父配置节中的配置设置。
  /// </param>
  /// <param name="configContext">
  /// 在从 ASP.NET 配置系统中调用 Create 时为 HttpConfigurationContext。否则,该参数是保留参数,并且为空引用(Visual Basic 中为 Nothing)。
  /// </param>
  /// <param name="section">
  /// 一个 XmlNode,它包含配置文件中的配置信息。提供对配置节 XML 内容的直接访问。
  /// </param>
  /// <returns> 配置对象。</returns>
  public Object Create(Object parent, object configContext, XmlNode section)
  {
           
   NameValueCollection settings;
           
   try
   {
    NameValueSectionHandler baseHandler = new NameValueSectionHandler();
    settings = (NameValueCollection)baseHandler.Create(parent, configContext, section);
   }
   catch
   {
    settings = null;
   }
           
   if ( settings == null )
   {
    _ConnectionString  = DATAACCESS_CONNECTIONSTRING_DEFAULT;    
   }
   else
   {
    _ConnectionString  = ReadSetting(settings, DATAACCESS_CONNECTIONSTRING,DATAACCESS_CONNECTIONSTRING_DEFAULT);
    
   }
           
   return settings;
  }

  /// <summary>
  /// 根据获得的Key,从NameValueCollection中读取字符串值.
  /// </summary>
  /// <param name="settings"></param>
  /// <param name="key"></param>
  /// <param name="defaultValue"></param>
  /// <returns></returns>
  private static string ReadSetting(NameValueCollection settings, string key, string defaultValue)
  {
   try
   {
    Object setting = settings[key];
               
    return (setting == null) ? defaultValue : (string)setting;
   }
   catch
   {
    return defaultValue;
   }
  }

  /// <summary>
  /// 这个函数在Application_OnStart时被调用.
  /// </summary>
  /// <param name="myAppPath">应用程序路径</param>
  public static void OnApplicationStart(string AppPath)
  {
   _AppRoot = AppPath ;  
  
   //GetConfig方法会引发配置节处理程序的Create方法
   System.Configuration.ConfigurationSettings.GetConfig("ComConfig");
     
  }

  /// <summary>
  /// 用于获取MMS的数据库联接字符串
  /// </summary>
  public static string ConnectionString
  {
   get
   {
    return _ConnectionString;
   }
  }

  
  /// <value>
  /// 获取应用程序路径
  /// </value>
  public static string AppRoot
  {
   get
   {
    return _AppRoot ;
   }
  }
 }
}

/
 /// <summary>
 /// Utility 的摘要说明。
 /// 通用函数类
 /// </summary>
 public class Utility
 {
  public Utility()
  {
   //
   // TODO: 在此处添加构造函数逻辑
   //
  }

  // 将时间字符串转换成double类型, 字符串时间格式为hh:mm:ss,double类型的时间单位为秒
  public static int TimeToInt(string strTime)
  {
   int intHours = int.Parse(strTime.Substring(0, 2)) ;
   int intMinutes = int.Parse(strTime.Substring(3, 2)) ;
   int intSeconds = int.Parse(strTime.Substring(6, 2)) ;
   return intHours * 3600 + intMinutes * 60 + intSeconds ;
  }

  
  /// <summary>
  /// 写错误日志到文件
  /// </summary>
  /// <param name="strFileName">包括路径的错误日志文件名</param>
  /// <param name="ex">错误异常</param>
  public static void WriteLog(string strFileName, Exception ex)
  {               
   FileStream fs = new FileStream(strFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
           

   StreamWriter writer = new StreamWriter(fs);
   writer.BaseStream.Seek(0, SeekOrigin.End);
           
   writer.Write("/r/n{0} {1} /r/n", DateTime.Now.ToLongDateString(), DateTime.Now.ToLongTimeString());
   writer.Write("错误消息:{0} /r/n", ex.Message);
   writer.Write("错误源:{0} /r/n", ex.Source) ;
   writer.Write("错误跟踪:{0} /r/n", ex.StackTrace) ;
   writer.Write("-----------------------------------------------/r/n") ;

   writer.Flush();
   writer.Close();
  }

  /// <summary>
  /// 加密字符串
  /// </summary>
  /// <param name="sText">输入参数,要加密的字符串</param> 
  /// <returns>加密后的字符串</returns>
  public static string Encrypt(string sText)
  {
   byte[] byKey = new byte[8] ;
   byte[] IV    = new byte[] {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF} ;
   string sEncrKey = "12345678" ;
   
   byKey = Encoding.UTF8.GetBytes(sEncrKey.Substring(0, 8)) ;
   DESCryptoServiceProvider des = new DESCryptoServiceProvider() ;
   byte[] inputByteArray = Encoding.UTF8.GetBytes(sText) ;

   MemoryStream ms = new MemoryStream() ;
   CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write) ;
   cs.Write(inputByteArray, 0, inputByteArray.Length) ;
   cs.FlushFinalBlock() ;
   return Convert.ToBase64String(ms.ToArray()) ;   
           
  }

  /// <summary>
  /// 解密字符串
  /// </summary>
  /// <param name="sText">要解密的字符串</param>
  /// <returns>解密后的字符串</returns>
  public static string Decrypt(string sText)
  {
   byte[] byKey = new byte[8] ;
   byte[] IV    = new byte[] {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF} ;
   byte[] inputByteArray = new byte[sText.Length] ;
   string sDecrKey = "12345678" ;
   
   byKey = System.Text.Encoding.UTF8.GetBytes(sDecrKey.Substring(0, 8)) ;
   DESCryptoServiceProvider des = new DESCryptoServiceProvider() ;
   inputByteArray = Convert.FromBase64String(sText) ;   

   MemoryStream ms = new MemoryStream() ;
   CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write) ;
   cs.Write(inputByteArray, 0, inputByteArray.Length) ;
   cs.FlushFinalBlock() ;
   Encoding encoding =Encoding.UTF8 ;
   return encoding.GetString(ms.ToArray()) ;              
   
  }
 }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值