using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections;
using System.Xml;
namespace clsLibrarySQLHelper
{
public class SQLHelper_Erp
{
//public static string sConnStr = ConfigurationManager.ConnectionStrings["ConnStr"].ToString();
public static string sConnStr = ConfigurationManager.AppSettings["ConnStr"];
// private static SqlConnection conn;
/// <summary>
/// 静态类
/// </summary>
static SQLHelper_Erp()
{
}
/// <summary>
/// Connection
/// </summary>
/// <returns></returns>
// public static SqlConnection GetConn()
// {
// return conn ;
// }
/// <summary>
/// 执行Sql语句
/// </summary>
/// <param name="sSql"></param>
/// <returns></returns>
public static bool ExecuteSQl(string sSql, params int[] TimeOut)
{
sSql = XmlHelper.RefreshLanguageID(sSql);
SqlConnection conn = new SqlConnection(sConnStr);
SqlCommand cmd = new SqlCommand();
if (TimeOut.Length > 0)
{
int t = TimeOut[0];
cmd.CommandTimeout = t;
}
try
{
conn.Open();
cmd.Connection = conn;
cmd.CommandText = sSql;
cmd.ExecuteNonQuery();
return true;
}
catch (SqlException ex)
{
XmlHelper.WriteFileLog("SQl代码错误:" + sSql + "\r\n" + ex.StackTrace + " \r\n " + ex.Message, "SQl错误", "ExecuteSQl");
throw ex;
//return false;
}
catch (Exception ex)
{
XmlHelper.WriteFileLog("SQl代码错误:" + sSql + "\r\n" + ex.Message, "SQl错误", "ExecuteSQl");
throw ex;
}
finally
{
cmd.Dispose();
conn.Close();
}
}
/// <summary>
/// 执行Sql语句,并返回影响的记录的行
/// </summary>
/// <param name="sSql"></param>
/// <returns></returns>
public static int GetCount(string sSql)
{
sSql = XmlHelper.RefreshLanguageID(sSql);
SqlConnection conn = new SqlConnection(sConnStr);
SqlCommand cmd = new SqlCommand(sSql, conn);
try
{
conn.Open();
//cmd.Connection =conn;
//cmd.CommandText=sSql;
return cmd.ExecuteNonQuery();
}
catch (SqlException ex)
{
XmlHelper.WriteFileLog("SQl代码错误:" + sSql + "\r\n" + ex.Message, "SQl错误", "getCount");
throw ex;
}
finally
{
cmd.Dispose();
conn.Close();
}
}
/// <summary>
/// 返回数据表
/// </summary>
/// <param name="sSql">SQL语句</param>
/// <param name="sTableName">SQL语句</param>
/// <returns></returns>
public DataTable GetDataTable(string sSql, string sTableName)
{
sSql = XmlHelper.RefreshLanguageID(sSql);
SqlConnection conn = new SqlConnection(sConnStr);
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(sSql, conn);
try
{
conn.Open();
da.Fill(ds);
return ds.Tables[sTableName.Trim()];
}
catch (Exception ex)
{
XmlHelper.WriteFileLog("SQl代码错误:" + sSql + "\r\n" + ex.Message, "SQl错误", "GetDataTable");
throw ex;
}
finally
{
da.Dispose();
conn.Close();
}
//return null;
}
/// <summary>
/// 向数据集添加表
/// </summary>
/// <param name="sSql">SQL语句</param>
/// <param name="ds">要添加表的数据集</param>
/// <param name="tableName">表名</param>
public static void AddTableToDataSet(string sSql, DataSet ds, string tableName)
{
sSql = XmlHelper.RefreshLanguageID(sSql);
SqlConnection conn = new SqlConnection(sConnStr);
SqlDataAdapter da = new SqlDataAdapter(sSql, conn);
try
{
conn.Open();
da.Fill(ds, tableName);
}
catch (SqlException ex)
{
XmlHelper.WriteFileLog("SQl代码错误:" + sSql + "\r\n" + ex.Message, "SQl错误", "AddTableToDataSet");
throw new Exception(ex.Message);
}
finally
{
da.Dispose();
conn.Close();
}
}
/// <summary>
/// 返回数据集
/// </summary>
/// <param name="sSql">SQL语句</param>
/// <returns></returns>
public static DataSet GetDataSet(string sSql, params int[] TimeOut)
{
sSql = XmlHelper.RefreshLanguageID(sSql);
SqlConnection conn = new SqlConnection(sConnStr);
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(sSql, conn);
if (TimeOut.Length > 0)
{
int t = TimeOut[0];
da.SelectCommand.CommandTimeout = t;
}
try
{
conn.Open();
da.Fill(ds);
}
catch (SqlException ex)
{
XmlHelper.WriteFileLog("SQl代码错误:" + sSql + "\r\n" + ex.Message, "SQl错误", "GetDataSet");
throw new Exception(ex.Message);
}
finally
{
da.Dispose();
conn.Close();
}
return ds;
}
/// <summary>
/// 返回数据集
/// </summary>
/// <param name="sSql">SQL语句</param>
/// <param name="sTableName">想要的表名称</param>
/// <returns></returns>
public static DataSet GetDataSet(string sSql, string sTableName, params int[] TimeOut)
{
sSql = XmlHelper.RefreshLanguageID(sSql);
SqlConnection conn = new SqlConnection(sConnStr);
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(sSql, conn);
if (TimeOut.Length > 0)
{
int t = TimeOut[0];
da.SelectCommand.CommandTimeout = t;
}
try
{
conn.Open();
da.Fill(ds, sTableName);
}
catch (SqlException ex)
{
XmlHelper.WriteFileLog("SQl代码错误:" + sSql + "\r\n" + ex.Message, "SQl错误", "getdataset");
throw new Exception(ex.Message);
}
finally
{
da.Dispose();
conn.Close();
conn.Dispose();
}
return ds;
}
/// <summary>
/// 分页返回数据集
/// </summary>
/// <param name="sSql">SQL语句</param>
/// <param name="sTableName">要设定的表名</param>
/// <param name="iPageNum">当前页码</param>
/// <param name="iPageCount">每页显示的条数</param>
/// <returns></returns>
public static DataSet GetDataSet(string sSql, string sTableName, int iPageNum, int iPageCount)
{
sSql = XmlHelper.RefreshLanguageID(sSql);
SqlConnection conn = new SqlConnection(sConnStr);
iPageNum -= 1;
if (iPageNum <= 0) iPageNum = 0;
if (iPageCount <= 0) iPageCount = 10; //默认为10条
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(sSql, conn);
try
{
conn.Open();
da.Fill(ds, iPageNum * iPageCount, iPageCount, sTableName);
}
catch (SqlException ex)
{
XmlHelper.WriteFileLog("SQl代码错误:" + sSql + "\r\n" + ex.Message, "SQl错误", "getdataset");
throw new Exception(ex.Message);
}
finally
{
da.Dispose();
conn.Close();
}
return ds;
}
/// <summary>
/// 返回数据
/// </summary>
/// <param name="sSql"></param>
/// <returns></returns>
//public static SqlDataReader dr_DataReader;
public static SqlDataReader GetDataReader(string sSql, params int[] TimeOut)
{
sSql = XmlHelper.RefreshLanguageID(sSql);
SqlConnection conn = new SqlConnection(sConnStr);
SqlCommand cmd = new SqlCommand(sSql, conn);
if (TimeOut.Length > 0)
{
int t = TimeOut[0];
cmd.CommandTimeout = t;
}
SqlDataReader dr;
try
{
conn.Open();
dr = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
}
catch (Exception ex)
{
XmlHelper.WriteFileLog("SQl代码错误:" + sSql + "\r\n" + ex.Message, "SQl错误", "getdatareader");
throw new Exception(ex.Message);
}
finally
{
}
return dr;
}
/// <summary>
/// 关闭连接
/// </summary>
/// <param name="sSql"></param>
/// <returns></returns>
public static void Colse_Conn()
{
//SqlConnection conn = new SqlConnection(sConnStr);
//SqlDataReader dr;
//if (dr != null)
//{
// dr.Close();
//}
//conn.Close();
//if (conn.State == ConnectionState.Open)
//{
// conn.Close();
//}
}
/// <summary>
/// 返回一行一列的值
/// </summary>
/// <param name="sSql"></param>
/// <returns></returns>
public static string FetFirstCol(string sSql, params int[] TimeOut)
{
sSql = XmlHelper.RefreshLanguageID(sSql);
SqlConnection conn = new SqlConnection(sConnStr);
SqlCommand cmd = new SqlCommand(sSql, conn);
if (TimeOut.Length > 0)
{
int t = TimeOut[0];
cmd.CommandTimeout = t;
}
object obj;
try
{
conn.Open();
obj = cmd.ExecuteScalar();
if (obj == null)
{
return "";
}
else
{
return obj.ToString();
}
}
catch (Exception ex)
{
XmlHelper.WriteFileLog("SQl代码错误:" + sSql + "\r\n" + ex.Message, "SQl错误", "getfirstcol");
throw new Exception(ex.Message);
}
finally
{
conn.Close();
}
}
/// <summary>
/// 事务处理
/// </summary>
/// <param name="sSql"></param>
/// <returns></returns>
public static int ExecuteTransaction(System.Collections.ArrayList sSql)
{
SqlConnection conn = new SqlConnection(sConnStr);
System.Data.SqlClient.SqlTransaction Trans;
SqlCommand cmd = new SqlCommand();
conn.Open();
Trans = conn.BeginTransaction();
cmd.Transaction = Trans;
int i = 0, iResult = 0;
cmd.Connection = conn;
try
{
for (i = 0; i < sSql.Count; i++)
{
cmd.CommandText = sSql[i].ToString();
iResult = cmd.ExecuteNonQuery();
}
Trans.Commit();
}
catch (Exception ex)
{
XmlHelper.WriteFileLog("SQl代码错误:" + sSql + "\r\n" + ex.Message, "SQl错误", "ExecuteTransaction");
Trans.Rollback();
throw ex;
//return false;
}
finally
{
conn.Close();
}
return iResult;
}
/// <summary>
/// 返回存储过程返回值
/// </summary>
/// <param name="sSql"></param>
/// <returns></returns>
public static string ExecuteProcedure(string sSql)
{
#region ExecuteProcedure
sSql = XmlHelper.RefreshLanguageID(sSql);
SqlConnection conn = new SqlConnection(sConnStr);
SqlCommand cmd = new SqlCommand(sSql, conn);
object str;
//cmd.Parameters[0] = new SqlParameter("@RETURN_VALUE", SqlDbType.Int);
//cmd.Parameters[0].Direction = ParameterDirection.ReturnValue; //添加获得返回值的参数
cmd.Parameters.Add("@RETURN_VALUE", "").Direction = ParameterDirection.ReturnValue; //添加获得返回值的参数
try
{
conn.Open();
cmd.ExecuteNonQuery();
str = cmd.Parameters["@RETURN_VALUE"].Value; //获得返回值的地方
if (str == null)
{
return "";
}
else
{
return str.ToString();
}
}
catch (Exception ex)
{
XmlHelper.WriteFileLog("SQl代码错误:" + sSql + "\r\n" + ex.Message, "SQl错误", "ExecuteProcedure");
throw new Exception(ex.Message);
}
finally
{
conn.Close();
}
#endregion
}
/// <summary>
/// 返回存储过程输出值
/// </summary>
/// <param name="sSql"></param>
/// <returns></returns>
public static string ExecuteProcedureOut(string sSql, int iType, string iID)
{
#region ExecuteProcedure
sSql = XmlHelper.RefreshLanguageID(sSql);
SqlConnection conn = new SqlConnection(sConnStr);
SqlCommand cmd = new SqlCommand();
object str;
cmd.Connection = conn;
cmd.CommandText = sSql;
cmd.Parameters.AddWithValue("@iType", iType);
cmd.Parameters.AddWithValue("@iBillID", iID);
cmd.Parameters.Add("@RETURN_VALUE", SqlDbType.NVarChar, 200).Direction = ParameterDirection.Output;
cmd.CommandType = CommandType.StoredProcedure;
try
{
conn.Open();
cmd.ExecuteNonQuery();
str = cmd.Parameters["@RETURN_VALUE"].Value; //获得返回值的地方
if (str == null)
{
return "";
}
else
{
return str.ToString();
}
}
catch (Exception ex)
{
XmlHelper.WriteFileLog("SQl代码错误:" + sSql + "\r\n" + ex.Message, "SQl错误", "ExecuteProcedureOut");
throw new Exception(ex.Message);
}
finally
{
conn.Close();
}
#endregion
}
/// <summary>
/// 执行过程返回一个数据集
/// </summary>
/// <param name="Procedure_name"></param>
/// <param name="Table_name"></param>
/// <param name="_Ht"></param>
/// <returns></returns>
public static DataSet GetDataSetByProcedure(string Procedure_name, string Table_name, Hashtable _Ht)
{
SqlConnection conn = new SqlConnection(sConnStr);
SqlCommand cmd = new SqlCommand(Procedure_name, conn);
cmd.CommandType = CommandType.StoredProcedure;
AddInParaValues(conn, cmd, _Ht);
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter();
try
{
conn.Open();
da.SelectCommand = cmd;
da.Fill(ds, Table_name);
conn.Close();
return ds;
}
catch (SqlException ex)
{
XmlHelper.WriteFileLog("SQl代码错误:" + Procedure_name + "\r\n" + ex.Message, "SQl错误", "GetDataSetByProcedure");
throw new Exception(ex.Message);
}
finally
{
da.Dispose();
conn.Close();
}
}
/// <summary>
/// 为 SqlCommand 添加参数及赋值
/// </summary>
/// <param name="comm">SqlCommand</param>
/// <param name="paraValues">参数数组(必须遵循存储过程参数列表的顺序)</param>
public static void AddInParaValues(SqlConnection conn, SqlCommand comm, Hashtable htParametersValues)
{
comm.Parameters.Add(new SqlParameter("@RETURN_VALUE", SqlDbType.Int));
comm.Parameters["@RETURN_VALUE"].Direction = ParameterDirection.ReturnValue;
if (htParametersValues != null)
{
DataTable dt = GetParameters(conn, comm.CommandText);
int i = 0;
foreach (DataRow row in dt.Rows)
{
string key = row[3].ToString();
if (key != "@RETURN_VALUE")
{
int value = int.Parse(row[4].ToString());
if (value == 1)
{
comm.Parameters.AddWithValue(key, htParametersValues[key]);
}
else if (value == 2)//value为2则是输出参数
{
comm.Parameters.AddWithValue(key, htParametersValues[key]).Direction = ParameterDirection.Output;
//comm.Parameters[key].Direction = ParameterDirection.Output;
}
i++;
}
}
}
}
/// <summary>
/// 获取存储过程的参数列表
/// </summary>
/// <param name="proc_Name">存储过程名称</param>
/// <returns>DataTable</returns>
public static DataTable GetParameters(SqlConnection conn, string proc_Name)
{
SqlCommand comm = new SqlCommand("dbo.sp_sproc_columns", conn);
comm.CommandType = CommandType.StoredProcedure;
comm.Parameters.AddWithValue("@procedure_name", (object)proc_Name);
SqlDataAdapter sda = new SqlDataAdapter(comm);
DataTable dt = new DataTable();
sda.Fill(dt);
return dt;
}
#region 存储过程操作
/// <summary>
/// 执行存储过程,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )
/// </summary>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
/// <returns>SqlDataReader</returns>
public static SqlDataReader RunProcedure(string storedProcName, IDataParameter[] parameters)
{
SqlConnection conn = new SqlConnection(sConnStr);
SqlDataReader returnReader;
conn.Open();
SqlCommand command = BuildQueryCommand(conn, storedProcName, parameters);
command.CommandType = CommandType.StoredProcedure;
returnReader = command.ExecuteReader(CommandBehavior.CloseConnection);
return returnReader;
}
/// <summary>
/// 执行存储过程
/// </summary>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
/// <param name="tableName">DataSet结果中的表名</param>
/// <returns>DataSet</returns>
public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName)
{
using (SqlConnection connection = new SqlConnection(sConnStr))
{
DataSet dataSet = new DataSet();
connection.Open();
SqlDataAdapter sqlDA = new SqlDataAdapter();
sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
sqlDA.Fill(dataSet, tableName);
connection.Close();
return dataSet;
}
}
/// <summary>
/// 构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值)
/// </summary>
/// <param name="connection">数据库连接</param>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
/// <returns>SqlCommand</returns>
private static SqlCommand BuildQueryCommand(SqlConnection conn, string storedProcName, IDataParameter[] parameters)
{
SqlCommand cmd = new SqlCommand(storedProcName, conn);
cmd.CommandType = CommandType.StoredProcedure;
foreach (SqlParameter parameter in parameters)
{
if (parameter != null)
{
// 检查未分配值的输出参数,将其分配以DBNull.Value.
if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
(parameter.Value == null))
{
parameter.Value = DBNull.Value;
}
cmd.Parameters.Add(parameter);
}
}
return cmd;
}
/// <summary>
/// 创建 SqlCommand 对象实例(用来返回一个整数值)
/// </summary>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
/// <returns>SqlCommand 对象实例</returns>
private static SqlCommand BuildIntCommand(SqlConnection conn, string storedProcName, IDataParameter[] parameters)
{
SqlCommand cmd = BuildQueryCommand(conn, storedProcName, parameters);
cmd.Parameters.Add(new SqlParameter("ReturnValue",
SqlDbType.Int, 4, ParameterDirection.ReturnValue,
false, 0, 0, string.Empty, DataRowVersion.Default, null));
return cmd;
}
#endregion
/// <summary>
/// 分页参数
/// </summary>
/// <returns></returns>
public static SqlParameter[] pagePara()
{
SqlParameter[] parameter = {
new SqlParameter("@TableName",SqlDbType.VarChar,255),//表名,如tb_testtable
new SqlParameter("@ReturnFields",SqlDbType.VarChar,1000),//字段名,如id,userName
new SqlParameter("@Orderfld",SqlDbType.VarChar,255),//排序的字段名,如id
new SqlParameter("@PageSize",SqlDbType.Int,4),//一页大小,如10
new SqlParameter("@PageIndex",SqlDbType.Int,4),//当前页码
new SqlParameter("@OrderType",SqlDbType.Int,4),//设置排序类型,非0则降序
new SqlParameter("@Where",SqlDbType.VarChar,1500),//查询条件(注意不要加:where)
new SqlParameter("@RecordCount",SqlDbType.Int,4)};
return parameter;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Web;
using System.IO;
using System.Windows.Forms;
namespace clsLibrarySQLHelper
{
/// <summary>
///
/// 用于 读取XML中的SQL语句用
/// </summary>
public class XmlHelper
{
/// <summary>
/// 得到SQL语句可以指定参数
/// </summary>
/// <param name="FileName"></param>
/// <param name="NameSpace"></param>
/// <param name="ClassName"></param>
/// <param name="FunctionName"></param>
/// <param name="Remark"></param>
/// <param name="SID"></param>
/// <param name="table">参数列表</param>
/// <returns></returns>
public static string GetXmlStr(string FileName, string NameSpace, string ClassName, string FunctionName, string Remark, string SID, System.Collections.Hashtable table)
{
string sqlStr = GetXmlStr(FileName, NameSpace, ClassName, FunctionName, Remark, SID);
System.Collections.IDictionaryEnumerator Idiction = table.GetEnumerator();
while (Idiction.MoveNext())
{
if (Idiction.Key == null)
continue;
string key = string.Empty, value = string.Empty;
key = Idiction.Key.ToString();
if (Idiction.Value != null)
{
value = Idiction.Value.ToString();
}
else
{
value = "NULL";
}
sqlStr = sqlStr.Replace(key, value);
}
return sqlStr;
}
/// <summary>
/// 得到SQL语句
/// </summary>
/// <param name="FileName"></param>
/// <param name="NameSpace"></param>
/// <param name="ClassName"></param>
/// <param name="FunctionName"></param>
/// <param name="Remark"></param>
/// <param name="SID"></param>
/// <returns></returns>
public static string GetXmlStr(string FileName, string NameSpace, string ClassName, string FunctionName, string Remark, string SID)
{
string sql = string.Empty;
try
{
XmlDocument doc = new XmlDocument();
string XmlPath = System.Configuration.ConfigurationManager.AppSettings["XmlPath"].Replace("\\", "//");
doc.Load(XmlPath + "/" + FileName);
sql = GetXmlNodeStr("/root/NameSpace/Class/Function[@SID='" + SID + "']", doc);
}
catch (Exception)
{
throw;
}
return sql;
}
public static string RefreshLanguageID(string sql)
{
if (sql.Contains("LanguageID"))
{
if (System.Web.HttpContext.Current.Request.Cookies["ERCookie"] == null)
{
if (sql.IndexOf("#LanguageID") > 0)
sql = sql.Replace("#LanguageID", "1");
else
sql = sql.Replace("@LanguageID", "1");
}
else
{
string languageid = System.Web.HttpContext.Current.Request.Cookies["ERCookie"].Values["LanguageID"];
if (!string.IsNullOrEmpty(languageid))
{
if (sql.IndexOf("#LanguageID") > 0)
sql = sql.Replace("#LanguageID", languageid);
else
sql = sql.Replace("@LanguageID", languageid);
}
}
}
return sql;
}
public static String GetXmlNodeStr(string xpath, XmlDocument doc)
{
XmlNode node = doc.SelectSingleNode(xpath);
if (node != null)
return node.InnerText;
else
return string.Empty;
}
public static XmlNode GetXmlNode(XmlNodeList list, string Name)
{
foreach (XmlNode nod in list)
{
if (nod.Attributes["Name"].Value == Name)
{
return nod;
}
}
return null;
}
static XmlNodeList GetXmlNodeList(string Name)
{
XmlDocument doc = new XmlDocument();
return doc.GetElementsByTagName(Name);
}
static XmlNode GetFunctionSqlStr(XmlNode ClassName, string FunctionName, string Sid)
{
foreach (XmlNode nod in ClassName.ChildNodes)
{
if (nod.Attributes["Name"].Value == FunctionName)
{
if (nod.Attributes["SID"].Value == Sid)
{
return nod;
}
}
}
return null;
}
/// <summary>
/// 写入错误信息文件 注:适用于SQL 错误
/// </summary>
/// <param name="logs"></param>
/// <param name="type"></param>
/// <param name="SourceFn"></param>
public static void WriteFileLog(string logs, string type, string SourceFn)
{
string UName = string.Empty;
string IP = string.Empty;
if (HttpContext.Current != null)
{
HttpCookie cook = System.Web.HttpContext.Current.Request.Cookies["ERCookie"];
if (cook != null)
{
UName = HttpUtility.UrlDecode(cook.Values["cUserName"]);
}
IP = System.Web.HttpContext.Current.Request.UserHostAddress;
}
string xmlpath = Application.StartupPath + "\\Log\\Logs.log";
string line = "====================================================================================================================================================\r\n";
logs = line + "【时间:" + DateTime.Now.ToString() + "】\r\n" + "【信息:" + logs + "】\r\n";
logs += line;
File.AppendAllText(xmlpath, logs);
}
/// <summary>
/// 写入错误信息文件 注:适用于SQL 错误
/// </summary>
/// <param name="logs"></param>
/// <param name="type"></param>
/// <param name="SourceFn"></param>
public static void WriteFileLog(string logs)
{
string xmlpath = Application.StartupPath + "\\Log\\Logs.log";
string line = "====================================================================================================================================================\r\n";
logs = line + "【时间:" + DateTime.Now.ToString() + "】\r\n" + "【信息:" + logs + "】\r\n";
logs += line;
File.AppendAllText(xmlpath, logs);
}
/// <summary>
/// 写入错误信息文件 注:适用于web页面发生的未知请求错误
/// </summary>
/// <param name="logs"></param>
/// <param name="type"></param>
/// <param name="SourceFn"></param>
public static void WriteFileLogForWeb(string logs, string type, string SourceFn)
{
string UName = string.Empty;
string IP = string.Empty;
if (HttpContext.Current != null)
{
HttpCookie cook = System.Web.HttpContext.Current.Request.Cookies["ERCookie"];
if (cook != null)
{
UName = HttpUtility.UrlDecode(cook.Values["cUserName"]);
}
IP = System.Web.HttpContext.Current.Request.UserHostAddress;
}
string xmlpath = System.Web.HttpContext.Current.Server.MapPath("~/WebError.log");
//string xmlpath = System.Configuration.ConfigurationManager.AppSettings["XmlPath"].ToString().Replace("XML\\", "");
//string path = xmlpath += "\\WebError.log";
string line = "====================================================================================================================================================\r\n";
logs = line + "用户:" + UName + "\t时间:" + DateTime.Now.ToString() + "\tIP:" + IP + "\r\n错误类型:" + type + "\t请求页面:" + SourceFn + "\r\n" + "错误信息:" + logs + "\r\n";
logs += line;
File.AppendAllText(xmlpath, logs);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
namespace clsLibrarySQLHelper
{
/// <summary>
/// 读取config配置文件
/// </summary>
public class clsConfig
{
public clsConfig()
{
///
/// TODO: 在此处添加构造函数逻辑
///
}
/// <summary>
/// 写操作
/// </summary>
/// <param name="strExecutablePath"></param>
/// <param name="AppKey"></param>
/// <param name="AppValue"></param>
public static void ConfigSetValue(string strExecutablePath, string AppKey, string AppValue)
{
#region ConfigSetValue
XmlDocument xDoc = new XmlDocument();
//获取可执行文件的路径和名称
xDoc.Load(strExecutablePath + ".config");
XmlNode xNode;
XmlElement xElem1;
XmlElement xElem2;
xNode = xDoc.SelectSingleNode("//connectionStrings");
// xDoc.Load(System.Windows.Forms.Application.ExecutablePath + ".config");
xElem1 = (XmlElement)xNode.SelectSingleNode("//add[@name='" + AppKey + "']");
if (xElem1 != null) xElem1.SetAttribute("connectionString", AppValue);
else
{
xElem2 = xDoc.CreateElement("add");
xElem2.SetAttribute("name", AppKey);
xElem2.SetAttribute("connectionString", AppValue);
xNode.AppendChild(xElem2);
}
xDoc.Save(strExecutablePath + ".config");
#endregion
}
/// <summary>
/// 读操作
/// </summary>
/// <param name="strExecutablePath"></param>
/// <param name="appKey"></param>
/// <returns></returns>
public string ConfigGetValue(string strExecutablePath, string appKey)
{
#region ConfigGetValue
XmlDocument xDoc = new XmlDocument();
try
{
xDoc.Load(strExecutablePath + ".config");
XmlNode xNode;
XmlElement xElem;
xNode = xDoc.SelectSingleNode("//settings");
xElem = (XmlElement)xNode.SelectSingleNode("//add[@key='" + appKey + "']");
if (xElem != null)
return xElem.GetAttribute("value");
else
return "";
}
catch (Exception)
{
return "";
}
#endregion
}
}
}