DataLoader/CS/Importor.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
DataLoader/CS/ModelHandler.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
DataLoader/CS/PostgreHelper.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
DataLoader/DataLoader.csproj | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
DataLoader/MainWindow.xaml.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
DataLoader/CS/Importor.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,17 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DataLoader.CS { public class Importor { public static void Import(ObservableCollection<ViewData> viewDatas, string source, string target) { } } } DataLoader/CS/ModelHandler.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,83 @@ using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; namespace DataLoader.CS { public class ModelHandler { /// <summary> /// å¡«å 对象å表 /// </summary> public static List<T> FillModel<T>(DataTable dt) where T : new() { if (dt == null || dt.Rows.Count == 0) { return null; } List<T> list = new List<T>(); BindingFlags flag = BindingFlags.Public | BindingFlags.IgnoreCase | BindingFlags.Instance; PropertyInfo[] pis = typeof(T).GetProperties(); foreach (DataRow dr in dt.Rows) { T t = new T(); foreach (PropertyInfo pi in pis) { object val = dr[pi.Name] == DBNull.Value ? null : dr[pi.Name]; t.GetType().GetProperty(pi.Name, flag).SetValue(t, val, null); } list.Add(t); } return list; } /// <summary> /// å¡«å DataTable /// </summary> public static DataTable FillDataTable<T>(List<T> list) where T : new() { if (list == null || list.Count == 0) { return null; } DataTable dt = CreateDataTable<T>(); PropertyInfo[] pis = typeof(T).GetProperties(); foreach (T t in list) { DataRow dr = dt.NewRow(); foreach (PropertyInfo pi in pis) { dr[pi.Name] = pi.GetValue(t, null); } } return dt; } /// <summary> /// å建DataTable /// </summary> public static DataTable CreateDataTable<T>() where T : new() { DataTable dt = new DataTable(typeof(T).Name); PropertyInfo[] pis = typeof(T).GetProperties(); foreach (PropertyInfo pi in pis) { dt.Columns.Add(new DataColumn(pi.Name, pi.PropertyType)); } return dt; } } } DataLoader/CS/PostgreHelper.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,174 @@ using Npgsql; using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.Common; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; namespace DataLoader.CS { public enum DbEnum { langfang = 0, postgis = 1, postgres = 2 } /// <summary> /// Postgre帮å©ç±» /// </summary> public class PostgreHelper { private const string StrRegex = @"<[^>]+?style=[\w]+?:expression\(|\b(alert|confirm|prompt)\b|^\+/v(8|9)|<[^>]*?=[^>]*?&#[^>]*?>|\b(and|or)\b.{1,6}?(=|>|<|\bin\b|\blike\b)|/\*.+?\*/|<\s*script\b|<\s*img\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)"; private string conStr = null; public PostgreHelper(DbEnum db) { string str = ConfigurationManager.AppSettings["pgConn"]; this.conStr = string.Format(str, db.ToString()); } /// <summary> /// è¿æ¥å符串 /// </summary> public String ConStr { get { return this.conStr; } } /// <summary> /// è·åDataTable /// </summary> public DataTable GetDataTable(string sql, params DbParameter[] args) { using (NpgsqlConnection con = new NpgsqlConnection(ConStr)) { if (con.State != ConnectionState.Open) { con.Open(); } using (NpgsqlCommand cmd = new NpgsqlCommand(sql, con)) { if (args != null) { foreach (DbParameter arg in args) { //arg.ParameterName = arg.ParameterName.Replace("@", ":"); cmd.Parameters.Add(arg); } } using (NpgsqlDataAdapter adapter = new NpgsqlDataAdapter(cmd)) { DataTable dt = new DataTable(); adapter.Fill(dt); return dt; } } } } /// <summary> /// è·åè®°å½æ° /// </summary> public int GetCount(string sql, params DbParameter[] args) { using (NpgsqlConnection con = new NpgsqlConnection(ConStr)) { if (con.State != ConnectionState.Open) { con.Open(); } using (NpgsqlCommand cmd = new NpgsqlCommand(sql, con)) { if (args != null) { foreach (DbParameter arg in args) { //arg.ParameterName = arg.ParameterName.Replace("@", ":"); cmd.Parameters.Add(arg); } } object obj = cmd.ExecuteScalar(); return obj == null ? 0 : Convert.ToInt32(obj); } } } public Object GetScalar(string sql, params DbParameter[] args) { using (NpgsqlConnection con = new NpgsqlConnection(ConStr)) { if (con.State != ConnectionState.Open) { con.Open(); } using (NpgsqlCommand cmd = new NpgsqlCommand(sql, con)) { if (args != null) { foreach (DbParameter arg in args) { cmd.Parameters.Add(arg); } } return cmd.ExecuteScalar(); } } } /// <summary> /// æ§è¡SQLï¼è¿åå½±åè¡æ° /// </summary> public int ExecuteNonQuery(string sql, params DbParameter[] args) { using (NpgsqlConnection con = new NpgsqlConnection(ConStr)) { if (con.State != ConnectionState.Open) { con.Open(); } using (NpgsqlCommand cmd = new NpgsqlCommand(sql, con)) { if (args != null) { foreach (DbParameter arg in args) { //arg.ParameterName = arg.ParameterName.Replace("@", ":"); cmd.Parameters.Add(arg); } } return cmd.ExecuteNonQuery(); } } } /// <summary> /// æ£æ¥å符串 /// </summary> public static bool CheckStr(string input) { return Regex.IsMatch(input, StrRegex, RegexOptions.IgnoreCase); } } } DataLoader/DataLoader.csproj
@@ -48,7 +48,14 @@ <Reference Include="CefSharp.Wpf, Version=108.4.130.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138, processorArchitecture=MSIL"> <HintPath>..\packages\CefSharp.Wpf.108.4.130\lib\net452\CefSharp.Wpf.dll</HintPath> </Reference> <Reference Include="Mono.Security"> <HintPath>..\JavaCode\DLL\Mono.Security.dll</HintPath> </Reference> <Reference Include="Npgsql"> <HintPath>..\JavaCode\DLL\Npgsql.dll</HintPath> </Reference> <Reference Include="System" /> <Reference Include="System.configuration" /> <Reference Include="System.Data" /> <Reference Include="System.Windows.Forms" /> <Reference Include="System.Xml" /> @@ -80,8 +87,11 @@ <DependentUpon>App.xaml</DependentUpon> <SubType>Code</SubType> </Compile> <Compile Include="CS\Importor.cs" /> <Compile Include="CS\Main.cs" /> <Compile Include="CS\ModelHandler.cs" /> <Compile Include="CS\NtstWeb.cs" /> <Compile Include="CS\PostgreHelper.cs" /> <Compile Include="CS\ViewData.cs" /> <Compile Include="LoginWin.xaml.cs"> <DependentUpon>LoginWin.xaml</DependentUpon> DataLoader/MainWindow.xaml.cs
@@ -122,8 +122,14 @@ // å¯¼å ¥ private void Import_MouseLeftButtonDown(object sender, RoutedEventArgs e) { viewDatas.Add(new ViewData() { ID = 1, FilePath = "c:\\", Status = "å è½½ä¸" }); viewDatas.Add(new ViewData() { ID = 2, FilePath = "c:\\", Status = "宿" }); viewDatas.Clear(); Dispatcher.Invoke(new Action(delegate { this.btnImport.IsEnabled = false; Importor.Import(viewDatas, SourcePath, TargetPath); this.btnImport.IsEnabled = true; })); } } }