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