/// <summary> /// 获取指定元素指定属性的值 /// </summary> /// <param name="fileName">xml文件的完整路径</param> /// <param name="path">元素路径</param> /// <param name="propertyName">属性名称</param> /// <returns></returns> public static OperationReturn GetElementPropertyValue(string fileName, string path, string propertyName) { OperationReturn optReturn = new OperationReturn(); optReturn.Result = true; optReturn.Code = Defines.RET_SUCCESS; try { if (!File.Exists(fileName)) { optReturn.Result = false; optReturn.Code = Defines.RET_FILE_NOT_EXIST; optReturn.Message = string.Format("File not exist.\t{0}", fileName); return(optReturn); } XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(fileName); XmlNode node = xmlDoc.SelectSingleNode(path); XmlElement element = node as XmlElement; if (element == null) { optReturn.Result = false; optReturn.Code = Defines.RET_XML_ELE_NOT_EXIST; optReturn.Message = string.Format("XmlElement not exist.\t{0}", path); return(optReturn); } var value = element.GetAttribute(propertyName); optReturn.Data = value; } catch (Exception ex) { optReturn.Result = false; optReturn.Code = Defines.RET_FAIL; optReturn.Message = ex.Message; optReturn.Exception = ex; } return(optReturn); }
/// <summary> /// 执行存储过程 /// </summary> /// <param name="procedureName"></param> /// <param name="parameters"></param> /// <returns></returns> public OperationReturn ExecuteProcedure(string procedureName, List <DBCommandParameter> parameters) { OperationReturn optReturn = new OperationReturn(); optReturn.Result = true; optReturn.Code = Defines.RET_SUCCESS; if (mDBParam == null) { optReturn.Result = false; optReturn.Code = Defines.RET_OBJECT_NULL; optReturn.Message = string.Format("DatabaseParam is null"); return(optReturn); } if (mObjConnection == null) { string strConn = GetConnectionString(mDBParam); lock (mObjConnectionLocker) { optReturn = GetConnection(mDBParam.DBType, strConn); } if (!optReturn.Result) { return(optReturn); } mObjConnection = optReturn.Data as IDbConnection; } if (mObjConnection == null) { optReturn.Result = false; optReturn.Code = Defines.RET_OBJECT_NULL; optReturn.Message = string.Format("Connection is null"); return(optReturn); } try { IDbDataParameter[] arrDataParameters = new IDbDataParameter[parameters.Count]; for (int i = 0; i < parameters.Count; i++) { IDbDataParameter parameter; switch (parameters[i].DBType) { //case Defines.VCT_DBTYPE_MYSQL: // parameter = MySqlOperations.GetDataParameter(parameters[i]); // break; case Defines.VCT_DBTYPE_MSSQL: parameter = MsSqlOperations.GetDataParameter(parameters[i]); break; //case Defines.VCT_DBTYPE_ORACLE: // parameter = OracleOperations.GetDataParameter(parameters[i]); // break; default: optReturn.Result = false; optReturn.Code = Defines.RET_NOT_IMPLIMENT; optReturn.Message = string.Format("Database type not support.\t{0}", parameters[i].DBType); return(optReturn); } if (parameter == null) { optReturn.Result = false; optReturn.Code = Defines.RET_OBJECT_NULL; optReturn.Message = string.Format("Parameter is null"); return(optReturn); } parameter.Value = parameters[i].ParamValue; parameter.Direction = parameters[i].Direction; arrDataParameters[i] = parameter; } IDbCommand objCmd = mObjConnection.CreateCommand(); objCmd.CommandType = CommandType.StoredProcedure; objCmd.CommandText = procedureName; for (int i = 0; i < arrDataParameters.Length; i++) { objCmd.Parameters.Add(arrDataParameters[i]); } if (mObjConnection.State != ConnectionState.Open) { lock (mObjConnectionLocker) { mObjConnection.Open(); } } optReturn.IntValue = objCmd.ExecuteNonQuery(); for (int i = 0; i < arrDataParameters.Length; i++) { if (arrDataParameters[i].Direction == ParameterDirection.Output || arrDataParameters[i].Direction == ParameterDirection.InputOutput) { parameters[i].ParamValue = arrDataParameters[i].Value; } } optReturn.Data = parameters; } catch (Exception ex) { optReturn.Result = false; optReturn.Code = Defines.RET_FAIL; optReturn.Message = ex.Message; optReturn.Exception = ex; } return(optReturn); }
/// <summary> /// 获取数据集 /// </summary> /// <param name="strSql">Sql命令</param> /// <returns></returns> public OperationReturn GetDataSet(string strSql) { OperationReturn optReturn = new OperationReturn(); optReturn.Result = true; optReturn.Code = Defines.RET_SUCCESS; if (mDBParam == null) { optReturn.Result = false; optReturn.Code = Defines.RET_OBJECT_NULL; optReturn.Message = string.Format("DatabaseParam is null"); return(optReturn); } if (mObjConnection == null) { string strConn = GetConnectionString(mDBParam); lock (mObjConnectionLocker) { optReturn = GetConnection(mDBParam.DBType, strConn); } if (!optReturn.Result) { return(optReturn); } mObjConnection = optReturn.Data as IDbConnection; } if (mObjConnection == null) { optReturn.Result = false; optReturn.Code = Defines.RET_OBJECT_NULL; optReturn.Message = string.Format("Connection is null"); return(optReturn); } optReturn = GetDataAdapter(mDBParam.DBType, mObjConnection, strSql); if (!optReturn.Result) { return(optReturn); } IDataAdapter objAdapter = optReturn.Data as IDataAdapter; if (objAdapter == null) { optReturn.Result = false; optReturn.Code = Defines.RET_OBJECT_NULL; optReturn.Message = string.Format("DataAdapter is null"); return(optReturn); } DataSet objDS = new DataSet(); try { if (mObjConnection.State != ConnectionState.Open) { lock (mObjConnectionLocker) { mObjConnection.Open(); } } objAdapter.Fill(objDS); optReturn.Data = objDS; } catch (Exception ex) { optReturn.Result = false; optReturn.Code = Defines.RET_FAIL; optReturn.Message = ex.Message; optReturn.Exception = ex; } return(optReturn); }
/// <summary> /// 静态方法,获取数据集 /// </summary> /// <param name="strConn">数据库连接字符串</param> /// <param name="strSql">Sql 命令</param> /// <returns></returns> public static OperationReturn GetDataSet(string strConn, string strSql) { OperationReturn optReturn = new OperationReturn(); optReturn.Result = true; optReturn.Code = Defines.RET_SUCCESS; int dbType = GetDBType(strConn); if (dbType == Defines.VCT_DBTYPE_UNKNOWN) { optReturn.Result = false; optReturn.Code = Defines.RET_NOT_EXIST; optReturn.Message = string.Format("Unkown database type\t{0}", dbType); return(optReturn); } optReturn = GetConnection(dbType, strConn); if (!optReturn.Result) { return(optReturn); } IDbConnection objConn = optReturn.Data as IDbConnection; if (objConn == null) { optReturn.Result = false; optReturn.Code = Defines.RET_OBJECT_NULL; optReturn.Message = string.Format("Connection is null"); return(optReturn); } optReturn = GetDataAdapter(dbType, objConn, strSql); if (!optReturn.Result) { return(optReturn); } IDataAdapter objAdapter = optReturn.Data as IDataAdapter; if (objAdapter == null) { optReturn.Result = false; optReturn.Code = Defines.RET_OBJECT_NULL; optReturn.Message = string.Format("DataAdapter is null"); return(optReturn); } DataSet objDS = new DataSet(); try { objConn.Open(); objAdapter.Fill(objDS); optReturn.Data = objDS; } catch (Exception ex) { optReturn.Result = false; optReturn.Code = Defines.RET_FAIL; optReturn.Message = ex.Message; optReturn.Exception = ex; } finally { CloseConnection(objConn); } return(optReturn); }
/// <summary> /// FTP方式下载文件 /// </summary> /// <param name="parameters"> /// 下载参数 /// 0:服务器地址 /// 1:端口 /// 2:登录名(如果为空,则匿名下载) /// 3:登录密码 /// 4:源文件路径 /// 5:存放路径 /// 6: 如果目标文件已经存在,是否替换文件(可选) /// </param> /// <returns></returns> public static OperationReturn DownloadFileFTP(string[] parameters) { OperationReturn optReturn = new OperationReturn(); optReturn.Result = true; optReturn.Code = Defines.RET_SUCCESS; try { if (parameters == null || parameters.Length < 6) { optReturn.Result = false; optReturn.Code = Defines.RET_PARAM_INVALID; optReturn.Message = string.Format("Download parameter is null or length invalid."); return(optReturn); } string strTargetFile = parameters[5]; string strTargetDir = strTargetFile.Substring(0, strTargetFile.LastIndexOf("\\")); if (!Directory.Exists(strTargetDir)) { Directory.CreateDirectory(strTargetFile); } if (File.Exists(strTargetFile)) { if (parameters.Length > 6 && parameters[6] == "1") { File.Delete(strTargetFile); } else { optReturn.Result = false; optReturn.Code = Defines.RET_FILE_ALREADY_EXIST; optReturn.Message = string.Format("Target file already exist.\t{0}", strTargetFile); return(optReturn); } } string strRequest = string.Format("ftp://{0}:{1}/{2}", parameters[0], parameters[1], parameters[4]); FtpWebRequest ftpWebRequest = (FtpWebRequest)WebRequest.Create(strRequest); if (!string.IsNullOrEmpty(parameters[2])) { ftpWebRequest.Credentials = new NetworkCredential(parameters[2], parameters[3]); string code = Convert.ToBase64String(Encoding.ASCII.GetBytes(string.Format("{0}:{1}", parameters[2], parameters[3]))); ftpWebRequest.Headers.Add("Authorization", "Basic" + code); } WebResponse ftpWebResponse = ftpWebRequest.GetResponse(); Stream stream = ftpWebResponse.GetResponseStream(); if (stream == null) { optReturn.Result = false; optReturn.Code = Defines.RET_OBJECT_NULL; optReturn.Message = string.Format("Response stream is null"); return(optReturn); } using (FileStream fileStream = new FileStream(strTargetFile, FileMode.Create, FileAccess.Write)) { byte[] buffer = new byte[1024]; int readed = stream.Read(buffer, 0, 1024); while (readed > 0) { fileStream.Write(buffer, 0, readed); readed = stream.Read(buffer, 0, 1024); } fileStream.Close(); stream.Close(); } optReturn.StringValue = strTargetFile; } catch (Exception ex) { optReturn.Result = false; optReturn.Code = Defines.RET_FAIL; optReturn.Message = ex.Message; optReturn.Exception = ex; } return(optReturn); }
/// <summary> /// 从远程服务器下载文件 /// </summary> /// <param name="config">下载参数</param> /// <returns></returns> public static OperationReturn DownloadFile(DownloadConfig config) { OperationReturn optReturn = new OperationReturn(); optReturn.Result = true; optReturn.Code = 0; try { if (config == null) { optReturn.Result = false; optReturn.Code = Defines.RET_PARAM_INVALID; optReturn.Message = string.Format("DownloadConfig is null"); return(optReturn); } string strTargetPath = config.SavePath; string strTargetDir = strTargetPath.Substring(0, strTargetPath.LastIndexOf("\\")); if (!Directory.Exists(strTargetDir)) { //如果目录不存在,创建目录 Directory.CreateDirectory(strTargetDir); } if (File.Exists(strTargetPath)) { if (config.IsReplace) { //如果文件存在,删除已经存在的文件 File.Delete(strTargetPath); } else { optReturn.Result = false; optReturn.Code = Defines.RET_FILE_ALREADY_EXIST; optReturn.Message = string.Format("Target file already exist.\t{0}", strTargetPath); return(optReturn); } } WebRequest webRequest; string strRequest; switch (config.Method) { case 0: case 1: strRequest = string.Format("http://{0}:{1}/{2}", config.Host, config.Port, config.RequestPath); HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(strRequest); if (!config.IsAnonymous) { //如果需要验证身份 httpRequest.Credentials = new NetworkCredential(config.LoginName, config.Password); string code = Convert.ToBase64String(Encoding.ASCII.GetBytes(string.Format("{0}:{1}", config.LoginName, config.Password))); httpRequest.Headers.Add("Authorization", "Basic" + code); } webRequest = httpRequest; break; case 2: strRequest = string.Format("https://{0}:{1}/{2}", config.Host, config.Port, config.RequestPath); HttpWebRequest httpsRequest = (HttpWebRequest)WebRequest.Create(strRequest); if (!config.IsAnonymous) { httpsRequest.Credentials = new NetworkCredential(config.LoginName, config.Password); string code = Convert.ToBase64String(Encoding.ASCII.GetBytes(string.Format("{0}:{1}", config.LoginName, config.Password))); httpsRequest.Headers.Add("Authorization", "Basic" + code); } webRequest = httpsRequest; break; case 11: strRequest = string.Format("ftp://{0}:{1}/{2}", config.Host, config.Port, config.RequestPath); FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(strRequest); if (!config.IsAnonymous) { ftpRequest.Credentials = new NetworkCredential(config.LoginName, config.Password); string code = Convert.ToBase64String(Encoding.ASCII.GetBytes(string.Format("{0}:{1}", config.LoginName, config.Password))); ftpRequest.Headers.Add("Authorization", "Basic" + code); } webRequest = ftpRequest; break; default: optReturn.Result = false; optReturn.Code = Defines.RET_PARAM_INVALID; optReturn.Message = string.Format("Method invalid\t{0}", config.Method); return(optReturn); } WebResponse httpWebResponse = webRequest.GetResponse(); Stream stream = httpWebResponse.GetResponseStream(); if (stream == null) { optReturn.Result = false; optReturn.Code = Defines.RET_OBJECT_NULL; optReturn.Message = string.Format("Response stream is null"); return(optReturn); } using (FileStream fileStream = new FileStream(strTargetPath, FileMode.Create, FileAccess.Write)) { byte[] buffer = new byte[1024]; int readed = stream.Read(buffer, 0, 1024); while (readed > 0) { fileStream.Write(buffer, 0, readed); readed = stream.Read(buffer, 0, 1024); } fileStream.Close(); stream.Close(); } optReturn.StringValue = strTargetPath; } catch (Exception ex) { optReturn.Result = false; optReturn.Code = Defines.RET_FAIL; optReturn.Message = ex.Message; optReturn.Exception = ex; } return(optReturn); }
/// <summary> /// 写入日志 /// </summary> /// <param name="mode">日志模式</param> /// <param name="category">分类</param> /// <param name="msg">消息内容</param> /// <returns></returns> public OperationReturn WriteLog(LogMode mode, string category, string msg) { OperationReturn optReturn = new OperationReturn(); optReturn.Result = true; optReturn.Code = Defines.RET_SUCCESS; try { if ((mode & mLogMode) == 0) { return(optReturn); } DateTime now = DateTime.Now; FileInfo fileInfo = new FileInfo(mLogFile); if (mLastDate.Date != now.Date || mLogWriter == null || (File.Exists(mLogFile) && fileInfo.Length > mLogFileSize * 1024)) { optReturn = Start(); if (!optReturn.Result) { return(optReturn); } } int index = msg.IndexOf("\r\n", StringComparison.Ordinal); string strThis = msg; string strOther = string.Empty; if (index > 0) { strThis = msg.Substring(0, index); strOther = msg.Substring(index + 2); } string formatstr = string.Format("{0,-8} |{1,-15} |({2})| {3,-20} {4}" , mode , DateTime.Now.ToString("HH:mm:ss.fff") , Thread.CurrentThread.ManagedThreadId.ToString("00000") , category , strThis); lock (mLogWriterLocker) { if (mLogWriter != null) { mLogWriter.WriteLine(formatstr); mLogWriter.Flush(); } else { optReturn.Result = false; optReturn.Code = Defines.RET_OBJECT_NULL; optReturn.Message = "LogWriter is null"; return(optReturn); } } if (!string.IsNullOrEmpty(strOther)) { WriteLog(mode, category, strOther); } } catch (Exception ex) { optReturn.Code = Defines.RET_FAIL; optReturn.Message = ex.Message; optReturn.Exception = ex; } return(optReturn); }