/// <summary> /// 根据SQL序号获得SQL信息 /// </summary> /// <param name="parameters">页面传递的参数</param> /// <returns>SQL信息</returns> public object GetSqlByNum(Dictionary <String, String> parameters) { try { JsonOperate _JsonOperate = new JsonOperate(); //获取SQL序号 string _SqlNum = parameters.ContainsKey("SqlNum") ? _JsonOperate.FromJsonString <string>(parameters["SqlNum"]) : ""; //SQLCodeEntity _SQLCodeEntity; if (_SQLCodeEntityList != null && SQLCodeManager._SQLCodeEntityList.FirstOrDefault(S => S.SqlNum == _SqlNum) != null) { //从缓存中获得SQL实体 SQLCodeEntity _SQLCodeEntity = SQLCodeManager._SQLCodeEntityList.FirstOrDefault(S => S.SqlNum == _SqlNum); return(new { Methods = _SQLCodeEntity }); } else { //SQL语句所在xml文件路径 string xmlPath = Path.Combine(SQLPath, _SqlNum + ".xml"); //判断是否存在文件 if (!File.Exists(xmlPath)) { return(new { Methods = "" }); } //实例化XML文件操作类 //XmlOperate _XmlOperate = new XmlOperate(); //判断配置文件是否只读 //FileInfo fi = new FileInfo(xmlPath); ////如果只读则修改为普通 //if (fi.Attributes.ToString().IndexOf("ReadOnly") != -1) //{ // fi.Attributes = FileAttributes.Normal; //} ////实例化文件操作类 //DirectoryFileOperate _DirectoryFileOperate = new DirectoryFileOperate(); ////根据指定路径读取文件 //string _XmlContent = _DirectoryFileOperate.ShareReadFile(xmlPath); ////把xml转换成对象 //SQLCodeEntity _SQLCodeEntity = _XmlOperate.SimpleXmlToObject<SQLCodeEntity>(_XmlContent); SQLCodeEntity _SQLCodeEntity = SQLCodeHelp.GetSQLCodeEntityByPath(xmlPath); return(new { Methods = _SQLCodeEntity }); } } catch { return(new { Methods = "" }); } }
/// <summary> /// 当目录内SQLXML文件发生变化时被触发。 /// </summary> /// <param name="sender">事件触发源。</param> /// <param name="e">事件信息。</param> //static void _SqlXmlFileWatcher_Changed(object sender, FileSystemEventArgs e) //{ // try // { // //获得发生变化文件的文件名 // string _SqlNum = Path.GetFileNameWithoutExtension(e.FullPath); // if (SQLCode != null && SQLCode.ContainsKey(_SqlNum))//如果缓存不为null,并且缓存中存在被修改的文件 // { // //从缓存移除修改文件 // SQLCode.Remove(_SqlNum); // } // if (SQLCodeManager._SQLCodeEntityList == null)//如果SQLXML列表缓存为空 // { // return; // } // //根据SQLXML文件路径获取SQL实体 // SQLCodeEntity _SQLCodeEntity = GetSQLCodeEntityByPath(e.FullPath); // //从缓存中获得SQL实体 // var _SQLCodeEntityCache = SQLCodeManager._SQLCodeEntityList.FirstOrDefault(S => S.SqlNum == _SqlNum); // if (_SQLCodeEntity != null && _SQLCodeEntityCache != null && _SQLCodeEntity.SqlNum == _SQLCodeEntityCache.SqlNum && _SQLCodeEntity.SqlDescription == _SQLCodeEntityCache.SqlDescription && _SQLCodeEntity.SQLString == _SQLCodeEntityCache.SQLString)//如果没有改变 // { // return; // } // if (_SQLCodeEntity == null || _SQLCodeEntity.SqlNum != _SqlNum)//如果不存在本地SQLXML文件,或者序号和文件名不统一 // { // if (_SQLCodeEntityCache != null)//如果缓存中存在发生变化的SLQXML // { // //移除旧的缓存 // SQLCodeManager._SQLCodeEntityList.Remove(_SQLCodeEntityCache); // } // if (!File.Exists(e.FullPath) || Path.GetExtension(e.FullPath) != ".xml")//如果文件不存在或者新的扩展名不是XML // { // return; // } // FileInfo fi = new FileInfo(e.FullPath); // //如果只读则修改为普通 // fi.Attributes = FileAttributes.Normal; // //重命名为源文件名+.bak扩展名 // fi.MoveTo(e.FullPath + ".bak"); // } // else // { // if (_SQLCodeEntityCache != null)//如果缓存中存在发生变化的SLQXML // { // //移除旧的缓存 // SQLCodeManager._SQLCodeEntityList.Remove(_SQLCodeEntityCache); // } // //添加新的缓存 // SQLCodeManager._SQLCodeEntityList.Add(_SQLCodeEntity); // } // } // catch (Exception ex) // { // } //} #endregion #region 当目录内SQLXML文件被删除时被触发 /// <summary> /// 当目录内SQLXML文件被删除时被触发。 /// </summary> /// <param name="sender">事件触发源。</param> /// <param name="e">事件信息。</param> //static void _SqlXmlFileWatcher_Deleted(object sender, FileSystemEventArgs e) //{ // try // { // //获得发生变化文件的文件名 // string _SqlNum = Path.GetFileNameWithoutExtension(e.FullPath); // if (SQLCode != null && SQLCode.ContainsKey(_SqlNum))//如果缓存不为null,并且缓存中存在被修改的文件 // { // //从缓存移除修改文件 // SQLCode.Remove(_SqlNum); // } // if (SQLCodeManager._SQLCodeEntityList == null)//如果SQLXML列表缓存为空 // { // return; // } // //从缓存中获得SQL实体 // var _SQLCodeEntityCache = SQLCodeManager._SQLCodeEntityList.FirstOrDefault(S => S.SqlNum == _SqlNum); // if (_SQLCodeEntityCache != null)//如果缓存中存在发生变化的SLQXML // { // //移除旧的缓存 // SQLCodeManager._SQLCodeEntityList.Remove(_SQLCodeEntityCache); // } // } // catch (Exception ex) // { // } //} #endregion #region 当目录内SQLXML文件重命名时被触发 /// <summary> /// 当目录内SQLXML文件重命名时被触发。 /// </summary> /// <param name="sender">事件触发源。</param> /// <param name="e">事件信息。</param> //static void _SqlXmlFileWatcher_Renamed(object sender, RenamedEventArgs e) //{ // try // { // //获得发生变化文件的文件名 // string _SqlNum = Path.GetFileNameWithoutExtension(e.OldFullPath); // string _SqlNumNew = Path.GetFileNameWithoutExtension(e.FullPath); // if (SQLCode != null && SQLCode.ContainsKey(_SqlNum))//如果缓存不为null,并且缓存中存在被修改的文件 // { // //从缓存移除修改文件 // SQLCode.Remove(_SqlNum); // } // if (SQLCodeManager._SQLCodeEntityList == null)//如果SQLXML列表缓存为空 // { // return; // } // //根据SQLXML文件路径获取SQL实体 // SQLCodeEntity _SQLCodeEntity = GetSQLCodeEntityByPath(e.FullPath); // //从缓存中获得SQL实体 // var _SQLCodeEntityCache = SQLCodeManager._SQLCodeEntityList.FirstOrDefault(S => S.SqlNum == _SqlNum); // if (_SQLCodeEntity == null || _SQLCodeEntity.SqlNum != _SqlNumNew)//如果不存在本地SQLXML文件,或者序号和文件名不统一 // { // if (_SQLCodeEntityCache != null)//如果缓存中存在发生变化的SLQXML // { // //移除旧的缓存 // SQLCodeManager._SQLCodeEntityList.Remove(_SQLCodeEntityCache); // } // if (!File.Exists(e.FullPath) || Path.GetExtension(e.FullPath) != ".xml")//如果文件不存在或者新的扩展名不是XML // { // return; // } // FileInfo fi = new FileInfo(e.FullPath); // //如果只读则修改为普通 // fi.Attributes = FileAttributes.Normal; // //重命名为源文件名+.bak扩展名 // fi.MoveTo(e.FullPath + ".bak"); // } // else // { // if (_SQLCodeEntityCache != null)//如果缓存中存在发生变化的SLQXML // { // //移除旧的缓存 // SQLCodeManager._SQLCodeEntityList.Remove(_SQLCodeEntityCache); // } // //添加新的缓存 // SQLCodeManager._SQLCodeEntityList.Add(_SQLCodeEntity); // } // } // catch (Exception ex) // { // } //} #endregion #endregion #region 根据SQL语句序号获取SQL语句 /// <summary> /// 根据SQL语句序号获取SQL语句 /// </summary> /// <param name="SqlNum">SQL语句序号</param> /// <returns>SQL语句</returns> public String GetSQLCode(String SqlNum) { //SQL语句 string SQLString = ""; try { if (SQLCode == null)//如果缓存为null { SQLCode = new Dictionary <string, string>(); } if (!SQLCode.ContainsKey(SqlNum))//如果缓存中不存在SQL语句 { //SQL语句所在xml文件路径 string xmlPath = Path.Combine(SQLPath, SqlNum + ".xml"); //if (!File.Exists(xmlPath)) //{ // return null; //} //实例化XML文件操作类 //XmlOperate _XmlOperate = new XmlOperate(); //判断配置文件是否只读 //FileInfo fi = new FileInfo(xmlPath); //如果只读则修改为普通 //fi.Attributes = FileAttributes.Normal; //实例化文件操作类 //DirectoryFileOperate _DirectoryFileOperate = new DirectoryFileOperate(); ////根据指定路径读取文件 //string _XmlContent = _DirectoryFileOperate.ShareReadFile(xmlPath); ////把xml转换成对象 //SQLCodeEntity _SQLCodeEntity = _XmlOperate.SimpleXmlToObject<SQLCodeEntity>(_XmlContent); SQLCodeEntity _SQLCodeEntity = SQLCodeHelp.GetSQLCodeEntityByPath(xmlPath); SQLString = _SQLCodeEntity.SQLString; //放入缓存 SQLCode.Add(SqlNum, SQLString); } else//如果缓存中存在SQL语句 { //从缓存中获取SQL语句 SQLString = SQLCode[SqlNum]; } } catch (Exception ex) { return(""); } return(SQLString); }
/// <summary> /// 读取指定目录下的所有xml文件,将其转换为SQL语句实体对象列表 /// </summary> /// <param name="path">xml文件的路径</param> /// <returns>SQL语句实体对象列表</returns> private List <SQLCodeEntity> ConvertXmlToEntity(String _Path) { try { List <SQLCodeEntity> _SQLCodeEntityLsit = new List <SQLCodeEntity>(); DirectoryInfo directory = new DirectoryInfo(_Path); //DirectoryFileOperate df = new DirectoryFileOperate(); XmlOperate _XmlOperate = new XmlOperate(); if (directory.Exists)//判断目录是否存在 { List <string> _XmlPathlist = GetAllXmlFilelist(_Path); //将xml文件转为iLogObject对象 foreach (string _path in _XmlPathlist) { //判断配置文件是否只读 FileInfo fi = new FileInfo(_path); //如果只读则修改为普通 //if (fi.Attributes.ToString().IndexOf("ReadOnly") != -1) //{ fi.Attributes = FileAttributes.Normal; //} //string _XmlContent = df.ShareReadFile(_path); ////把xml转换成对象 //SQLCodeEntity _SQLCodeEntity = _XmlOperate.SimpleXmlToObject<SQLCodeEntity>(_XmlContent); SQLCodeEntity _SQLCodeEntity = SQLCodeHelp.GetSQLCodeEntityByPath(_path); if (_SQLCodeEntity == null || _SQLCodeEntity.SqlNum != Path.GetFileNameWithoutExtension(_path)) { //重命名为源文件名+.bak扩展名 fi.MoveTo(_path + ".bak"); continue; } _SQLCodeEntityLsit.Add(_SQLCodeEntity); } } return(_SQLCodeEntityLsit); } catch { return(null); } }