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