You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							278 lines
						
					
					
						
							9.2 KiB
						
					
					
				
			
		
		
	
	
							278 lines
						
					
					
						
							9.2 KiB
						
					
					
				using DevExpress.XtraEditors; | 
						|
using ESRI.ArcGIS.Carto; | 
						|
using ESRI.ArcGIS.Geodatabase; | 
						|
using System; | 
						|
using System.Collections; | 
						|
using System.Collections.Generic; | 
						|
using System.IO; | 
						|
using System.Linq; | 
						|
using System.Text; | 
						|
using System.Threading.Tasks; | 
						|
 | 
						|
namespace KGIS.Plugin.LayerProperty.Model | 
						|
{ | 
						|
    internal class SQLSearch | 
						|
    { | 
						|
        private static IFeatureLayer m_pCurrentLayer; | 
						|
        private static IFeatureClass m_FeatureClass; | 
						|
        public static IFeatureLayer CurrentLayer | 
						|
        { | 
						|
            get | 
						|
            { | 
						|
                return SQLSearch.m_pCurrentLayer; | 
						|
            } | 
						|
            set | 
						|
            { | 
						|
                SQLSearch.m_pCurrentLayer = value; | 
						|
                SQLSearch.FeatureClass = SQLSearch.m_pCurrentLayer.FeatureClass; | 
						|
            } | 
						|
        } | 
						|
        public static IFeatureClass FeatureClass | 
						|
        { | 
						|
            get | 
						|
            { | 
						|
                return SQLSearch.m_FeatureClass; | 
						|
            } | 
						|
            set | 
						|
            { | 
						|
                SQLSearch.m_FeatureClass = value; | 
						|
            } | 
						|
        } | 
						|
        public static string ReadFile(string ReadFileName) | 
						|
        { | 
						|
            if (File.Exists(ReadFileName)) | 
						|
            { | 
						|
                return SQLSearch.ReadStringFromFile(ReadFileName); | 
						|
            } | 
						|
            return ""; | 
						|
        } | 
						|
        public static string ReadStringFromFile(string filePath) | 
						|
        { | 
						|
            string result; | 
						|
            try | 
						|
            { | 
						|
                FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read); | 
						|
                StreamReader streamReader = new StreamReader(fileStream, Encoding.Unicode); | 
						|
                string text = streamReader.ReadToEnd(); | 
						|
                streamReader.Close(); | 
						|
                fileStream.Close(); | 
						|
                result = text; | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
                result = ""; | 
						|
            } | 
						|
            return result; | 
						|
        } | 
						|
        public static string ReadStringFromFile(string filePath, Encoding encode) | 
						|
        { | 
						|
            string result; | 
						|
            try | 
						|
            { | 
						|
                FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read); | 
						|
                StreamReader streamReader = new StreamReader(fileStream, encode); | 
						|
                string text = streamReader.ReadToEnd(); | 
						|
                streamReader.Close(); | 
						|
                fileStream.Close(); | 
						|
                result = text; | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
                result = ""; | 
						|
            } | 
						|
            return result; | 
						|
        } | 
						|
        public static bool SaveString2File(string filePath, ref string content) | 
						|
        { | 
						|
            bool result; | 
						|
            try | 
						|
            { | 
						|
                FileStream fileStream = new FileStream(filePath, FileMode.Create); | 
						|
                StreamWriter streamWriter = new StreamWriter(fileStream, Encoding.Unicode); | 
						|
                streamWriter.Write(content); | 
						|
                streamWriter.Close(); | 
						|
                fileStream.Close(); | 
						|
                result = true; | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
                result = false; | 
						|
            } | 
						|
            return result; | 
						|
        } | 
						|
        public static void SaveFile(string SaveFileName, ref string SqlInfo) | 
						|
        { | 
						|
            if (SaveFileName.Equals("")) | 
						|
            { | 
						|
                return; | 
						|
            } | 
						|
            if (File.Exists(SaveFileName)) | 
						|
            { | 
						|
                File.Delete(SaveFileName); | 
						|
            } | 
						|
            SQLSearch.SaveString2File(SaveFileName, ref SqlInfo); | 
						|
        } | 
						|
        public static void ShowUniqueValues(string sqlFieldname, ListBoxControl lstOnlyValue, int SampleRate) | 
						|
        { | 
						|
            SQLSearch.ShowUniqueValuesPrivate(sqlFieldname, lstOnlyValue, SampleRate); | 
						|
        } | 
						|
        private static void ShowUniqueValuesPrivate(string sqlField, ListBoxControl lstOnlyValue, int SampleRate) | 
						|
        { | 
						|
            IEnumerator enumerator = null; | 
						|
            try | 
						|
            { | 
						|
                ICursor cursor = SQLSearch.FeatureClass.Search(null, false) as ICursor; | 
						|
                enumerator = ((IDataStatistics)new DataStatisticsClass | 
						|
                { | 
						|
                    Cursor = cursor, | 
						|
                    Field = sqlField, | 
						|
                    SampleRate = SampleRate | 
						|
                }).UniqueValues; | 
						|
                enumerator.Reset(); | 
						|
                string text = ""; | 
						|
                while (enumerator.MoveNext()) | 
						|
                { | 
						|
                    if (enumerator.Current != null && enumerator.Current != DBNull.Value) | 
						|
                    { | 
						|
                        text = enumerator.Current.ToString(); | 
						|
                    } | 
						|
                    if (!text.Equals("")) | 
						|
                    { | 
						|
                        lstOnlyValue.Items.Add(text); | 
						|
                        text = ""; | 
						|
                    } | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
            } | 
						|
            if (enumerator != null) | 
						|
            { | 
						|
                enumerator = null; | 
						|
            } | 
						|
        } | 
						|
        public static void ShowUniqueValues(IField field, ListBoxControl lstOnlyValue, int SampleRate) | 
						|
        { | 
						|
            SQLSearch.ShowUniqueValuesPrivate(field, lstOnlyValue, SampleRate); | 
						|
        } | 
						|
        private static void ShowUniqueValuesPrivate(IField field, ListBoxControl lstOnlyValue, int SampleRate) | 
						|
        { | 
						|
            IEnumerator enumerator = null; | 
						|
            try | 
						|
            { | 
						|
                ICursor cursor = SQLSearch.FeatureClass.Search(null, false) as ICursor; | 
						|
                enumerator = ((IDataStatistics)new DataStatisticsClass | 
						|
                { | 
						|
                    Cursor = cursor, | 
						|
                    Field = field.Name, | 
						|
                    SampleRate = SampleRate | 
						|
                }).UniqueValues; | 
						|
                enumerator.Reset(); | 
						|
                string text = ""; | 
						|
                while (enumerator.MoveNext()) | 
						|
                { | 
						|
                    if (enumerator.Current != null && enumerator.Current != DBNull.Value) | 
						|
                    { | 
						|
                        text = enumerator.Current.ToString(); | 
						|
                    } | 
						|
                    if (!text.Equals("")) | 
						|
                    { | 
						|
                        switch (field.Type) | 
						|
                        { | 
						|
                            case esriFieldType.esriFieldTypeString: | 
						|
                                text = "'" + text + "'"; | 
						|
                                break; | 
						|
                            case esriFieldType.esriFieldTypeDate: | 
						|
                                text = "#" + text + "#"; | 
						|
                                break; | 
						|
                        } | 
						|
                        lstOnlyValue.Items.Add(text); | 
						|
                        text = ""; | 
						|
                    } | 
						|
                    else | 
						|
                    { | 
						|
                        text = "NULL"; | 
						|
                    } | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
            } | 
						|
            if (enumerator != null) | 
						|
            { | 
						|
                enumerator = null; | 
						|
            } | 
						|
        } | 
						|
        private static void GetString(ref string value) | 
						|
        { | 
						|
            value = "'" + value + "'"; | 
						|
        } | 
						|
        public static void ShowUniqueValues(string lstFieldItemName, ComboBoxEdit lstOnlyValue, int SampleRate) | 
						|
        { | 
						|
            SQLSearch.ShowUniqueValuesPrivate(lstFieldItemName, lstOnlyValue, SampleRate); | 
						|
        } | 
						|
        private static void ShowUniqueValuesPrivate(string lstFieldItemName, ComboBoxEdit lstOnlyValue, int SampleRate) | 
						|
        { | 
						|
            IEnumerator enumerator = null; | 
						|
            try | 
						|
            { | 
						|
                ICursor cursor = SQLSearch.FeatureClass.Search(null, false) as ICursor; | 
						|
                enumerator = ((IDataStatistics)new DataStatisticsClass | 
						|
                { | 
						|
                    Cursor = cursor, | 
						|
                    Field = lstFieldItemName, | 
						|
                    SampleRate = SampleRate | 
						|
                }).UniqueValues; | 
						|
                enumerator.Reset(); | 
						|
                string text = ""; | 
						|
                while (enumerator.MoveNext()) | 
						|
                { | 
						|
                    if (enumerator.Current != null && enumerator.Current != DBNull.Value) | 
						|
                    { | 
						|
                        text = enumerator.Current.ToString(); | 
						|
                    } | 
						|
                    if (!text.Equals("")) | 
						|
                    { | 
						|
                        lstOnlyValue.Properties.Items.Add(text); | 
						|
                    } | 
						|
                    text = ""; | 
						|
                } | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
            } | 
						|
            if (enumerator != null) | 
						|
            { | 
						|
                enumerator = null; | 
						|
            } | 
						|
        } | 
						|
        public static bool VerifySql(IFeatureClass feaLyr, string sql) | 
						|
        { | 
						|
            try | 
						|
            { | 
						|
                bool result; | 
						|
                if (feaLyr.Search(new QueryFilterClass | 
						|
                { | 
						|
                    WhereClause = sql | 
						|
                }, false) == null) | 
						|
                { | 
						|
                    result = false; | 
						|
                    return result; | 
						|
                } | 
						|
                result = true; | 
						|
                return result; | 
						|
            } | 
						|
            catch (Exception ex) | 
						|
            { | 
						|
                //RdbUtil.AddException(ex); | 
						|
            } | 
						|
            return false; | 
						|
        } | 
						|
    } | 
						|
}
 | 
						|
 |