From dd20c8e18ce61331d10a2f15f687cdc9908b3961 Mon Sep 17 00:00:00 2001 From: kllxyu <406662428@qq.com> Date: Thu, 5 Jun 2014 10:22:39 +0800 Subject: [PATCH] v4.0 --- .../CsharpOSMeteorCodeGenerator.sln | 30 + .../CsharpOSMeteorCodeGenerator.suo | Bin 0 -> 95232 bytes .../CsharpOSMeteorCodeGenerator.csproj | 149 +++ .../Data/ColumnData.cs | 91 ++ .../Data/GetListTables.cs | 88 ++ .../Data/SQLHelper.cs | 385 ++++++ .../Data/SqlDbTypeAndDbTypeConvert.cs | 354 +++++ .../Data/TableData.cs | 255 ++++ .../F_ADO_CodeGenerator.Designer.cs | 284 ++++ .../F_ADO_CodeGenerator.cs | 649 +++++++++ .../F_ADO_CodeGenerator.resx | 193 +++ .../F_CodeGenerator.Designer.cs | 301 +++++ .../F_CodeGenerator.cs | 882 ++++++++++++ .../F_CodeGenerator.resx | 193 +++ .../F_Main.Designer.cs | 301 +++++ .../CsharpOSMeteorCodeGenerator/F_Main.cs | 866 ++++++++++++ .../CsharpOSMeteorCodeGenerator/F_Main.resx | 279 ++++ .../F_login.Designer.cs | 253 ++++ .../CsharpOSMeteorCodeGenerator/F_login.cs | 118 ++ .../CsharpOSMeteorCodeGenerator/F_login.resx | 609 +++++++++ .../Form1Test.Designer.cs | 60 + .../CsharpOSMeteorCodeGenerator/Form1Test.cs | 472 +++++++ .../Form1Test.resx | 120 ++ .../Model/BaseClass.cs | 1177 +++++++++++++++++ .../Model/Column.cs | 68 + .../Model/EModel.cs | 94 ++ .../Model/OSMyNode.cs | 18 + .../Model/Table.cs | 61 + .../CsharpOSMeteorCodeGenerator/Program.cs | 22 + .../Properties/AssemblyInfo.cs | 36 + .../Properties/Resources.Designer.cs | 71 + .../Properties/Resources.resx | 117 ++ .../Properties/Settings.Designer.cs | 30 + .../Properties/Settings.settings | 7 + .../about.Designer.cs | 235 ++++ .../CsharpOSMeteorCodeGenerator/about.cs | 63 + .../CsharpOSMeteorCodeGenerator/about.resx | 408 ++++++ .../bin/Debug/CsharpOSMeteorCodeGenerator.exe | Bin 0 -> 244736 bytes .../bin/Debug/CsharpOSMeteorCodeGenerator.pdb | Bin 0 -> 202240 bytes .../CsharpOSMeteorCodeGenerator.vshost.exe | Bin 0 -> 11600 bytes ...pOSMeteorCodeGenerator.vshost.exe.manifest | 11 + .../bin/Debug/DynamicAssembly.dll | Bin 0 -> 2048 bytes .../bin/Debug/DynamicAssemblyExample.dll | Bin 0 -> 2048 bytes .../bin/Debug/ICSharpCode.TextEditor.dll | Bin 0 -> 385024 bytes .../bin/Debug/OSMeteorAssemblyDB.dll | Bin 0 -> 2048 bytes .../config/tempADO_Code.cs | 13 + .../config/tempado.cs | 26 + .../config/tempentity.cs | 42 + .../config/templinq.cs | 137 ++ .../config/tempsql.cs | 11 + ...odeGenerator.F_ADO_CodeGenerator.resources | Bin 0 -> 4301 bytes ...eorCodeGenerator.F_CodeGenerator.resources | Bin 0 -> 4301 bytes ...harpOSMeteorCodeGenerator.F_Main.resources | Bin 0 -> 8973 bytes ...arpOSMeteorCodeGenerator.F_login.resources | Bin 0 -> 29597 bytes ...pOSMeteorCodeGenerator.Form1Test.resources | Bin 0 -> 180 bytes ...deGenerator.Properties.Resources.resources | Bin 0 -> 180 bytes ...sharpOSMeteorCodeGenerator.about.resources | Bin 0 -> 17496 bytes ...rCodeGenerator.csproj.FileListAbsolute.txt | 62 + .../x86/Debug/CsharpOSMeteorCodeGenerator.exe | Bin 0 -> 244736 bytes .../x86/Debug/CsharpOSMeteorCodeGenerator.pdb | Bin 0 -> 202240 bytes .../DesignTimeResolveAssemblyReferences.cache | Bin 0 -> 4440 bytes ...gnTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 6598 bytes .../x86/Debug/GenerateResource.read.1.tlog | Bin 0 -> 1954 bytes .../x86/Debug/GenerateResource.write.1.tlog | Bin 0 -> 3858 bytes 64 files changed, 9641 insertions(+) create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator.sln create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator.suo create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/CsharpOSMeteorCodeGenerator.csproj create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Data/ColumnData.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Data/GetListTables.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Data/SQLHelper.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Data/SqlDbTypeAndDbTypeConvert.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Data/TableData.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_ADO_CodeGenerator.Designer.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_ADO_CodeGenerator.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_ADO_CodeGenerator.resx create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_CodeGenerator.Designer.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_CodeGenerator.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_CodeGenerator.resx create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_Main.Designer.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_Main.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_Main.resx create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_login.Designer.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_login.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_login.resx create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Form1Test.Designer.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Form1Test.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Form1Test.resx create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Model/BaseClass.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Model/Column.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Model/EModel.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Model/OSMyNode.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Model/Table.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Program.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Properties/AssemblyInfo.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Properties/Resources.Designer.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Properties/Resources.resx create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Properties/Settings.Designer.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Properties/Settings.settings create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/about.Designer.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/about.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/about.resx create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/bin/Debug/CsharpOSMeteorCodeGenerator.exe create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/bin/Debug/CsharpOSMeteorCodeGenerator.pdb create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/bin/Debug/CsharpOSMeteorCodeGenerator.vshost.exe create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/bin/Debug/CsharpOSMeteorCodeGenerator.vshost.exe.manifest create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/bin/Debug/DynamicAssembly.dll create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/bin/Debug/DynamicAssemblyExample.dll create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/bin/Debug/ICSharpCode.TextEditor.dll create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/bin/Debug/OSMeteorAssemblyDB.dll create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/config/tempADO_Code.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/config/tempado.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/config/tempentity.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/config/templinq.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/config/tempsql.cs create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/CsharpOSMeteorCodeGenerator.F_ADO_CodeGenerator.resources create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/CsharpOSMeteorCodeGenerator.F_CodeGenerator.resources create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/CsharpOSMeteorCodeGenerator.F_Main.resources create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/CsharpOSMeteorCodeGenerator.F_login.resources create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/CsharpOSMeteorCodeGenerator.Form1Test.resources create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/CsharpOSMeteorCodeGenerator.Properties.Resources.resources create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/CsharpOSMeteorCodeGenerator.about.resources create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/CsharpOSMeteorCodeGenerator.csproj.FileListAbsolute.txt create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/CsharpOSMeteorCodeGenerator.exe create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/CsharpOSMeteorCodeGenerator.pdb create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/DesignTimeResolveAssemblyReferences.cache create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/GenerateResource.read.1.tlog create mode 100644 CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/GenerateResource.write.1.tlog diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator.sln b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator.sln new file mode 100644 index 0000000..d8dda76 --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator.sln @@ -0,0 +1,30 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CsharpOSMeteorCodeGenerator", "CsharpOSMeteorCodeGenerator\CsharpOSMeteorCodeGenerator.csproj", "{167C1F9B-BD25-4459-8431-14342D948248}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {167C1F9B-BD25-4459-8431-14342D948248}.Debug|Any CPU.ActiveCfg = Debug|x86 + {167C1F9B-BD25-4459-8431-14342D948248}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {167C1F9B-BD25-4459-8431-14342D948248}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {167C1F9B-BD25-4459-8431-14342D948248}.Debug|x86.ActiveCfg = Debug|x86 + {167C1F9B-BD25-4459-8431-14342D948248}.Debug|x86.Build.0 = Debug|x86 + {167C1F9B-BD25-4459-8431-14342D948248}.Release|Any CPU.ActiveCfg = Release|x86 + {167C1F9B-BD25-4459-8431-14342D948248}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {167C1F9B-BD25-4459-8431-14342D948248}.Release|Mixed Platforms.Build.0 = Release|x86 + {167C1F9B-BD25-4459-8431-14342D948248}.Release|x86.ActiveCfg = Release|x86 + {167C1F9B-BD25-4459-8431-14342D948248}.Release|x86.Build.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator.suo b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator.suo new file mode 100644 index 0000000000000000000000000000000000000000..1dd4d275615fa3c9fb9967f52b0708516ecc3a25 GIT binary patch literal 95232 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 + + + Debug + x86 + 8.0.30703 + 2.0 + {167C1F9B-BD25-4459-8431-14342D948248} + WinExe + Properties + CsharpOSMeteorCodeGenerator + CsharpOSMeteorCodeGenerator + v4.0 + Client + 512 + + + x86 + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + x86 + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + False + bin\Debug\ICSharpCode.TextEditor.dll + + + + + + + + + + + + + + + Form + + + about.cs + + + + + + + + Form + + + Form1Test.cs + + + Form + + + F_ADO_CodeGenerator.cs + + + Form + + + F_CodeGenerator.cs + + + Form + + + F_login.cs + + + Form + + + F_Main.cs + + + + + + + + + + about.cs + + + Form1Test.cs + + + F_ADO_CodeGenerator.cs + + + F_CodeGenerator.cs + + + F_login.cs + + + F_Main.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + \ No newline at end of file diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Data/ColumnData.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Data/ColumnData.cs new file mode 100644 index 0000000..01a9d8e --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Data/ColumnData.cs @@ -0,0 +1,91 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using CsharpOSMeteorCodeGenerator.Model; +using System.Data.SqlClient; +using System.Data; + +namespace CsharpOSMeteorCodeGenerator.Data +{ + public class ColumnData + { + public List ListColumnsByTable(Table table, SqlConnectionStringBuilder conn) + { + List lstColumns = new List(); + using (SqlConnection dbConnection = new SqlConnection(conn.ConnectionString)) + { + dbConnection.Open(); + StringBuilder strBuilder = new StringBuilder(); + SqlCommand cmd = new SqlCommand(); + + strBuilder.Append("select "); + strBuilder.Append("a.column_name as column_name, "); + strBuilder.Append("CASE a.is_nullable "); + strBuilder.Append("WHEN 'YES' THEN 1 "); + strBuilder.Append("ELSE 0 "); + strBuilder.Append("END as nullable, "); + strBuilder.Append("a.data_type as type, "); + strBuilder.Append("a.character_maximum_length as character_maximum_length, "); + strBuilder.Append("(SELECT count([sc].[name]) as have "); + strBuilder.Append("FROM sys.indexes [si] "); + strBuilder.Append("JOIN "); + strBuilder.Append("sys.index_columns [sic] "); + strBuilder.Append("ON "); + strBuilder.Append("[si].[object_id] = [sic].[object_id] AND "); + strBuilder.Append("[si].[index_id] = [sic].[index_id] "); + strBuilder.Append("JOIN "); + strBuilder.Append("sys.columns [sc] "); + strBuilder.Append("ON "); + strBuilder.Append("[sic].[object_id] = [sc].[object_id] AND "); + strBuilder.Append("[sic].[column_id] = [sc].[column_id] "); + strBuilder.Append("WHERE [si].[is_primary_Key] = 1 "); + strBuilder.Append("and [sc].[name] = a.column_name "); + strBuilder.Append("and OBJECT_NAME([si].[object_id]) = a.table_name "); + strBuilder.Append(") as primary_key, "); + strBuilder.Append("( "); + strBuilder.Append("select "); + strBuilder.Append("count(ccu.column_name) as have "); + strBuilder.Append("from information_schema.constraint_column_usage ccu "); + strBuilder.Append("inner join information_schema.table_constraints tc "); + strBuilder.Append("on (ccu.constraint_name = tc.constraint_name) "); + strBuilder.Append("where tc.Constraint_Type = 'FOREIGN KEY' "); + strBuilder.Append("and ccu.table_name = a.table_name "); + strBuilder.Append("and ccu.column_name = a.column_name "); + strBuilder.Append(") as foreign_key "); + strBuilder.Append("from information_schema.columns a "); + strBuilder.Append("inner join information_schema.tables b "); + strBuilder.Append("on (a.table_name = b.table_name) "); + strBuilder.Append("where a.table_name = @tableName "); + + SqlParameter data = new SqlParameter("@tableName", SqlDbType.NChar); + data.Value = table.Name; + + cmd.CommandText = strBuilder.ToString(); + cmd.Parameters.Add(data); + cmd.CommandType = CommandType.Text; + cmd.Connection = dbConnection; + + SqlDataReader reader = cmd.ExecuteReader(); + while (reader.Read()) + { + Column column = new Column(); + column.ForeignKey = Convert.ToBoolean(reader["foreign_key"]); + column.PrimaryKey = Convert.ToBoolean(reader["primary_key"]); + if (reader["character_maximum_length"] != DBNull.Value) + { + column.CharacterMaximumLength = Convert.ToInt32(reader["character_maximum_length"]); + } + column.Name = reader["column_name"].ToString(); + column.Nullable = Convert.ToBoolean(reader["nullable"]); + column.Type = reader["type"].ToString(); + column.Table = table; + lstColumns.Add(column); + } + dbConnection.Close(); + } + + return lstColumns; + } + } +} diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Data/GetListTables.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Data/GetListTables.cs new file mode 100644 index 0000000..c22d965 --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Data/GetListTables.cs @@ -0,0 +1,88 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using CsharpOSMeteorCodeGenerator.Model; +using System.Data.SqlClient; +using System.Data; +using System.Windows.Forms; +using System.Linq.Expressions; + +namespace CsharpOSMeteorCodeGenerator.Data +{ + public class GetListTables + { + /// + /// List the tables of a specific database + /// + /// SQL Connection + /// tables list + public List ListTables(SqlConnectionStringBuilder conn, string db) + { + conn.InitialCatalog = db; + return new TableData().ListTables(conn); + } + public List
ListViews(SqlConnectionStringBuilder conn, string db) + { + conn.InitialCatalog = db; + return new TableData().ListViews(conn); + } + public List
ListProc(SqlConnectionStringBuilder conn, string db) + { + conn.InitialCatalog = db; + return new TableData().ListProc(conn); + } + public List GetListDBName(SqlConnectionStringBuilder connBuilder) + { + List rs = new List(); + using (SqlConnection dbConnection = new SqlConnection(connBuilder.ConnectionString)) + { + dbConnection.Open(); + DataTable tempDataTable = dbConnection.GetSchema(SqlClientMetaDataCollectionNames.Databases); + //string str = ""; ; + foreach (DataRow dr in tempDataTable.Rows) + { + //数据库名 序号 创建时间 + //str += dr[0] + " " + dr[1] + " " + dr[2] + "\n"; + rs.Add(dr[0].ToString()); + } + //MessageBox.Show(str); + //DataTable tempDataTable = dbConnection.GetSchema("Databases"); //和相同效果 + //cmbDatabase.DataSource = tempDataTable; + //cmbDatabase.DisplayMember = tempDataTable.Columns["database_name"].ColumnName; + //cmbDatabase.ValueMember = tempDataTable.Columns["database_name"].ColumnName; + //MessageBox.Show("Connected successfully!", "Connected", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); + dbConnection.Close(); + } + return rs; + + } + + /************linqselect****************/ + //public static IEnumerable getALLuserlist(Expression> expression, int isall) + //{ + // using (DataObjectDataContext db = new DataObjectDataContext()) + // { + // if (isall == 1) + // { + // return db.dt.Rows.Cast();//全查 + // } + // else + // { + // return db.dt.Rows.Cast().AsQueryable().Where(expression); + // } + // } + //} + /****************************/ + public class User + { + + public int UserId { get; set; } + public string UserName { get; set; } + public string PwdHash { get; set; } + public int Status { get; set; } + public DateTime CreateTime { get; set; } + + } + } +} diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Data/SQLHelper.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Data/SQLHelper.cs new file mode 100644 index 0000000..c5f2543 --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Data/SQLHelper.cs @@ -0,0 +1,385 @@ +//=============================================================================== +// This file is based on the Microsoft Data Access Application Block for .NET +// For more information please go to +// http://msdn.microsoft.com/library/en-us/dnbda/html/daab-rm.asp +//=============================================================================== + +using System; +using System.Configuration; +using System.Data; +using System.Data.SqlClient; +using System.Collections; + +namespace CsharpOSMeteorCodeGenerator.Data +{ + + /// + /// The SqlHelper class is intended to encapsulate high performance, + /// scalable best practices for common uses of SqlClient. + /// + public abstract class SqlHelper + { + + //Database connection strings + //public static readonly string ConnectionString = ConfigurationManager.AppSettings["ConnectionString"]; + public static readonly string ConnectionString = "Data Source=.;Initial Catalog=master;Integrated Security=True"; + + // Hashtable to store cached parameters + private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable()); + + /// + /// Execute a SqlCommand (that returns no resultset) against the database specified in the connection string + /// using the provided parameters. + /// + /// + /// e.g.: + /// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24)); + /// + /// a valid connection string for a SqlConnection + /// the CommandType (stored procedure, text, etc.) + /// the stored procedure name or T-SQL command + /// an array of SqlParamters used to execute the command + /// an int representing the number of rows affected by the command + public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) + { + + SqlCommand cmd = new SqlCommand(); + + using (SqlConnection conn = new SqlConnection(connectionString)) + { + PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); + int val = cmd.ExecuteNonQuery(); + cmd.Parameters.Clear(); + return val; + } + } + + /// + /// Execute a SqlCommand (that returns no resultset) against an existing database connection + /// using the provided parameters. + /// + /// + /// e.g.: + /// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24)); + /// + /// an existing database connection + /// the CommandType (stored procedure, text, etc.) + /// the stored procedure name or T-SQL command + /// an array of SqlParamters used to execute the command + /// an int representing the number of rows affected by the command + public static int ExecuteNonQuery(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) + { + + SqlCommand cmd = new SqlCommand(); + + PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters); + int val = cmd.ExecuteNonQuery(); + cmd.Parameters.Clear(); + return val; + } + + /// + /// Execute a SqlCommand (that returns no resultset) using an existing SQL Transaction + /// using the provided parameters. + /// + /// + /// e.g.: + /// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24)); + /// + /// an existing sql transaction + /// the CommandType (stored procedure, text, etc.) + /// the stored procedure name or T-SQL command + /// an array of SqlParamters used to execute the command + /// an int representing the number of rows affected by the command + public static int ExecuteNonQuery(SqlTransaction trans, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) + { + SqlCommand cmd = new SqlCommand(); + PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters); + int val = cmd.ExecuteNonQuery(); + cmd.Parameters.Clear(); + return val; + } + + /// + /// Execute a SqlCommand that returns a resultset against the database specified in the connection string + /// using the provided parameters. + /// + /// + /// e.g.: + /// SqlDataReader r = ExecuteReader(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24)); + /// + /// a valid connection string for a SqlConnection + /// the CommandType (stored procedure, text, etc.) + /// the stored procedure name or T-SQL command + /// an array of SqlParamters used to execute the command + /// A SqlDataReader containing the results + public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) + { + SqlCommand cmd = new SqlCommand(); + SqlConnection conn = new SqlConnection(connectionString); + + // we use a try/catch here because if the method throws an exception we want to + // close the connection throw code, because no datareader will exist, hence the + // commandBehaviour.CloseConnection will not work + try + { + PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); + SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); + cmd.Parameters.Clear(); + return rdr; + } + catch + { + conn.Close(); + throw; + } + } + + /// + /// Execute a SqlCommand that returns the first column of the first record against the database specified in the connection string + /// using the provided parameters. + /// + /// + /// e.g.: + /// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24)); + /// + /// a valid connection string for a SqlConnection + /// the CommandType (stored procedure, text, etc.) + /// the stored procedure name or T-SQL command + /// an array of SqlParamters used to execute the command + /// An object that should be converted to the expected type using Convert.To{Type} + public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) + { + SqlCommand cmd = new SqlCommand(); + + using (SqlConnection connection = new SqlConnection(connectionString)) + { + PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters); + object val = cmd.ExecuteScalar(); + cmd.Parameters.Clear(); + return val; + } + } + public static object ExecuteScalar(string sql) + { + SqlCommand cmd = new SqlCommand(); + cmd.CommandText = sql; + using (SqlConnection connection = new SqlConnection(ConnectionString)) + { + cmd.Connection = connection; + connection.Open(); + object val = cmd.ExecuteScalar(); + connection.Close(); + return val; + } + } + + /// + /// Execute a SqlCommand that returns the first column of the first record against an existing database connection + /// using the provided parameters. + /// + /// + /// e.g.: + /// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24)); + /// + /// an existing database connection + /// the CommandType (stored procedure, text, etc.) + /// the stored procedure name or T-SQL command + /// an array of SqlParamters used to execute the command + /// An object that should be converted to the expected type using Convert.To{Type} + public static object ExecuteScalar(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) + { + + SqlCommand cmd = new SqlCommand(); + + PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters); + object val = cmd.ExecuteScalar(); + cmd.Parameters.Clear(); + return val; + } + + /// + /// add parameter array to the cache + /// + /// Key to the parameter cache + /// an array of SqlParamters to be cached + public static void CacheParameters(string cacheKey, params SqlParameter[] commandParameters) + { + parmCache[cacheKey] = commandParameters; + } + + /// + /// Retrieve cached parameters + /// + /// key used to lookup parameters + /// Cached SqlParamters array + public static SqlParameter[] GetCachedParameters(string cacheKey) + { + SqlParameter[] cachedParms = (SqlParameter[])parmCache[cacheKey]; + + if (cachedParms == null) + return null; + + SqlParameter[] clonedParms = new SqlParameter[cachedParms.Length]; + + for (int i = 0, j = cachedParms.Length; i < j; i++) + clonedParms[i] = (SqlParameter)((ICloneable)cachedParms[i]).Clone(); + + return clonedParms; + } + + /// + /// Prepare a command for execution + /// + /// SqlCommand object + /// SqlConnection object + /// SqlTransaction object + /// Cmd type e.g. stored procedure or text + /// Command text, e.g. Select * from Products + /// SqlParameters to use in the command + private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms) + { + + if (conn.State != ConnectionState.Open) + conn.Open(); + + cmd.Connection = conn; + cmd.CommandText = cmdText; + + if (trans != null) + cmd.Transaction = trans; + + cmd.CommandType = cmdType; + + if (cmdParms != null) + { + //foreach (SqlParameter parm in cmdParms) + // cmd.Parameters.Add(parm); + cmd.Parameters.AddRange(cmdParms); + } + } + public static SqlDataReader ExecuteReader(string sql) + { + SqlCommand cmd = new SqlCommand(); + SqlConnection connection = new SqlConnection(ConnectionString); + connection.Open(); + cmd.CommandText = sql; + cmd.Connection = connection; + return cmd.ExecuteReader(CommandBehavior.CloseConnection); + } + public static int ExecuteNonQuery(string sql) + { + SqlCommand cmd = new SqlCommand(); + + using (SqlConnection connection = new SqlConnection(ConnectionString)) + { + connection.Open(); + cmd.CommandText = sql; + cmd.Connection = connection; + int i = cmd.ExecuteNonQuery(); + connection.Close(); + return i; + + } + } + public static DataSet ExecuteDataSet(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) + { + SqlConnection connection = new SqlConnection(connectionString); + try + { + connection.Open(); + SqlCommand cmd = new SqlCommand(); + PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters); + SqlDataAdapter adp = new SqlDataAdapter(cmd); + DataSet dt = new DataSet(); + adp.Fill(dt); + connection.Close(); + return dt; + } + catch (Exception ex) + { + throw (ex); + } + finally + { + if (connection.State != ConnectionState.Closed) + { + connection.Close(); + } + } + } + public static DataSet ExecuteDataSet(string sql) + { + SqlConnection connection = new SqlConnection(ConnectionString); + try + { + connection.Open(); + SqlCommand cmd = new SqlCommand(sql, connection); + cmd.CommandType = CommandType.Text; + SqlDataAdapter adp = new SqlDataAdapter(cmd); + DataSet dt = new DataSet(); + adp.Fill(dt); + connection.Close(); + return dt; + } + catch (Exception ex) + { + throw (ex); + } + finally + { + if (connection.State != ConnectionState.Closed) + { + connection.Close(); + } + } + } + /// + /// Get the DataTable object by the query + /// + /// SQL query + /// + public static DataTable ExecuteGetDataTableFromTableName(string sql) + { + //DataSet dsSet = new DataSet(); + DataTable dt = new DataTable(); + using (SqlConnection conn = new SqlConnection(ConnectionString)) + { + //Command + SqlCommand scCommand = conn.CreateCommand(); + //scCommand.CommandText = "select * from " + strTableName; + scCommand.CommandText = sql; + //Adapter + SqlDataAdapter sdaAdapter = new SqlDataAdapter(scCommand); + sdaAdapter.Fill(dt); + } + return dt; + } + public static DataTable ExecuteDataTable(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) + { + SqlConnection connection = new SqlConnection(connectionString); + try + { + connection.Open(); + SqlCommand cmd = new SqlCommand(); + PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters); + SqlDataAdapter adp = new SqlDataAdapter(cmd); + DataTable dt = new DataTable(); + adp.Fill(dt); + connection.Close(); + return dt; + } + catch (Exception ex) + { + throw (ex); + } + finally + { + if (connection.State != ConnectionState.Closed) + { + connection.Close(); + } + } + } + } +} \ No newline at end of file diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Data/SqlDbTypeAndDbTypeConvert.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Data/SqlDbTypeAndDbTypeConvert.cs new file mode 100644 index 0000000..a8046fc --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Data/SqlDbTypeAndDbTypeConvert.cs @@ -0,0 +1,354 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Data; + +namespace CsharpOSMeteorCodeGenerator.Data +{ + public class SqlDbTypeAndDbTypeConvert + { + // SqlDbType转换为C#数据类型 + public static Type SqlType2CsharpType(SqlDbType sqlType) + { + switch (sqlType) + { + case SqlDbType.BigInt: + return typeof(Int64); + case SqlDbType.Binary: + return typeof(Object); + case SqlDbType.Bit: + return typeof(Boolean); + case SqlDbType.Char: + return typeof(String); + case SqlDbType.DateTime: + return typeof(DateTime); + case SqlDbType.Decimal: + return typeof(Decimal); + case SqlDbType.Float: + return typeof(Double); + case SqlDbType.Image: + return typeof(Object); + case SqlDbType.Int: + return typeof(Int32); + case SqlDbType.Money: + return typeof(Decimal); + case SqlDbType.NChar: + return typeof(String); + case SqlDbType.NText: + return typeof(String); + case SqlDbType.NVarChar: + return typeof(String); + case SqlDbType.Real: + return typeof(Single); + case SqlDbType.SmallDateTime: + return typeof(DateTime); + case SqlDbType.SmallInt: + return typeof(Int16); + case SqlDbType.SmallMoney: + return typeof(Decimal); + case SqlDbType.Text: + return typeof(String); + case SqlDbType.Timestamp: + return typeof(Object); + case SqlDbType.TinyInt: + return typeof(Byte); + case SqlDbType.Udt://自定义的数据类型 + return typeof(Object); + case SqlDbType.UniqueIdentifier: + return typeof(Object); + case SqlDbType.VarBinary: + return typeof(Object); + case SqlDbType.VarChar: + return typeof(String); + case SqlDbType.Variant: + return typeof(Object); + case SqlDbType.Xml: + return typeof(Object); + default: + return null; + } + } + + // sql server数据类型(如:varchar) + // 转换为SqlDbType类型 + public static SqlDbType SqlTypeString2SqlType(string sqlTypeString) + { + SqlDbType dbType = SqlDbType.Variant;//默认为Object + + switch (sqlTypeString) + { + case "int": + dbType = SqlDbType.Int; + break; + case "varchar": + dbType = SqlDbType.VarChar; + break; + case "bit": + dbType = SqlDbType.Bit; + break; + case "datetime": + dbType = SqlDbType.DateTime; + break; + case "decimal": + dbType = SqlDbType.Decimal; + break; + case "float": + dbType = SqlDbType.Float; + break; + case "image": + dbType = SqlDbType.Image; + break; + case "money": + dbType = SqlDbType.Money; + break; + case "ntext": + dbType = SqlDbType.NText; + break; + case "nvarchar": + dbType = SqlDbType.NVarChar; + break; + case "smalldatetime": + dbType = SqlDbType.SmallDateTime; + break; + case "smallint": + dbType = SqlDbType.SmallInt; + break; + case "text": + dbType = SqlDbType.Text; + break; + case "bigint": + dbType = SqlDbType.BigInt; + break; + case "binary": + dbType = SqlDbType.Binary; + break; + case "char": + dbType = SqlDbType.Char; + break; + case "nchar": + dbType = SqlDbType.NChar; + break; + case "numeric": + dbType = SqlDbType.Decimal; + break; + case "real": + dbType = SqlDbType.Real; + break; + case "smallmoney": + dbType = SqlDbType.SmallMoney; + break; + case "sql_variant": + dbType = SqlDbType.Variant; + break; + case "timestamp": + dbType = SqlDbType.Timestamp; + break; + case "tinyint": + dbType = SqlDbType.TinyInt; + break; + case "uniqueidentifier": + dbType = SqlDbType.UniqueIdentifier; + break; + case "varbinary": + dbType = SqlDbType.VarBinary; + break; + case "xml": + dbType = SqlDbType.Xml; + break; + } + return dbType; + } + // sql server中的数据类型,转换为C#中的类型类型 + public static Type SqlTypeString2CsharpType(string sqlTypeString) + { + SqlDbType dbTpe = SqlTypeString2SqlType(sqlTypeString); + + return SqlType2CsharpType(dbTpe); + } + + // 将sql server中的数据类型,转化为C#中的类型的字符串 + public static string SqlTypeString2CsharpTypeString(string sqlTypeString) + { + Type type = SqlTypeString2CsharpType(sqlTypeString); + + return type.Name; + } + public static string SqlTypeString2SqlTypers(string sqlTypeString) + { + //SqlDbType dbType ="SqlDbType.Variant;//默认为Object + string rs ="SqlDbType.Variant"; + switch (sqlTypeString) + { + case "int": + rs ="SqlDbType.Int"; + break; + case "varchar": + rs ="SqlDbType.VarChar"; + break; + case "bit": + rs ="SqlDbType.Bit"; + break; + case "datetime": + rs ="SqlDbType.DateTime"; + break; + case "decimal": + rs ="SqlDbType.Decimal"; + break; + case "float": + rs ="SqlDbType.Float"; + break; + case "image": + rs ="SqlDbType.Image"; + break; + case "money": + rs ="SqlDbType.Money"; + break; + case "ntext": + rs ="SqlDbType.NText"; + break; + case "nvarchar": + rs ="SqlDbType.NVarChar"; + break; + case "smalldatetime": + rs ="SqlDbType.SmallDateTime"; + break; + case "smallint": + rs ="SqlDbType.SmallInt"; + break; + case "text": + rs ="SqlDbType.Text"; + break; + case "bigint": + rs ="SqlDbType.BigInt"; + break; + case "binary": + rs ="SqlDbType.Binary"; + break; + case "char": + rs ="SqlDbType.Char"; + break; + case "nchar": + rs ="SqlDbType.NChar"; + break; + case "numeric": + rs ="SqlDbType.Decimal"; + break; + case "real": + rs ="SqlDbType.Real"; + break; + case "smallmoney": + rs = "SqlDbType.SmallMoney"; + break; + case "sql_variant": + rs = "SqlDbType.Variant"; + break; + case "timestamp": + rs = "SqlDbType.Timestamp"; + break; + case "tinyint": + rs = "SqlDbType.TinyInt"; + break; + case "uniqueidentifier": + rs = "SqlDbType.UniqueIdentifier"; + break; + case "varbinary": + rs = "SqlDbType.VarBinary"; + break; + case "xml": + rs = "SqlDbType.Xml"; + break; + } + return rs; + } + public static string Str_TypersStringSqlType(string sqlTypeString) + { + //SqlDbType dbType ="SqlDbType.Variant;//默认为Object + //System.Convert.ToDateTime + string rs = "System.Convert.ToString"; + //System.Convert. + switch (sqlTypeString) + { + case "int": + rs = "System.Convert.ToInt32"; + break; + case "varchar": + rs = "System.Convert.ToString"; + break; + case "bit": + rs = "System.Convert.ToBoolean"; + break; + case "datetime": + rs = " DateTime.Parse"; + break; + case "decimal": + rs = "Convert.ToDecimal"; + break; + case "float": + rs = "System.Convert.ToDouble"; + break; + case "image": + rs = "(Object)"; + break; + case "money": + rs = "Convert.ToDecimal"; + break; + case "ntext": + rs = "System.Convert.ToString"; + break; + case "nvarchar": + rs = "System.Convert.ToString"; + break; + case "smalldatetime": + rs = "DateTime.Parse"; + break; + case "smallint": + rs = "System.Convert.ToInt16"; + break; + case "text": + rs = "System.Convert.ToString"; + break; + case "bigint": + rs = "System.Convert.ToInt32"; + break; + case "binary": + rs = "SqlDbType.Binary"; + break; + case "char": + rs = "System.Convert.ToString"; + break; + case "nchar": + rs = "System.Convert.ToString"; + break; + case "numeric": + rs = "SqlDbType.Decimal"; + break; + case "real": + rs = "(object)"; + break; + case "smallmoney": + rs = "(object)"; + break; + case "sql_variant": + rs = "(object)"; + break; + case "timestamp": + rs = "(object)"; + break; + case "tinyint": + rs = "System.Convert.ToInt32"; + break; + case "uniqueidentifier": + rs = "System.Guid.Parse"; + break; + case "varbinary": + rs = "(Object)"; + break; + case "xml": + rs = "(Object)"; + break; + } + return rs; + } + } +} diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Data/TableData.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Data/TableData.cs new file mode 100644 index 0000000..07d250f --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Data/TableData.cs @@ -0,0 +1,255 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using CsharpOSMeteorCodeGenerator.Model; +using System.Data.SqlClient; +using System.Data; + +namespace CsharpOSMeteorCodeGenerator.Data +{ + public class TableData + { + + /// + /// List the tables of an especific database + /// + /// SQL Connection + /// tables list + public List
ListTables(SqlConnectionStringBuilder conn) + { + List
lstTables = new List
(); + ColumnData columnDataLayer = new ColumnData(); + + using (SqlConnection dbConnection = new SqlConnection(conn.ConnectionString)) + { + dbConnection.Open(); + StringBuilder strBuilder = new StringBuilder(); + SqlCommand cmd = new SqlCommand(); + + strBuilder.Append("select "); + strBuilder.Append("a.table_catalog, "); + strBuilder.Append("a.table_schema, "); + strBuilder.Append("a.table_name "); + strBuilder.Append("from information_schema.tables a"); + + cmd.CommandType = CommandType.Text; + cmd.Connection = dbConnection; + cmd.CommandText = strBuilder.ToString(); + + SqlDataReader reader = cmd.ExecuteReader(); + while (reader.Read()) + { + Table table = new Table(); + table.Catalog = reader["table_catalog"].ToString(); + table.Schema = reader["table_schema"].ToString(); + table.Name = reader["table_name"].ToString(); + // Fill the table columns + foreach (Column column in columnDataLayer.ListColumnsByTable(table, conn)) + { + table.AddColumn(column); + } + lstTables.Add(table); + } + dbConnection.Close(); + } + return lstTables; + } + public List ListTablesColumn(string tableName, SqlConnectionStringBuilder conn) + { + List lstColumns = new List(); + using (SqlConnection dbConnection = new SqlConnection(conn.ConnectionString)) + { + dbConnection.Open(); + StringBuilder strBuilder = new StringBuilder(); + SqlCommand cmd = new SqlCommand(); + + strBuilder.Append("select "); + strBuilder.Append("a.column_name as column_name, "); + strBuilder.Append("CASE a.is_nullable "); + strBuilder.Append("WHEN 'YES' THEN 1 "); + strBuilder.Append("ELSE 0 "); + strBuilder.Append("END as nullable, "); + strBuilder.Append("a.data_type as type, "); + strBuilder.Append("a.character_maximum_length as character_maximum_length, "); + strBuilder.Append("(SELECT count([sc].[name]) as have "); + strBuilder.Append("FROM sys.indexes [si] "); + strBuilder.Append("JOIN "); + strBuilder.Append("sys.index_columns [sic] "); + strBuilder.Append("ON "); + strBuilder.Append("[si].[object_id] = [sic].[object_id] AND "); + strBuilder.Append("[si].[index_id] = [sic].[index_id] "); + strBuilder.Append("JOIN "); + strBuilder.Append("sys.columns [sc] "); + strBuilder.Append("ON "); + strBuilder.Append("[sic].[object_id] = [sc].[object_id] AND "); + strBuilder.Append("[sic].[column_id] = [sc].[column_id] "); + strBuilder.Append("WHERE [si].[is_primary_Key] = 1 "); + strBuilder.Append("and [sc].[name] = a.column_name "); + strBuilder.Append("and OBJECT_NAME([si].[object_id]) = a.table_name "); + strBuilder.Append(") as primary_key, "); + strBuilder.Append("( "); + strBuilder.Append("select "); + strBuilder.Append("count(ccu.column_name) as have "); + strBuilder.Append("from information_schema.constraint_column_usage ccu "); + strBuilder.Append("inner join information_schema.table_constraints tc "); + strBuilder.Append("on (ccu.constraint_name = tc.constraint_name) "); + strBuilder.Append("where tc.Constraint_Type = 'FOREIGN KEY' "); + strBuilder.Append("and ccu.table_name = a.table_name "); + strBuilder.Append("and ccu.column_name = a.column_name "); + strBuilder.Append(") as foreign_key "); + strBuilder.Append("from information_schema.columns a "); + strBuilder.Append("inner join information_schema.tables b "); + strBuilder.Append("on (a.table_name = b.table_name) "); + strBuilder.Append("where a.table_name = @tableName "); + + SqlParameter data = new SqlParameter("@tableName", SqlDbType.NChar); + data.Value = tableName; + + cmd.CommandText = strBuilder.ToString(); + cmd.Parameters.Add(data); + cmd.CommandType = CommandType.Text; + cmd.Connection = dbConnection; + + SqlDataReader reader = cmd.ExecuteReader(); + while (reader.Read()) + { + Column column = new Column(); + column.ForeignKey = Convert.ToBoolean(reader["foreign_key"]); + column.PrimaryKey = Convert.ToBoolean(reader["primary_key"]); + if (reader["character_maximum_length"] != DBNull.Value) + { + column.CharacterMaximumLength = Convert.ToInt32(reader["character_maximum_length"]); + } + column.Name = reader["column_name"].ToString(); + column.Nullable = Convert.ToBoolean(reader["nullable"]); + column.Type = reader["type"].ToString(); + //column.Table = table; + lstColumns.Add(column); + } + dbConnection.Close(); + } + + return lstColumns; + } + public List
ListViews(SqlConnectionStringBuilder conn) + { + List
lstTables = new List
(); + ColumnData columnDataLayer = new ColumnData(); + + using (SqlConnection dbConnection = new SqlConnection(conn.ConnectionString)) + { + dbConnection.Open(); + StringBuilder strBuilder = new StringBuilder(); + SqlCommand cmd = new SqlCommand(); + + strBuilder.Append("select "); + strBuilder.Append("a.table_catalog, "); + strBuilder.Append("a.table_schema, "); + strBuilder.Append("a.table_name "); + strBuilder.Append("from information_schema.views a"); + + cmd.CommandType = CommandType.Text; + cmd.Connection = dbConnection; + cmd.CommandText = strBuilder.ToString(); + + SqlDataReader reader = cmd.ExecuteReader(); + while (reader.Read()) + { + Table table = new Table(); + table.Catalog = reader["table_catalog"].ToString(); + table.Schema = reader["table_schema"].ToString(); + table.Name = reader["table_name"].ToString(); + // Fill the table columns + foreach (Column column in columnDataLayer.ListColumnsByTable(table, conn)) + { + table.AddColumn(column); + } + lstTables.Add(table); + } + dbConnection.Close(); + } + return lstTables; + } + public List
ListProc(SqlConnectionStringBuilder conn) + { + List
lstTables = new List
(); + ColumnData columnDataLayer = new ColumnData(); + + using (SqlConnection dbConnection = new SqlConnection(conn.ConnectionString)) + { + dbConnection.Open(); + StringBuilder strBuilder = new StringBuilder(); + SqlCommand cmd = new SqlCommand(); + + strBuilder.Append("select "); + strBuilder.Append("a.SPECIFIC_CATALOG as dbname ,"); + strBuilder.Append(" a.ROUTINE_NAME as procname ,"); + strBuilder.Append("a.ROUTINE_DEFINITION as proccontext,"); + strBuilder.Append("a.CREATED as createdate, "); + strBuilder.Append("a.LAST_ALTERED as updatetime"); + strBuilder.Append(" from information_schema.ROUTINES a where a.ROUTINE_TYPE='PROCEDURE'"); + cmd.CommandType = CommandType.Text; + cmd.Connection = dbConnection; + cmd.CommandText = strBuilder.ToString(); + + SqlDataReader reader = cmd.ExecuteReader(); + while (reader.Read()) + { + Table table = new Table(); + table.Catalog = reader["updatetime"].ToString(); + table.Schema = reader["proccontext"].ToString(); + table.Name = reader["procname"].ToString(); + //Fill the table columns + foreach (Column column in columnDataLayer.ListColumnsByTable(table, conn)) + { + table.AddColumn(column); + } + lstTables.Add(table); + } + dbConnection.Close(); + } + return lstTables; + } + public List
ListFunction(SqlConnectionStringBuilder conn) + { + List
lstTables = new List
(); + ColumnData columnDataLayer = new ColumnData(); + + using (SqlConnection dbConnection = new SqlConnection(conn.ConnectionString)) + { + dbConnection.Open(); + StringBuilder strBuilder = new StringBuilder(); + SqlCommand cmd = new SqlCommand(); + + strBuilder.Append("select"); + strBuilder.Append("a.SPECIFIC_CATALOG as dbname ,"); + strBuilder.Append(" a.ROUTINE_NAME as procname ,"); + strBuilder.Append("a.ROUTINE_DEFINITION as proccontext,"); + strBuilder.Append("a.CREATED as createdate, "); + strBuilder.Append("a.LAST_ALTERED as updatetime"); + strBuilder.Append("from information_schema.ROUTINES a where a.ROUTINE_TYPE='FUNCTION'"); + cmd.CommandType = CommandType.Text; + cmd.Connection = dbConnection; + cmd.CommandText = strBuilder.ToString(); + + SqlDataReader reader = cmd.ExecuteReader(); + while (reader.Read()) + { + Table table = new Table(); + table.Catalog = reader["dbname"].ToString(); + table.Schema = reader["proccontext"].ToString(); + table.Name = reader["procname"].ToString(); + // Fill the table columns + //foreach (Column column in columnDataLayer.ListColumnsByTable(table, conn)) + //{ + // table.AddColumn(column); + //} + lstTables.Add(table); + } + dbConnection.Close(); + } + return lstTables; + } + } +} diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_ADO_CodeGenerator.Designer.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_ADO_CodeGenerator.Designer.cs new file mode 100644 index 0000000..b5460b9 --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_ADO_CodeGenerator.Designer.cs @@ -0,0 +1,284 @@ +namespace CsharpOSMeteorCodeGenerator +{ + partial class F_ADO_CodeGenerator + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(F_ADO_CodeGenerator)); + this.panel1 = new System.Windows.Forms.Panel(); + this.panel4 = new System.Windows.Forms.Panel(); + this.bun_back = new System.Windows.Forms.Button(); + this.btn_CodeGenerator = new System.Windows.Forms.Button(); + this.panel2 = new System.Windows.Forms.Panel(); + this.txt_methodsname = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.panel3 = new System.Windows.Forms.Panel(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.llab_checkAllorNot_Click1 = new System.Windows.Forms.LinkLabel(); + this.tvw_field_where = new System.Windows.Forms.TreeView(); + this.lstImage = new System.Windows.Forms.ImageList(this.components); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.llab_checkAllorNot = new System.Windows.Forms.LinkLabel(); + this.tvw_field = new System.Windows.Forms.TreeView(); + this.lb_state = new System.Windows.Forms.Label(); + this.panel1.SuspendLayout(); + this.panel4.SuspendLayout(); + this.panel2.SuspendLayout(); + this.panel3.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.Controls.Add(this.panel4); + this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom; + this.panel1.Location = new System.Drawing.Point(0, 333); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(674, 33); + this.panel1.TabIndex = 1; + // + // panel4 + // + this.panel4.Controls.Add(this.bun_back); + this.panel4.Controls.Add(this.btn_CodeGenerator); + this.panel4.Dock = System.Windows.Forms.DockStyle.Right; + this.panel4.Location = new System.Drawing.Point(304, 0); + this.panel4.Name = "panel4"; + this.panel4.Size = new System.Drawing.Size(370, 33); + this.panel4.TabIndex = 14; + // + // bun_back + // + this.bun_back.Location = new System.Drawing.Point(95, 3); + this.bun_back.Name = "bun_back"; + this.bun_back.Size = new System.Drawing.Size(75, 23); + this.bun_back.TabIndex = 13; + this.bun_back.Text = "back"; + this.bun_back.UseVisualStyleBackColor = true; + this.bun_back.Click += new System.EventHandler(this.bun_back_Click); + // + // btn_CodeGenerator + // + this.btn_CodeGenerator.Location = new System.Drawing.Point(202, 4); + this.btn_CodeGenerator.Name = "btn_CodeGenerator"; + this.btn_CodeGenerator.Size = new System.Drawing.Size(126, 23); + this.btn_CodeGenerator.TabIndex = 12; + this.btn_CodeGenerator.Text = "CodeGenerator"; + this.btn_CodeGenerator.UseVisualStyleBackColor = true; + this.btn_CodeGenerator.Click += new System.EventHandler(this.btn_CodeGenerator_Click); + // + // panel2 + // + this.panel2.Controls.Add(this.lb_state); + this.panel2.Controls.Add(this.txt_methodsname); + this.panel2.Controls.Add(this.label2); + this.panel2.Controls.Add(this.label1); + this.panel2.Dock = System.Windows.Forms.DockStyle.Top; + this.panel2.Location = new System.Drawing.Point(0, 0); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(674, 47); + this.panel2.TabIndex = 2; + // + // txt_methodsname + // + this.txt_methodsname.Location = new System.Drawing.Point(165, 12); + this.txt_methodsname.Name = "txt_methodsname"; + this.txt_methodsname.Size = new System.Drawing.Size(237, 21); + this.txt_methodsname.TabIndex = 2; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(85, 17); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(77, 12); + this.label2.TabIndex = 1; + this.label2.Text = "MethodsName:"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("宋体", 12F); + this.label1.Location = new System.Drawing.Point(8, 13); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(56, 16); + this.label1.TabIndex = 0; + this.label1.Text = "label1"; + // + // panel3 + // + this.panel3.Controls.Add(this.groupBox2); + this.panel3.Controls.Add(this.groupBox1); + this.panel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel3.Location = new System.Drawing.Point(0, 47); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(674, 286); + this.panel3.TabIndex = 3; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.llab_checkAllorNot_Click1); + this.groupBox2.Controls.Add(this.tvw_field_where); + this.groupBox2.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox2.Location = new System.Drawing.Point(365, 0); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(309, 286); + this.groupBox2.TabIndex = 1; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "field-where"; + // + // llab_checkAllorNot_Click1 + // + this.llab_checkAllorNot_Click1.AutoSize = true; + this.llab_checkAllorNot_Click1.Location = new System.Drawing.Point(203, 2); + this.llab_checkAllorNot_Click1.Name = "llab_checkAllorNot_Click1"; + this.llab_checkAllorNot_Click1.Size = new System.Drawing.Size(101, 12); + this.llab_checkAllorNot_Click1.TabIndex = 11; + this.llab_checkAllorNot_Click1.TabStop = true; + this.llab_checkAllorNot_Click1.Text = "check all or not"; + this.llab_checkAllorNot_Click1.Click += new System.EventHandler(this.llab_checkAllorNot_Click1_Click); + // + // tvw_field_where + // + this.tvw_field_where.CheckBoxes = true; + this.tvw_field_where.Dock = System.Windows.Forms.DockStyle.Fill; + this.tvw_field_where.ImageIndex = 0; + this.tvw_field_where.ImageList = this.lstImage; + this.tvw_field_where.Location = new System.Drawing.Point(3, 17); + this.tvw_field_where.Name = "tvw_field_where"; + this.tvw_field_where.SelectedImageIndex = 0; + this.tvw_field_where.Size = new System.Drawing.Size(303, 266); + this.tvw_field_where.TabIndex = 2; + // + // lstImage + // + this.lstImage.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("lstImage.ImageStream"))); + this.lstImage.TransparentColor = System.Drawing.Color.Transparent; + this.lstImage.Images.SetKeyName(0, "table-icon.png"); + this.lstImage.Images.SetKeyName(1, "field-icon.png"); + this.lstImage.Images.SetKeyName(2, "primary_key-icon.png"); + this.lstImage.Images.SetKeyName(3, "foreign_key-icon.png"); + this.lstImage.Images.SetKeyName(4, "db.png"); + this.lstImage.Images.SetKeyName(5, "00060.png"); + this.lstImage.Images.SetKeyName(6, "views.png"); + this.lstImage.Images.SetKeyName(7, "proc.png"); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.llab_checkAllorNot); + this.groupBox1.Controls.Add(this.tvw_field); + this.groupBox1.Dock = System.Windows.Forms.DockStyle.Left; + this.groupBox1.Location = new System.Drawing.Point(0, 0); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(365, 286); + this.groupBox1.TabIndex = 0; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "field"; + // + // llab_checkAllorNot + // + this.llab_checkAllorNot.AutoSize = true; + this.llab_checkAllorNot.Location = new System.Drawing.Point(238, 3); + this.llab_checkAllorNot.Name = "llab_checkAllorNot"; + this.llab_checkAllorNot.Size = new System.Drawing.Size(101, 12); + this.llab_checkAllorNot.TabIndex = 11; + this.llab_checkAllorNot.TabStop = true; + this.llab_checkAllorNot.Text = "check all or not"; + this.llab_checkAllorNot.Click += new System.EventHandler(this.llab_checkAllorNot_Click); + // + // tvw_field + // + this.tvw_field.CheckBoxes = true; + this.tvw_field.Dock = System.Windows.Forms.DockStyle.Fill; + this.tvw_field.ImageIndex = 0; + this.tvw_field.ImageList = this.lstImage; + this.tvw_field.Location = new System.Drawing.Point(3, 17); + this.tvw_field.Name = "tvw_field"; + this.tvw_field.SelectedImageIndex = 0; + this.tvw_field.Size = new System.Drawing.Size(359, 266); + this.tvw_field.TabIndex = 1; + // + // lb_state + // + this.lb_state.AutoSize = true; + this.lb_state.Font = new System.Drawing.Font("宋体", 9F); + this.lb_state.ForeColor = System.Drawing.Color.Red; + this.lb_state.Location = new System.Drawing.Point(412, 17); + this.lb_state.Name = "lb_state"; + this.lb_state.Size = new System.Drawing.Size(0, 12); + this.lb_state.TabIndex = 3; + // + // F_ADO_CodeGenerator + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(674, 366); + this.Controls.Add(this.panel3); + this.Controls.Add(this.panel2); + this.Controls.Add(this.panel1); + this.Name = "F_ADO_CodeGenerator"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "F_ADO_CodeGenerator"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.F_ADO_CodeGenerator_FormClosing); + this.Load += new System.EventHandler(this.F_ADO_CodeGenerator_Load); + this.panel1.ResumeLayout(false); + this.panel4.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.panel2.PerformLayout(); + this.panel3.ResumeLayout(false); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.TreeView tvw_field; + private System.Windows.Forms.ImageList lstImage; + private System.Windows.Forms.TreeView tvw_field_where; + private System.Windows.Forms.LinkLabel llab_checkAllorNot_Click1; + private System.Windows.Forms.LinkLabel llab_checkAllorNot; + private System.Windows.Forms.Button btn_CodeGenerator; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox txt_methodsname; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Button bun_back; + private System.Windows.Forms.Panel panel4; + private System.Windows.Forms.Label lb_state; + } +} \ No newline at end of file diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_ADO_CodeGenerator.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_ADO_CodeGenerator.cs new file mode 100644 index 0000000..a04d181 --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_ADO_CodeGenerator.cs @@ -0,0 +1,649 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using CsharpOSMeteorCodeGenerator.Model; +using ICSharpCode.TextEditor; +using CsharpOSMeteorCodeGenerator.Data; +using System.IO; + +namespace CsharpOSMeteorCodeGenerator +{ + public partial class F_ADO_CodeGenerator : Form + { + public F_ADO_CodeGenerator() + { + InitializeComponent(); + } + public object selectnode { get; set; } + public string SQLType { get; set; } + public string Pidnode_dbname { get; set; } + string Pidnode_TBname = ""; + //List
list_tab; + //List
list_tab2; + int type = 0; + + private void F_ADO_CodeGenerator_Load(object sender, EventArgs e) + { + F_AD0_Load(); + if (SQLType == "Select") { + type = 1; + + } + if (SQLType == "Update") + { + type = 2; + } + if (SQLType == "Insert") + { + type = 3; + this.groupBox2.Hide(); + //this.tvw_field.Enabled = false; + //this.llab_checkAllorNot.Hide(); + //NodecheckAllorNot(true, this.tvw_field); + setIsnull_insert(this.tvw_field); + } + if (SQLType == "Delete") + { + type = 4; + this.groupBox1.Hide(); + } + this.label1.Text = SQLType; + this.txt_methodsname.Text = Pidnode_TBname + SQLType + "_Custom"; + + } + void F_AD0_Load() { + this.btn_CodeGenerator.Enabled = false; + this.bun_back.Enabled = false; + this.llab_checkAllorNot.Enabled = false; + this.llab_checkAllorNot_Click1.Enabled = false; + + OSMyNode node = (OSMyNode)this.selectnode; + Pidnode_TBname = node.Text; + Data.GetListTables glt = new Data.GetListTables(); + Data.ColumnData dcd = new Data.ColumnData(); + Data.TableData tabdata = new Data.TableData(); + List list_column = tabdata.ListTablesColumn(node.Text, Model.EModel.connBuilder); + OSMyNode Tnode; + foreach (Column column in list_column) + { + Tnode = new OSMyNode(); + Tnode.Value = column; + //Tnode.Text = column.Name; + Tnode.Text = column.Name + " \n(" + ListarAtributos(column) + ")"; + Tnode.ToolTipText = column.Name + " \n(" + ListarAtributos(column) + ")"; + Tnode.ImageIndex = GetImageIndex(column); + Tnode.SelectedImageIndex = GetImageIndex(column); + this.tvw_field.Nodes.Add(Tnode); + //OSMyNode Tnode2 = new OSMyNode(); + //Tnode2 = Tnode; + Tnode = new OSMyNode(); + Tnode.Value = column; + //Tnode.Text = column.Name; + Tnode.Text = column.Name + " \n(" + ListarAtributos(column) + ")"; + Tnode.ToolTipText = column.Name + " \n(" + ListarAtributos(column) + ")"; + Tnode.ImageIndex = GetImageIndex(column); + Tnode.SelectedImageIndex = GetImageIndex(column); + this.tvw_field_where.Nodes.Add(Tnode); + } + this.btn_CodeGenerator.Enabled = true; + this.bun_back.Enabled = true; + this.llab_checkAllorNot.Enabled = true; + this.llab_checkAllorNot_Click1.Enabled = true; + } + private int GetImageIndex(Column column) + { + if (column.PrimaryKey) + { + return (int)DBImage.PRIMARY_KEY; + } + else if (column.ForeignKey) + { + return (int)DBImage.FOREIGN_KEY; + } + else + { + return (int)DBImage.FIELD; + } + } + /// + /// Database's objects image + /// + public enum DBImage : int + { + TABLE = 0, + FIELD = 1, + PRIMARY_KEY = 2, + FOREIGN_KEY = 3 + } + private string ListarAtributos(Column column) + { + string attributes = String.Empty; + + if (column.PrimaryKey) + { + attributes += "PK, "; + } + + if (column.ForeignKey) + { + attributes += "FK, "; + } + + if (column.CharacterMaximumLength != null) + { + attributes += column.Type + "(" + column.CharacterMaximumLength + "), "; + } + else + { + attributes += column.Type + ", "; + } + + attributes += (column.Nullable) ? "null" : "not null"; + + return attributes; + } + public void NodecheckAllorNot(Boolean checkstate,System.Windows.Forms.TreeView Trv ) + { + + foreach (OSMyNode node in Trv.Nodes) + { + node.Checked = checkstate; + } + + } + int checkT = 1; + private void llab_checkAllorNot_Click(object sender, EventArgs e) + { + if (checkT == 1) + { + + NodecheckAllorNot(false,this.tvw_field); + if (type == 3) + setIsnull_insert(this.tvw_field); + checkT = 0; + } + else + { + NodecheckAllorNot(true,this.tvw_field); + checkT = 1; + } + } + int checkT2 = 1; + private void llab_checkAllorNot_Click1_Click(object sender, EventArgs e) + { + if (checkT2 == 1) + { + + NodecheckAllorNot(false, this.tvw_field_where); + checkT2 = 0; + } + else + { + NodecheckAllorNot(true, this.tvw_field_where); + + checkT2 = 1; + } + } + TextEditorControl txtEditControl; + //string Filepath_ADOCode = @"..\..\config\tempADO_Code.cs"; + void loadtxtEdit() { + //this.panel3.Controls.Clear(); + this.groupBox1.Hide(); + this.groupBox2.Hide(); + if (txtEditControl == null) + { + txtEditControl = new TextEditorControl(); + txtEditControl.Dock = DockStyle.Fill; + + txtEditControl.Document.HighlightingStrategy = + ICSharpCode.TextEditor.Document.HighlightingStrategyFactory.CreateHighlightingStrategy("C#"); + txtEditControl.Encoding = System.Text.Encoding.Default; + this.panel3.Controls.Add(txtEditControl); + //txtEditControl.LoadFile(Filepath_ADOCode); + } + else { + this.panel3.Controls.Remove(txtEditControl); + txtEditControl = new TextEditorControl(); + txtEditControl.Dock = DockStyle.Fill; + txtEditControl.Document.HighlightingStrategy = + ICSharpCode.TextEditor.Document.HighlightingStrategyFactory.CreateHighlightingStrategy("C#"); + txtEditControl.Encoding = System.Text.Encoding.Default; + this.panel3.Controls.Add(txtEditControl); + //txtEditControl.LoadFile(Filepath_ADOCode); + } + + + } + + private void btn_CodeGenerator_Click(object sender, EventArgs e) + { + lb_state.Text = ""; + string sql = ""; + string Parameter = ""; + if (type == 1) + { + //string selectsql = GetrTablefieldSelectSQL(this.tvw_field, this.tvw_field_where); + //MessageBox.Show(selectsql); + //string ParmSelect = GetrTablefieldSqlParameterSQL_select(this.tvw_field_where); + //MessageBox.Show(ParmSelect); + if(!GetMParameterIsCheck(this.tvw_field)){ + lb_state.Text="Please choose to select the field."; + return; + } + loadtxtEdit(); + sql = GetrTablefieldSelectSQL(this.tvw_field, this.tvw_field_where); + Parameter = GetrTablefieldSqlParameterSQL_select(this.tvw_field_where); + string rs = "public DataTable " + this.txt_methodsname.Text + "(" + GetMParameter(this.tvw_field_where) + ")\r\n"; + rs += "{\r\n"; + rs += " string sql=\"" + sql + "\";\r\n"; + rs += Parameter + "\r\n"; + rs += " return SqlHelper.ExecuteDataTable(SqlHelper.ConnectionString, CommandType.Text, sql, spms);"; + rs += "\r\n}\r\n"; + this.txtEditControl.Text = rs; + //using (StreamWriter sw = File.CreateText(Filepath_ADOCode)) + //{ + + // sw.WriteLine(rs); + // sw.Close(); + //} + + } + if (type == 2) { + //string updatesql = GetrTablefieldUpdateSQL(this.tvw_field, this.tvw_field_where); + //MessageBox.Show(updatesql); + //string ParmUpdate = GetrTablefieldSqlParameterSQL_update(this.tvw_field, this.tvw_field_where); + //MessageBox.Show(ParmUpdate); + if(!GetMParameterIsCheck(this.tvw_field)){ + lb_state.Text="Please choose to update the field."; + return; + } + if(!GetMParameterIsCheck(this.tvw_field_where)){ + lb_state.Text="Please choose to update the condition."; + return; + } + loadtxtEdit(); + sql =GetrTablefieldUpdateSQL(this.tvw_field, this.tvw_field_where); + Parameter =GetrTablefieldSqlParameterSQL_update(this.tvw_field , this.tvw_field_where); + string rs = "public bool " + this.txt_methodsname.Text + "(" + GetMParameter_update(this.tvw_field, this.tvw_field_where) + ")\r\n"; + rs += "{\r\n"; + rs += " string sql=\"" + sql + "\";\r\n"; + rs += Parameter + "\r\n"; + rs += @" if (SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionString, CommandType.Text, sql, spms) > 0) + return true; + else + return false;"; + rs += "\r\n}\r\n"; + this.txtEditControl.Text = rs; + //using (StreamWriter sw = File.CreateText(Filepath_ADOCode)) + //{ + + // sw.WriteLine(rs); + // sw.Close(); + //} + + } + if (type == 3) + { + //string insertsql = GetrTablefieldInsertSQL(this.tvw_field); + //MessageBox.Show(insertsql); + //string ParmInsert = GetrTablefieldSqlParameterSQL_Insert(this.tvw_field); + //MessageBox.Show(ParmInsert); + if(!GetMParameterIsCheck(this.tvw_field)){ + lb_state.Text="Please choose to insert the field."; + return; + } + loadtxtEdit(); + sql = GetrTablefieldInsertSQL(this.tvw_field); + Parameter = GetrTablefieldSqlParameterSQL_Insert(this.tvw_field); + string rs = "public bool " + this.txt_methodsname.Text + "(" + GetMParameter(this.tvw_field) + ")\r\n"; + rs += "{\r\n"; + rs += " string sql=\"" + sql + "\";\r\n"; + rs += Parameter + "\r\n"; + rs += @" if (SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionString, CommandType.Text, sql, spms) > 0) + return true; + else + return false;"; + rs += "\r\n}\r\n"; + this.txtEditControl.Text = rs; + // using (StreamWriter sw = File.CreateText(Filepath_ADOCode)) + //{ + + // sw.WriteLine(rs); + // sw.Close(); + //} + } + if (type == 4) { + //string deletesql = GetrTablefieldDeleteSQL(this.tvw_field_where); + //MessageBox.Show(deletesql); + //string ParmDelete = GetrTablefieldSqlParameterSQL_select(this.tvw_field_where); + //MessageBox.Show(ParmDelete); + if(!GetMParameterIsCheck(this.tvw_field_where)){ + lb_state.Text="Please choose to delete the condition."; + return; + } + loadtxtEdit(); + sql= GetrTablefieldDeleteSQL(this.tvw_field_where); + Parameter = GetrTablefieldSqlParameterSQL_select(this.tvw_field_where); + string rs = "public bool " + this.txt_methodsname.Text + "(" + GetMParameter(this.tvw_field_where) + ")\r\n"; + rs += "{\r\n"; + rs += " string sql=\"" + sql + "\";\r\n"; + rs += Parameter + "\r\n"; + rs += @" if (SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionString, CommandType.Text, sql, spms) > 0) + return true; + else + return false;"; + rs += "\r\n}\r\n"; + this.txtEditControl.Text = rs; + //using (StreamWriter sw = File.CreateText(Filepath_ADOCode)) + //{ + + // sw.WriteLine(rs); + // sw.Close(); + //} + } + + //loadtxtEdit(); + //txtEditControl.LoadFile(Filepath_ADOCode); + //txtEditControl.Text = "aa"; + } + + public string GetrTablefieldSqlParameterSQLLength(string dbsql) + { + + string rs = ""; + if (dbsql == "varchar" || dbsql == "nvarchar" || dbsql == "char") + { + rs = ", -1 "; + } + return rs; + } + // 生成数据格式Select + public string GetrTablefieldSelectSQL(System.Windows.Forms.TreeView tvw_field, System.Windows.Forms.TreeView tvw_field_where) + { + string rs = "use " + Pidnode_dbname + " select "; + string strwhere = " where "; + foreach (OSMyNode node in tvw_field.Nodes) + { + if (node.Checked == true) + { + Column item = (Column)node.Value; + rs += item.Name + ","; + } + } + if (rs.EndsWith(",")) + rs = rs.Remove(rs.Length - 1); + foreach (OSMyNode node in tvw_field_where.Nodes) + { + Column item = (Column)node.Value; + if (node.Checked == true) + { + strwhere += "" + item.Name + "=@" + item.Name + ","; + } + } + if (strwhere.EndsWith(",")) + strwhere = strwhere.Remove(strwhere.Length - 1); + rs += " from " + " [" + Pidnode_dbname + "].[dbo].[" + Pidnode_TBname + "] " + ""; + rs += strwhere; + return rs; + + } + public string GetrTablefieldSqlParameterSQL_select(System.Windows.Forms.TreeView tvw_field_where) + { + string rs = "\r\n SqlParameter[] spms = {"; + foreach (OSMyNode node in tvw_field_where.Nodes) + { + Column item = (Column)node.Value; + if (node.Checked == true) + { + string Sqltype = Data.SqlDbTypeAndDbTypeConvert.SqlTypeString2SqlTypers(item.Type); + string Sqltypelength = GetrTablefieldSqlParameterSQLLength(item.Type); + rs += "\r\n new SqlParameter(\"@" + item.Name + "\", " + Sqltype + + " " + Sqltypelength.ToString() + ") { Value =" + item.Name + " },"; + } + } + if (rs.EndsWith(",")) + rs = rs.Remove(rs.Length - 1); + rs += "\r\n "; + rs += " };"; + return rs; + + } + //delete + public string GetrTablefieldDeleteSQL(System.Windows.Forms.TreeView tvw_field_where) + { + string rs = "use " + Pidnode_dbname + " delete " + " [" + Pidnode_dbname + "].[dbo].[" + Pidnode_TBname + "] " + ""; + string strwhere = " where "; + foreach (OSMyNode node in tvw_field_where.Nodes) + { + Column item = (Column)node.Value; + if (node.Checked == true) + { + strwhere += "" + item.Name + "=@" + item.Name + ","; + } + } + if (strwhere.EndsWith(",")) + strwhere = strwhere.Remove(strwhere.Length - 1); + rs += strwhere; + return rs; + } + // update + public string GetrTablefieldUpdateSQL(System.Windows.Forms.TreeView tvw_field, System.Windows.Forms.TreeView tvw_field_where) + { + string rs = "use " + Pidnode_dbname + " update " + " [" + Pidnode_dbname + "].[dbo].[" + Pidnode_TBname + "] " + " set "; + string strwhere = " where "; + foreach (OSMyNode node in tvw_field.Nodes) + { + if (node.Checked == true) + { + Column item = (Column)node.Value; + rs += "" + item.Name + "=@n_" + item.Name + ","; + } + } + if (rs.EndsWith(",")) + rs = rs.Remove(rs.Length - 1); + foreach (OSMyNode node in tvw_field_where.Nodes) + { + Column item = (Column)node.Value; + if (node.Checked == true) + { + strwhere += "" + item.Name + "=@o_" + item.Name + ","; + } + } + if (strwhere.EndsWith(",")) + strwhere = strwhere.Remove(strwhere.Length - 1); + rs += strwhere; + return rs; + } + public string GetrTablefieldSqlParameterSQL_update(System.Windows.Forms.TreeView tvw_field,System.Windows.Forms.TreeView tvw_field_where) + { + string rs = "\r\n SqlParameter[] spms = {"; + foreach (OSMyNode node in tvw_field.Nodes) + { + Column item = (Column)node.Value; + if (node.Checked == true) + { + string Sqltype = Data.SqlDbTypeAndDbTypeConvert.SqlTypeString2SqlTypers(item.Type); + string Sqltypelength = GetrTablefieldSqlParameterSQLLength(item.Type); + rs += "\r\n new SqlParameter(\"@n_" + item.Name + "\", " + Sqltype + + " " + Sqltypelength.ToString() + ") { Value =n_" + item.Name + " },"; + } + } + if (!rs.EndsWith(",")) + //rs = rs.Remove(rs.Length - 1); + rs += ","; + rs += "\r\n "; + foreach (OSMyNode node in tvw_field_where.Nodes) + { + Column item = (Column)node.Value; + if (node.Checked == true) + { + string Sqltype = Data.SqlDbTypeAndDbTypeConvert.SqlTypeString2SqlTypers(item.Type); + string Sqltypelength = GetrTablefieldSqlParameterSQLLength(item.Type); + rs += "\r\n new SqlParameter(\"@o_" + item.Name + "\", " + Sqltype + + " " + Sqltypelength.ToString() + ") { Value =o_" + item.Name + " },"; + } + } + if (rs.EndsWith(",")) + rs = rs.Remove(rs.Length - 1); + rs += "\r\n "; + + rs += " };"; + return rs; + + } + public string GetMParameter_update(System.Windows.Forms.TreeView tvw_field,System.Windows.Forms.TreeView tvw_field_where) + { + string rs = ""; + Data.TableData tabdata = new Data.TableData(); + DataTable dt = Model.EModel.getDatable(Pidnode_dbname, Pidnode_TBname); + foreach (OSMyNode node in tvw_field.Nodes) + { + if (node.Checked == true) + { + Column item = (Column)node.Value; + foreach (DataColumn dcloumn in dt.Columns) + { + if (item.Name == dcloumn.ColumnName) + { + rs += dcloumn.DataType.ToString() + " n_" + item.Name + ","; + } + } + } + } + if (!rs.EndsWith(",")) + rs += ","; + foreach (OSMyNode node in tvw_field_where.Nodes) + { + if (node.Checked == true) + { + Column item = (Column)node.Value; + foreach (DataColumn dcloumn in dt.Columns) + { + if (item.Name == dcloumn.ColumnName) + { + rs += dcloumn.DataType.ToString() + " o_" + item.Name + ","; + } + } + } + } + if (rs.EndsWith(",")) + rs = rs.Remove(rs.Length - 1); + return rs; + } + //insert + public void setIsnull_insert(System.Windows.Forms.TreeView tvw_field) + { + + foreach (OSMyNode node in tvw_field.Nodes) + { + Column item = (Column)node.Value; + if (!item.Nullable) + { + node.Checked = true; + } + } + } + public string GetrTablefieldInsertSQL(System.Windows.Forms.TreeView tvw_field) + { + string rs = "use " + Pidnode_dbname + " insert into " + " [" + Pidnode_dbname + "].[dbo].[" + Pidnode_TBname + "] " + "("; + string strvalue = " values("; + foreach (OSMyNode node in tvw_field.Nodes) + { + if (node.Checked == true) + { + Column item = (Column)node.Value; + rs += item.Name + ","; + strvalue += "@" + item.Name + ","; + } + } + if (rs.EndsWith(",")) + rs = rs.Remove(rs.Length - 1); + if (strvalue.EndsWith(",")) + strvalue = strvalue.Remove(strvalue.Length - 1); + rs += ")"; + rs += strvalue + ")"; + return rs; + + } + public string GetrTablefieldSqlParameterSQL_Insert(System.Windows.Forms.TreeView tvw_field) + { + string rs = "\r\n SqlParameter[] spms = {"; + foreach (OSMyNode node in tvw_field.Nodes) + { + Column item = (Column)node.Value; + if (node.Checked == true) + { + string Sqltype = Data.SqlDbTypeAndDbTypeConvert.SqlTypeString2SqlTypers(item.Type); + string Sqltypelength = GetrTablefieldSqlParameterSQLLength(item.Type); + rs += "\r\n new SqlParameter(\"@" + item.Name + "\", " + Sqltype + + " " + Sqltypelength.ToString() + ") { Value =" + item.Name + " },"; + } + } + if (rs.EndsWith(",")) + rs = rs.Remove(rs.Length - 1); + rs += "\r\n "; + rs += " };"; + return rs; + + } + // + public string GetMParameter(System.Windows.Forms.TreeView tvw_field) + { + string rs = ""; + Data.TableData tabdata = new Data.TableData(); + DataTable dt = Model.EModel.getDatable(Pidnode_dbname, Pidnode_TBname); + foreach (OSMyNode node in tvw_field.Nodes) + { + if (node.Checked == true) + { + Column item = (Column)node.Value; + foreach (DataColumn dcloumn in dt.Columns) + { + if (item.Name == dcloumn.ColumnName) + { + rs += dcloumn.DataType.ToString() + " " + item.Name + ","; + } + } + } + } + if (rs.EndsWith(",")) + rs= rs.Remove(rs.Length - 1); + return rs; + } + + private void F_ADO_CodeGenerator_FormClosing(object sender, FormClosingEventArgs e) + { + if (txtEditControl != null) + { + txtEditControl.Dispose(); + } + //this.Close(); + } + + private void bun_back_Click(object sender, EventArgs e) + { + this.groupBox1.Show(); + this.groupBox2.Show(); + this.panel3.Controls.Remove(txtEditControl); + } + public bool GetMParameterIsCheck(System.Windows.Forms.TreeView tvw_field) + { + Data.TableData tabdata = new Data.TableData(); + DataTable dt = Model.EModel.getDatable(Pidnode_dbname, Pidnode_TBname); + bool rs = false; + foreach (OSMyNode node in tvw_field.Nodes) + { + if (node.Checked == true) + { + rs = true; + } + } + return rs; + } + } +} diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_ADO_CodeGenerator.resx b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_ADO_CodeGenerator.resx new file mode 100644 index 0000000..c2d815b --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_ADO_CodeGenerator.resx @@ -0,0 +1,193 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACq + DgAAAk1TRnQBSQFMAgEBCAEAAewBAAHsAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + AwABQAMAATADAAEBAQABCAYAAQwYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA + AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 + AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA + AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm + AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM + AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA + ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz + AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ + AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM + AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA + AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA + AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ + AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/ + AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA + AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm + ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ + Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz + AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA + AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM + AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM + ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM + Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA + AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM + AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ + AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz + AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm + AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw + AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD//8A/wD/AP8AJgAJZgHs + GAABGwGZARwBcwNLAXMBHAHxFAABZgf/AfABbRcAAZkBcwF0AXkBmQGaAXoBUgExAVEBSwGZAgAB7AHr + AW0B6gETARUBEQEPBw4CAAFmAf8BbAHxArwB8wFDAbwBZgH3Ae0BrgQAA60BiwWGAmYBhgQAAXMBWAF6 + AZoBoAGaAXoBWQEyAjEBSgIAAewBmgF6AVgFUgFRAUsBKgJLAQ8CAAFmAf8BkQHsAv8BDQH/AbsBbAH0 + ARkBkQQAAa0C9ALzARkB8QIZAd0BCQGGBAABcwFZAXoBmgGgAZoBegFZATICMQFKAgAB7AGgApoEegFZ + AVMCUgExAUsBEQIAAWYB/wHxAf8C8AH/AfMBBwFmAhkBkQQAAa0B/weLAgkBhgQAAXMBWQF6AZoBoAGa + AXoBWQEyAjEBSgIAAewBGgGgApoDegJZAVMCUgEqAUMCAAFmAf8BvAP/AfQB/wG8AWwB/wEZAZEEAAGt + Af8C9ALzARkB8wEZAd0BCQGGBAABcwFZAXoBmgGgAZoBegFZATICMQFLAgAB7QHDAqACmgN6AlkBUwFS + ATEBFAIAAWYB/wHxAf8B8QHdAf8B8wEHAWYB8wEZAZEEAAGtAf8CiwH0AosCGQLdAYYEAAFzAVkBegGa + AaABmgF6AVkBMgIxAUsCAAHtAcMCoAKaBHoCWQFSATEBEgIAAWYB/wGRAe0C/wENAf8BvAFsAf8B8wGR + BAABrQL/AvQC8wIZAd0BGQGGBAABcwFZAXoBmgGgAZoBegFZATICMQFLAgABHAPDAaACmgR6AVkBUgEx + AeoCAAFmAf8BbQH/AvEB/wENAfIBZgL0AZEEAAHUBP8B9ALzARkB8QEZAYYEAAFzAVkBegGaAaABmgF6 + AVkBMgIxAUsCAAEcA8MCoAKaBHoBWQFSAesCAAFmAf8B8AX/AfABbQH/ARkBkQQAAdUB/wKLAfQB/wH0 + ARkB8wIZAYsEAAF0AVkBegGaAaABmgF6AVkBMgIxAUsCAAEcBcMCoAKaBHoB6wIACWYB7AH/ARkBkQQA + AdUB9gX/AfQB8wIZAYsEAAF0AVkBegGaAaABmgF6AVkBMgIxAW4CAAocBO0B8gQAAfAJ/wGRBAABtALV + Ac8GrQGLAa0EAAEcAXoBoATDAaABmgF6AVgBbgIAARwBGgLDAaABmgEcAfELAAQJAtwB1gTVBAABtAMJ + AdwD1gPVAa0EAAF0CsMBbgIAAfQFHAH0DAABCQIZAt0FCQHVBAABtQHVA7QCzgWtBAABGgKZAhoCwwIa + AZkBHAGZFQAFCQLcAdYB3AHWAdUUAAH/ARsBGgGZARwBdAFzAhwBmQEbAf8yACf/AksO/wHrAW0t/wGZ + AVIBSw3/AQcB7AFtGf8B9wtmCP8BdAFZATEBSwz/Au0CbQj/AfcLZgT/AfcB/wLyAfEC3QQJAWYI/wF0 + AVkBSw3/Au0BbQHyCP8B7wH/AvIB8QHwAbwDCQG1AWYE/wH3A/8E7AH/ARkBCQFmCP8BdAFZATEBSwz/ + Au0B6gFtCP8B7wH/AbwBBwG7AfQBuwK1ARkBtQFmBP8B9wT/A/QB/wEZAQkBZgj/AXQBWQExAUsM/wGS + Ae0B6wFtCP8BuwT/AvQDGQG1AWYE/wH3A/8E7AL/Ad0BZgj/AXQBWQFKDf8BkgHtAeoJ/wG7Af8DvAH/ + A7sBGQG7AWYE/wG1CP8B9AHdAWYH/wGZAXQBWQFKARwK/wH0Ae8B7QGSAeoB9wH0B/8Buwb/AvQBGQEH + AWYE/wHvA/8E7AH/AfQB8QFmBv8BmQF0AXoBMgExAUoBcwj/AfQB7wHsAe8B6wFtAeoB7AHzBv8BuwH/ + A7wB/wG8AQcBuwH0AQcBZgT/AbUJ/wHyAWYF/wGZAXQBegEyAVkCMQFKAXQH/wEHAe0BBwLsAesBbQHq + AZIG/wG7B/8C9AEZAWYE/wG7A/8E7AL/AfIBZgX/AZkBwwRZAjEBbgf/Ae8B8QGSAewCkgHrAW0B6wb/ + A9YC1QK0Ba0E/wG7Cv8BZgX/ARwBwwF6AVIBHAFZAjEBbgf/Ae8B8gHvAewCkgHrAW0B6wb/AdYBCQTc + AdYE1QGtBP8D1gG1BLQBzwOtBf8BmQHDAXoBSwHzARwCMQFzB/8B7wHzAe8B6gHzAZIB7AFtAewG/wXW + AdUDtAOtBP8B1gIJAtwB1gXVAa0F/wGZAcMBmgFSAUsDUgF0B/8BBwHzAfAB7AHqA+wB9xb/A9YBtQS0 + Ac8DrQb/AZkCwwGaAVkBUgF0CP8B9AEHAvMB8AGSAewBkgHzKf8BGgGZARwBdAGZC/8BvAHvAfcB7QHv + AfQF/wFCAU0BPgcAAT4DAAEoAwABQAMAATADAAEBAQABAQUAAYABARYAA/+BAAT/AYABHwL/AeABBwL/ + AYABHwL/AcABAwEAAQEBgAEDAcABAwHAAQMBAAEBAYABAwHAAQMBwAEDAQABAQGAAQMBwAEDAcABAwEA + AQEBgAEDAcABAwHAAQMBAAEBAYABAwHAAQMBwAEDAQABAQGAAQMBwAEDAcABAwEAAQEBgAEDAcABAwHA + AQMBAAEBAYABAwHAAQMBwAEDAQABAQGAAQMBwAEDAcABAwEAAQEB4AEDAcABAwHAAQMBAAH/AeABAwHA + AQMBwAEDAQEB/wHgAQMBwAEDAcABAwL/AeABAwL/AcABAwb/gAAL + + + \ No newline at end of file diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_CodeGenerator.Designer.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_CodeGenerator.Designer.cs new file mode 100644 index 0000000..3c88eba --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_CodeGenerator.Designer.cs @@ -0,0 +1,301 @@ +namespace CsharpOSMeteorCodeGenerator +{ + partial class F_CodeGenerator + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(F_CodeGenerator)); + this.lstImage = new System.Windows.Forms.ImageList(this.components); + this.pBar = new System.Windows.Forms.ProgressBar(); + this.btn_browse = new System.Windows.Forms.Button(); + this.txt_foldPath = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.panel1 = new System.Windows.Forms.Panel(); + this.llab_checkAllorNot = new System.Windows.Forms.LinkLabel(); + this.txt_namespace = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.panel2 = new System.Windows.Forms.Panel(); + this.btn_CodeGenerator_DLL = new System.Windows.Forms.Button(); + this.btn_Close = new System.Windows.Forms.Button(); + this.lab_pBar = new System.Windows.Forms.Label(); + this.chk_Linq = new System.Windows.Forms.CheckBox(); + this.chk_ADO = new System.Windows.Forms.CheckBox(); + this.btn_CodeGenerator = new System.Windows.Forms.Button(); + this.chk_isEntity = new System.Windows.Forms.CheckBox(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.treeView1 = new System.Windows.Forms.TreeView(); + this.panel1.SuspendLayout(); + this.panel2.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.SuspendLayout(); + // + // lstImage + // + this.lstImage.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("lstImage.ImageStream"))); + this.lstImage.TransparentColor = System.Drawing.Color.Transparent; + this.lstImage.Images.SetKeyName(0, "table-icon.png"); + this.lstImage.Images.SetKeyName(1, "field-icon.png"); + this.lstImage.Images.SetKeyName(2, "primary_key-icon.png"); + this.lstImage.Images.SetKeyName(3, "foreign_key-icon.png"); + this.lstImage.Images.SetKeyName(4, "db.png"); + this.lstImage.Images.SetKeyName(5, "00060.png"); + this.lstImage.Images.SetKeyName(6, "views.png"); + this.lstImage.Images.SetKeyName(7, "proc.png"); + // + // pBar + // + this.pBar.Location = new System.Drawing.Point(3, 15); + this.pBar.Name = "pBar"; + this.pBar.Size = new System.Drawing.Size(474, 19); + this.pBar.TabIndex = 2; + // + // btn_browse + // + this.btn_browse.Location = new System.Drawing.Point(378, 12); + this.btn_browse.Name = "btn_browse"; + this.btn_browse.Size = new System.Drawing.Size(74, 23); + this.btn_browse.TabIndex = 3; + this.btn_browse.Text = "browse"; + this.btn_browse.UseVisualStyleBackColor = true; + this.btn_browse.Click += new System.EventHandler(this.btn_browse_Click); + // + // txt_foldPath + // + this.txt_foldPath.Location = new System.Drawing.Point(91, 12); + this.txt_foldPath.Name = "txt_foldPath"; + this.txt_foldPath.Size = new System.Drawing.Size(255, 21); + this.txt_foldPath.TabIndex = 4; + this.txt_foldPath.Text = "C:\\Users\\Administrator\\Desktop\\"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(11, 15); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(65, 12); + this.label1.TabIndex = 5; + this.label1.Text = "Save Path:"; + // + // panel1 + // + this.panel1.Controls.Add(this.llab_checkAllorNot); + this.panel1.Controls.Add(this.txt_namespace); + this.panel1.Controls.Add(this.label2); + this.panel1.Controls.Add(this.panel2); + this.panel1.Controls.Add(this.groupBox1); + this.panel1.Controls.Add(this.txt_foldPath); + this.panel1.Controls.Add(this.label1); + this.panel1.Controls.Add(this.btn_browse); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(480, 370); + this.panel1.TabIndex = 6; + // + // llab_checkAllorNot + // + this.llab_checkAllorNot.AutoSize = true; + this.llab_checkAllorNot.Location = new System.Drawing.Point(367, 51); + this.llab_checkAllorNot.Name = "llab_checkAllorNot"; + this.llab_checkAllorNot.Size = new System.Drawing.Size(101, 12); + this.llab_checkAllorNot.TabIndex = 10; + this.llab_checkAllorNot.TabStop = true; + this.llab_checkAllorNot.Text = "check all or not"; + this.llab_checkAllorNot.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.llab_checkAllorNot_LinkClicked); + this.llab_checkAllorNot.Click += new System.EventHandler(this.llab_checkAllorNot_LinkClicked); + // + // txt_namespace + // + this.txt_namespace.Location = new System.Drawing.Point(91, 41); + this.txt_namespace.Name = "txt_namespace"; + this.txt_namespace.Size = new System.Drawing.Size(255, 21); + this.txt_namespace.TabIndex = 9; + this.txt_namespace.Text = "MeteorCode"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(9, 41); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(59, 12); + this.label2.TabIndex = 8; + this.label2.Text = "NameSpace"; + // + // panel2 + // + this.panel2.Controls.Add(this.btn_CodeGenerator_DLL); + this.panel2.Controls.Add(this.btn_Close); + this.panel2.Controls.Add(this.lab_pBar); + this.panel2.Controls.Add(this.chk_Linq); + this.panel2.Controls.Add(this.chk_ADO); + this.panel2.Controls.Add(this.btn_CodeGenerator); + this.panel2.Controls.Add(this.chk_isEntity); + this.panel2.Controls.Add(this.pBar); + this.panel2.Location = new System.Drawing.Point(3, 298); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(477, 72); + this.panel2.TabIndex = 7; + // + // btn_CodeGenerator_DLL + // + this.btn_CodeGenerator_DLL.Location = new System.Drawing.Point(192, 40); + this.btn_CodeGenerator_DLL.Name = "btn_CodeGenerator_DLL"; + this.btn_CodeGenerator_DLL.Size = new System.Drawing.Size(116, 23); + this.btn_CodeGenerator_DLL.TabIndex = 8; + this.btn_CodeGenerator_DLL.Text = "CodeGeneratorDLL"; + this.btn_CodeGenerator_DLL.UseVisualStyleBackColor = true; + this.btn_CodeGenerator_DLL.Visible = false; + this.btn_CodeGenerator_DLL.Click += new System.EventHandler(this.btn_CodeGenerator_DLL_Click); + // + // btn_Close + // + this.btn_Close.Location = new System.Drawing.Point(406, 41); + this.btn_Close.Name = "btn_Close"; + this.btn_Close.Size = new System.Drawing.Size(59, 23); + this.btn_Close.TabIndex = 7; + this.btn_Close.Text = "Close"; + this.btn_Close.UseVisualStyleBackColor = true; + this.btn_Close.Click += new System.EventHandler(this.btn_Close_Click); + // + // lab_pBar + // + this.lab_pBar.AutoSize = true; + this.lab_pBar.ForeColor = System.Drawing.Color.Red; + this.lab_pBar.Location = new System.Drawing.Point(74, 0); + this.lab_pBar.Name = "lab_pBar"; + this.lab_pBar.Size = new System.Drawing.Size(29, 12); + this.lab_pBar.TabIndex = 6; + this.lab_pBar.Text = "pBar"; + // + // chk_Linq + // + this.chk_Linq.AutoSize = true; + this.chk_Linq.Location = new System.Drawing.Point(124, 45); + this.chk_Linq.Name = "chk_Linq"; + this.chk_Linq.Size = new System.Drawing.Size(48, 16); + this.chk_Linq.TabIndex = 5; + this.chk_Linq.Text = "Linq"; + this.chk_Linq.UseVisualStyleBackColor = true; + // + // chk_ADO + // + this.chk_ADO.AutoSize = true; + this.chk_ADO.Location = new System.Drawing.Point(76, 45); + this.chk_ADO.Name = "chk_ADO"; + this.chk_ADO.Size = new System.Drawing.Size(42, 16); + this.chk_ADO.TabIndex = 5; + this.chk_ADO.Text = "ADO"; + this.chk_ADO.UseVisualStyleBackColor = true; + // + // btn_CodeGenerator + // + this.btn_CodeGenerator.Location = new System.Drawing.Point(314, 41); + this.btn_CodeGenerator.Name = "btn_CodeGenerator"; + this.btn_CodeGenerator.Size = new System.Drawing.Size(86, 23); + this.btn_CodeGenerator.TabIndex = 4; + this.btn_CodeGenerator.Text = "Generator"; + this.btn_CodeGenerator.UseVisualStyleBackColor = true; + this.btn_CodeGenerator.Click += new System.EventHandler(this.btn_CodeGenerator_Click); + // + // chk_isEntity + // + this.chk_isEntity.AutoSize = true; + this.chk_isEntity.Location = new System.Drawing.Point(10, 44); + this.chk_isEntity.Name = "chk_isEntity"; + this.chk_isEntity.Size = new System.Drawing.Size(60, 16); + this.chk_isEntity.TabIndex = 3; + this.chk_isEntity.Text = "Entity"; + this.chk_isEntity.UseVisualStyleBackColor = true; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.treeView1); + this.groupBox1.Location = new System.Drawing.Point(0, 62); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(480, 233); + this.groupBox1.TabIndex = 6; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "TableAndView"; + // + // treeView1 + // + this.treeView1.CheckBoxes = true; + this.treeView1.Dock = System.Windows.Forms.DockStyle.Fill; + this.treeView1.ImageIndex = 0; + this.treeView1.ImageList = this.lstImage; + this.treeView1.Location = new System.Drawing.Point(3, 17); + this.treeView1.Name = "treeView1"; + this.treeView1.SelectedImageIndex = 0; + this.treeView1.Size = new System.Drawing.Size(474, 213); + this.treeView1.TabIndex = 0; + // + // F_CodeGenerator + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(480, 370); + this.Controls.Add(this.panel1); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "F_CodeGenerator"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "F_CodeGenerator"; + this.Load += new System.EventHandler(this.F_CodeGenerator_Load); + this.Shown += new System.EventHandler(this.F_CodeGenerator_Shown); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + this.panel2.ResumeLayout(false); + this.panel2.PerformLayout(); + this.groupBox1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.ImageList lstImage; + private System.Windows.Forms.ProgressBar pBar; + private System.Windows.Forms.Button btn_browse; + private System.Windows.Forms.TextBox txt_foldPath; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.Button btn_CodeGenerator; + private System.Windows.Forms.CheckBox chk_isEntity; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.TreeView treeView1; + private System.Windows.Forms.CheckBox chk_Linq; + private System.Windows.Forms.CheckBox chk_ADO; + private System.Windows.Forms.Label lab_pBar; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox txt_namespace; + private System.Windows.Forms.LinkLabel llab_checkAllorNot; + private System.Windows.Forms.Button btn_Close; + private System.Windows.Forms.Button btn_CodeGenerator_DLL; + } +} \ No newline at end of file diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_CodeGenerator.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_CodeGenerator.cs new file mode 100644 index 0000000..93dc052 --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_CodeGenerator.cs @@ -0,0 +1,882 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using CsharpOSMeteorCodeGenerator.Model; +using System.IO; +using System.Threading; +using Microsoft.CSharp; +using System.CodeDom.Compiler; +using System.CodeDom; + +namespace CsharpOSMeteorCodeGenerator +{ + public partial class F_CodeGenerator : Form + { + public F_CodeGenerator() + { + InitializeComponent(); + } + //创建一个委托,是为访问TextBox控件服务的。 + public delegate void UpdateTxt(); + //定义一个委托变量 + public UpdateTxt updateTxt; + public object selectnode { get; set; } + string Pidnode_dbname = ""; + List
list_tab; + List
list_tab2; + + public void BFrom_load() { + Thread.Sleep(50); + this.BeginInvoke(updateTxt); + } + + public void f_code_load() { + this.btn_browse.Enabled=false; + this.llab_checkAllorNot.Enabled = false; + this.btn_CodeGenerator.Enabled = false; + this.btn_Close.Enabled = false; + OSMyNode node = (OSMyNode)this.selectnode; + if (node != null) + if (node.Parent == null) + { + Pidnode_dbname = node.Text; + this.pBar.Value = 1; + Data.GetListTables glt = new Data.GetListTables(); + list_tab = glt.ListTables(Model.EModel.connBuilder, node.Text); + list_tab2 = glt.ListViews(Model.EModel.connBuilder, node.Text); + int list_count=list_tab.Count + list_tab2.Count; + this.pBar.Maximum = list_count+1; + + if (list_count <= 0) { + MessageBox.Show("this db is null"); + this.Close(); + } + this.lab_pBar.Text = "this table and views load start"; + foreach (Table table in list_tab) + { + node = new OSMyNode(); + node.Text = table.Name; + node.ToolTipText = table.Name; + node.Value = table; + node.ImageIndex = 5; + node.SelectedImageIndex = 5; + node.Checked = true; + treeView1.Nodes.Add(node); + this.pBar.Value++; + } + foreach (Table table in list_tab2) + { + node = new OSMyNode(); + node.Text = table.Name; + node.Value = table; + node.ToolTipText = table.Name; + node.ImageIndex = 6; + node.SelectedImageIndex = 6; + node.Checked = true; + treeView1.Nodes.Add(node); + this.pBar.Value++; + } + this.lab_pBar.Text = "this table and views load end"; + //checkedListBox_CheckListBoxALl(this.checkedListBox1,true); + this.btn_browse.Enabled = true; + this.llab_checkAllorNot.Enabled = true; + this.btn_CodeGenerator.Enabled = true; + this.btn_Close.Enabled = true; + } + } + public void checkedListBox_CheckListBoxALl(System.Windows.Forms.CheckedListBox checkedListBox,Boolean boo ) + { + for (int i = 0; i < checkedListBox.Items.Count; i++) + { + checkedListBox.SetItemChecked(i, boo);//true就是全选 + } + } + private void F_CodeGenerator_Shown(object sender, EventArgs e) + { + updateTxt = new UpdateTxt(f_code_load); + Thread objThread = new Thread(new ThreadStart(delegate + { + //ThreadMethodTxt(); + BFrom_load(); + })); + objThread.Start(); + } + private void F_CodeGenerator_Load(object sender, EventArgs e) + { + this.chk_isEntity.Checked = true; + this.chk_ADO.Checked = true; + this.chk_Linq.Checked = true; + + + } + private void btn_browse_Click(object sender, EventArgs e) + { + string foldPath = ""; + FolderBrowserDialog dialog = new FolderBrowserDialog(); + dialog.Description = "请选择文件路径"; + this.pBar.Value = 0; + if (dialog.ShowDialog() == DialogResult.OK) + { + + foldPath = dialog.SelectedPath + @"\"; + this.txt_foldPath.Text = foldPath; + if (!String.IsNullOrEmpty(this.txt_foldPath.Text.Trim())) + { + this.chk_isEntity.Checked = true; + this.chk_ADO.Checked = true; + this.chk_Linq.Checked = true; + } + //if (foldPath.Substring(0, 1).ToUpper() == "C") + //{ + // //MessageBox.Show("备份文件不能放在系统盘!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + //} + //else + //{ + // if (foldPath != "") + // { + // //SetTime(0, 50); + // //Boolean rs = DBHelper.BackUpDB(@foldPath); + + // //if (rs) + // //{ + // // this.pBar.Value = this.pBar.Maximum; + // // Core.User.Insert(Core.User.LoginedUserCode, string.Format(Entity.Const.dbBack, Core.User.LoginedUserCode, "成功")); + // // MessageBox.Show("备份成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + // //} + // //else + // //{ + // // Core.User.Insert(Core.User.LoginedUserCode, string.Format(Entity.Const.dbBack, Core.User.LoginedUserCode, "失败")); + // // MessageBox.Show("备份失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + // //} + // } + //} + } + } + + private void btn_CodeGenerator_Click(object sender, EventArgs e) + { + string foldPath= this.txt_foldPath.Text.Trim(); + if (String.IsNullOrEmpty(foldPath)) { + this.lab_pBar.Text=" this SavePath is null"; + return; + } + string iswindowsPath = "^[a-zA-Z]{1}:(\\.+)*"; + System.Text.RegularExpressions.Regex regex=new System.Text.RegularExpressions.Regex(iswindowsPath); + if (!regex.Match(foldPath).Success) + { + this.lab_pBar.Text=" this SavePath is illegal"; + return; + } + if (String.IsNullOrEmpty(this.txt_namespace.Text.Trim())) + { + this.lab_pBar.Text = " this Namespace is null"; + return; + } + foldPath += "MeteorCode\\"; + if (!Directory.Exists(foldPath)) + { + Directory.CreateDirectory(foldPath); + + } + //else { + // Directory.Delete(foldPath,true); + // Directory.CreateDirectory(foldPath); + // System.Threading.Thread.Sleep(100); + //} + if ((this.chk_isEntity.Checked == false && this.chk_ADO.Checked == false && this.chk_Linq.Checked == false)) + { + this.lab_pBar.Text = " Please select a type"; + } + else + { + + GeneratorCode(foldPath); + if (!String.IsNullOrEmpty(StrEntity)) + { + String str= StrEntity.Replace("MeteorCode", "MeteorEntityCode"); + + Codebianyi(str); + } + } + } + string StrEntity = String.Empty; + string StrADO= String.Empty; + string StrLinq = String.Empty; + public void GeneratorCode(string filePath) + { + string Namespace_str = this.txt_namespace.Text.Trim(); + string Filepath_entity = filePath+"MeteorEntity.cs"; + //string Filepath_sql = @"..\..\config\tempsql.cs"; + string Filepath_adoDAL = filePath + "MeteorADODAL.cs"; + string Filepath_adoBll = filePath + "MeteorADOBLL.cs"; + string Filepath_linq = filePath+"MeteorLinq.cs"; + int countli = 0; + if (this.chk_isEntity.Checked) + countli = countli + 1; + if (this.chk_ADO.Checked) + countli = countli + 2; + if (this.chk_Linq.Checked) + countli = countli + 1; + this.pBar.Maximum = treeView1.Nodes.Count * countli; + this.pBar.Value = 0; + #region 生成实体类 + if (this.chk_isEntity.Checked) + { + using (StreamWriter sw = File.CreateText(Filepath_entity)) + { + string Type = "Entity"; + string Str_stat = String.Format(Model.BaseClass.str_stat, Namespace_str, Type); + string Str_end = Model.BaseClass.str_end; + sw.WriteLine(Str_stat); + StrEntity += Str_stat; + foreach (OSMyNode node in treeView1.Nodes) + { + if (node.Checked == true) + { + sw.WriteLine(" #region " + node.Text); + //StrEntity += " #region " + node.Text; + string tablename = node.Text; + DataTable dt = Model.EModel.getDatable(Pidnode_dbname, tablename); + string Str_entity = GetrTableAttribute(dt); + string WStr_ent = String.Format(Model.BaseClass.strtable_eneity, tablename, Str_entity); + sw.WriteLine(WStr_ent); + StrEntity += WStr_ent; + sw.WriteLine(" #endregion "); + //StrEntity += " #endregion "; + } + this.pBar.Value++; + } + //foreach (OSMyNode node in treeView1.Nodes) + //{ + // if (node.Checked == true) + // { + // //MessageBox.Show(node.Text); + // //} + // //foreach (Table table in list_tab) + // //{ + // string tablename = node.Text; + // DataTable dt = Model.EModel.getDatable(Pidnode_dbname, tablename); + // sw.WriteLine(" public class " + tablename); + // sw.WriteLine(" {"); + // foreach (DataColumn cloumn in dt.Columns) + // { + // string rs = ""; + // rs += " public " + cloumn.DataType.ToString() + " " + cloumn.ColumnName + "{set;get;}\n"; + // sw.WriteLine(rs); + // } + // sw.WriteLine(" }"); + // } + //} + + sw.WriteLine(Str_end); + StrEntity += Str_end; + sw.Close(); + } + } + #endregion + #region ADO + if (this.chk_ADO.Checked) + { + #region 生成SQLHerper + Model.BaseClass.CreateSqlHelper(filePath, Namespace_str); + StrADO += Model.BaseClass.GetStrSQLHelper(Namespace_str); + #endregion + #region ADODAL + using (StreamWriter sw = File.CreateText(Filepath_adoDAL)) + { + string Type = "ADODAL"; + string Str_stat = String.Format(Model.BaseClass.str_stat, Namespace_str, Type); + string Str_end = Model.BaseClass.str_end; + sw.WriteLine(Str_stat); + foreach (OSMyNode node in treeView1.Nodes) + { + if (node.Checked == true) + { + string StrTableName = node.Text; + sw.WriteLine(" #region " + StrTableName); + string StrTablefieldInsertsql = GetrTablefieldInsertSQL(node); + string StrTablefieldSelectSQL = GetrTablefieldSelectSQL(node); + string StrTablefieldUpdateSQL = GetrTablefieldUpdateSQL(node); + string StrTablefieldDeleteSQL = GetrTablefieldDeleteSQL(node); + string StrTablefieldSqlParameterSQL = GetrTablefieldSqlParameterSQL(node); + string StrTableInsert = String.Format(Model.BaseClass.BaseTableADODALClass.strtableADOInsert, StrTableName, StrTablefieldInsertsql, StrTablefieldSqlParameterSQL); + string StrTableDelete = String.Format(Model.BaseClass.BaseTableADODALClass.strtableADODelete, StrTableName, StrTablefieldDeleteSQL, StrTablefieldSqlParameterSQL); + string StrTableSelect = String.Format(Model.BaseClass.BaseTableADODALClass.strtableADOSelect, StrTableName, StrTablefieldSelectSQL); + string StrTableUpdate = String.Format(Model.BaseClass.BaseTableADODALClass.strtableADOUpdate, StrTableName, StrTablefieldUpdateSQL, StrTablefieldSqlParameterSQL); + sw.WriteLine(StrTableInsert); + Data.TableData tabdata = new Data.TableData(); + DataTable dt = Model.EModel.getDatable(Pidnode_dbname, StrTableName); + Table tab = (Table)node.Value; + foreach (Column item in tab.Columns) + { + if (item.PrimaryKey) + { + foreach (DataColumn dcloumn in dt.Columns) + { + if (item.Name == dcloumn.ColumnName) + { + string StrTablefieldSqlParameterSQLL_PrimaryKey = GetrTablefieldSqlParameterSQL_PrimaryKey(node); + string StrTableDeleteFromPrimary = String.Format(Model.BaseClass.BaseTableADODALClass.strtableADODeleteFromPrimaryKey, StrTableName, dcloumn.DataType.ToString(), dcloumn.ColumnName, StrTablefieldDeleteSQL, StrTablefieldSqlParameterSQLL_PrimaryKey); + sw.WriteLine(StrTableDeleteFromPrimary); + string StrTableSelectFromPrimary = String.Format(Model.BaseClass.BaseTableADODALClass.strtableADOSelectFromPrimaryKey, StrTableName, dcloumn.DataType.ToString(), dcloumn.ColumnName, StrTablefieldSelectSQL, StrTablefieldSqlParameterSQLL_PrimaryKey); + string StrTableSelectFromPrimary_bool = String.Format(Model.BaseClass.BaseTableADODALClass.strtableADOSelectFromPrimaryKey_bool, StrTableName, dcloumn.DataType.ToString(), dcloumn.ColumnName, StrTablefieldSelectSQL, StrTablefieldSqlParameterSQLL_PrimaryKey); + sw.WriteLine(StrTableSelectFromPrimary); + sw.WriteLine(StrTableSelectFromPrimary_bool); + string StrTablefieldUpdateSQL_PrimaryKey = GetrTablefieldUpdateSQL_PrimaryKey(node); + string StrTablefieldSqlParameterSQL_PrimaryKeyUpdate = GetrTablefieldSqlParameterSQL_PrimaryKeyUpdate(node); + string StrTableUpdateFromPrimary = String.Format(Model.BaseClass.BaseTableADODALClass.strtableADOUpdateFromPrimaryKey, StrTableName, dcloumn.DataType.ToString(), dcloumn.ColumnName, StrTablefieldUpdateSQL_PrimaryKey, StrTablefieldSqlParameterSQL_PrimaryKeyUpdate); + sw.WriteLine(StrTableUpdateFromPrimary); + } + } + } + } + sw.WriteLine(StrTableDelete); + sw.WriteLine(StrTableSelect); + sw.WriteLine(StrTableUpdate); + sw.WriteLine(" #endregion"); + } + this.pBar.Value++; + } + sw.WriteLine(Str_end); + sw.Close(); + } +#endregion + #region ADO_BLL + using (StreamWriter sw = File.CreateText(Filepath_adoBll)) + { + string Type = "ADOBLL"; + string Str_stat = String.Format(Model.BaseClass.str_stat, Namespace_str, Type); + string Str_end = Model.BaseClass.str_end; + sw.WriteLine(Str_stat); + foreach (OSMyNode node in treeView1.Nodes) + { + if (node.Checked == true) + { + string StrTableName = node.Text; + sw.WriteLine(" #region " + StrTableName); + string StrTableInsert = String.Format(Model.BaseClass.BaseTableADOBLLClass.strtableADOInsert, StrTableName); + string StrTableDelete = String.Format(Model.BaseClass.BaseTableADOBLLClass.strtableADODelete, StrTableName); + string StrTableSelect = String.Format(Model.BaseClass.BaseTableADOBLLClass.strtableADOSelect, StrTableName); + string StrTableSelectALL = String.Format(Model.BaseClass.BaseTableADOBLLClass.strtableADOSelectALL, StrTableName); + string StrTableUpdate = String.Format(Model.BaseClass.BaseTableADOBLLClass.strtableADOUpdate, StrTableName); + sw.WriteLine(StrTableInsert); + Data.TableData tabdata = new Data.TableData(); + DataTable dt = Model.EModel.getDatable(Pidnode_dbname, StrTableName); + Table tab = (Table)node.Value; + foreach (Column item in tab.Columns) + { + if (item.PrimaryKey) + { + foreach (DataColumn dcloumn in dt.Columns) + { + if (item.Name == dcloumn.ColumnName) + { + string strtableADOInsertFromPrimaryKey = String.Format(Model.BaseClass.BaseTableADOBLLClass.strtableADOInsertFromPrimaryKey, StrTableName, dcloumn.DataType.ToString(), dcloumn.ColumnName); + sw.WriteLine(strtableADOInsertFromPrimaryKey); + string StrTablefieldSqlParameterSQLL_PrimaryKey = GetrTablefieldSqlParameterSQL_PrimaryKey(node); + string StrTableDeleteFromPrimary = String.Format(Model.BaseClass.BaseTableADOBLLClass.strtableADODeleteFromPrimaryKey, StrTableName, dcloumn.DataType.ToString(), dcloumn.ColumnName); + sw.WriteLine(StrTableDeleteFromPrimary); + string StrTableSelectFromPrimary = String.Format(Model.BaseClass.BaseTableADOBLLClass.strtableADOSelectFromPrimaryKey, StrTableName, dcloumn.DataType.ToString(), dcloumn.ColumnName); + string StrTableSelectFromPrimary_bool = String.Format(Model.BaseClass.BaseTableADOBLLClass.strtableADOSelectFromPrimaryKey_bool, StrTableName, dcloumn.DataType.ToString(), dcloumn.ColumnName); + sw.WriteLine(StrTableSelectFromPrimary); + sw.WriteLine(StrTableSelectFromPrimary_bool); + string StrTableUpdateFromPrimary = String.Format(Model.BaseClass.BaseTableADOBLLClass.strtableADOUpdateFromPrimaryKey, StrTableName, dcloumn.DataType.ToString(), dcloumn.ColumnName); + sw.WriteLine(StrTableUpdateFromPrimary); + } + } + } + } + sw.WriteLine(StrTableDelete); + sw.WriteLine(StrTableSelectALL); + sw.WriteLine(StrTableSelect); + sw.WriteLine(StrTableUpdate); + sw.WriteLine(" #endregion"); + } + this.pBar.Value++; + } + sw.WriteLine(Str_end); + sw.Close(); + } + #endregion + } + #endregion + + #region linq + if (this.chk_Linq.Checked) + { + using (StreamWriter sw = File.CreateText(Filepath_linq)) + { + string Type = "Linq"; + string Str_stat = String.Format(Model.BaseClass.str_stat, Namespace_str, Type); + string Str_end = Model.BaseClass.str_end; + sw.WriteLine(Str_stat); + foreach (OSMyNode node in treeView1.Nodes) + { + if (node.Checked == true) + { + string StrTableName = node.Text; + sw.WriteLine(" #region " + StrTableName); + string linqadd_entity = GetrTableAttribute_linqadd_entity(node); + string linqadd = String.Format(Model.BaseClass.BaseTableLinqClass.strtablelinqadd, StrTableName, StrTableName, StrTableName, linqadd_entity, StrTableName); + string strtablelinqdelete = String.Format(Model.BaseClass.BaseTableLinqClass.strtablelinqdelete, StrTableName, StrTableName, StrTableName, StrTableName); + string linqupdate_entity = GetrTableAttribute_linqupdate_entity(node); + string strtablelinqupdate = String.Format(Model.BaseClass.BaseTableLinqClass.strtablelinqupdate, StrTableName, StrTableName, StrTableName, StrTableName, linqupdate_entity); + string strtablelinqselect = String.Format(Model.BaseClass.BaseTableLinqClass.strtablelinqselect, StrTableName, StrTableName, StrTableName, StrTableName, StrTableName, StrTableName, linqupdate_entity); + string strtablelinqselectToIEnumerable = String.Format(Model.BaseClass.BaseTableLinqClass.strtablelinqselectToIEnumerable, StrTableName, StrTableName, StrTableName, StrTableName, StrTableName, StrTableName, StrTableName, StrTableName); + sw.WriteLine(strtablelinqselect); + sw.WriteLine(strtablelinqselectToIEnumerable); + sw.WriteLine(linqadd); + sw.WriteLine(strtablelinqdelete); + sw.WriteLine(strtablelinqupdate); + sw.WriteLine(" #endregion "); + } + this.pBar.Value++; + } + sw.WriteLine(Str_end); + sw.Close(); + } + } + #endregion + this.lab_pBar.Text = " Code Generator successful !!!"; + } + #region 生成属性 + public string GetrTableAttribute(DataTable dt) + { + string rs = "\r\n"; + foreach (DataColumn cloumn in dt.Columns) + { + rs += " public " + cloumn.DataType.ToString() + " " + cloumn.ColumnName + "{set;get;}\r\n"; + } + return rs; + } + public string GetrTableAttribute(Table tab) + { + string rs = "\n"; + foreach (Column item in tab.Columns) + { + rs += " public " + GetdbType(item.Type) + " " + item.Name + " { get; set ; }\n"; + } + return rs; + } + public string GetdbType(string type) + { + string rs = ""; + switch (type) + { + case "int": rs = "int"; break; + case "tinyint": rs = "int"; break; + case "smallint": rs = "int"; break; + case "bigint": rs = "int"; break; + case "datetime": rs = "DateTime"; break; + case "smalldatetime": rs = "DateTime"; break; + case "date": rs = "DateTime"; break; + case "float": rs = "int"; break; + case "decimal": rs = "decimal"; break; + case "numeric": rs = "decimal"; break; + case "money": rs = "decimal"; break; + case "real": rs = "decimal"; break; + case "smallmoney": rs = "decimal"; break; + case "bit": rs = "bool"; break; + default: + rs = "string"; + break; + } + return rs; + } + public string GetrTableAttribute_linqadd_entity(OSMyNode node) + { + string rs = "\r\n"; + rs += " " + node.Text + " newojb = new " + node.Text + "()\r\n"; + rs += " {\r\n"; + Table tab = (Table)node.Value; + int num = 1; + foreach (Column item in tab.Columns) + { + //string convetType = Data.SqlDbTypeAndDbTypeConvert.SqlTypeString2CsharpTypeString(item.Type).ToString(); + if (tab.Columns.Count == num) + { + rs += " " + item.Name + "=" + "obj." + item.Name + "\r\n"; + } + else + { + rs += " " + item.Name + "=" + "obj." + item.Name + ",\r\n"; + } + num++; + } + rs += " };"; + + return rs; + } + public string GetrTableAttribute_linqupdate_entity(OSMyNode node) + { + string rs = "\r\n"; + Table tab = (Table)node.Value; + foreach (Column item in tab.Columns) + { + //string convetType = Data.SqlDbTypeAndDbTypeConvert.SqlTypeString2CsharpTypeString(item.Type).ToString(); + rs += " query." + item.Name + "=" + "obj." + item.Name + ";\r\n"; + } + return rs; + } + public string GetrTablefieldSelectSQL(OSMyNode node) + { + string rs = "use " + Pidnode_dbname + " select "; + Table tab = (Table)node.Value; + int num = 1; + foreach (Column item in tab.Columns) + { + if (tab.Columns.Count == num) + { + rs += item.Name; + } + else + { + rs += item.Name + ","; + } + num++; + + } + //rs += " from " + node.Text + " where 1=1"; + rs += " from " + " [" + Pidnode_dbname + "].[dbo].["+node.Text+"] " + ""; + return rs; + + } + public string GetrTablefieldInsertSQL(OSMyNode node) + { + string rs = "use "+Pidnode_dbname+" insert into " + " [" + Pidnode_dbname + "].[dbo].[" + node.Text + "] " + "("; + //Insert INTO table(field1,field2,...) values(value1,value2,...) + Table tab = (Table)node.Value; + string strvalue = " values("; + int num = 1; + foreach (Column item in tab.Columns) + { + if (tab.Columns.Count == num) + { + rs += item.Name; + strvalue += "@" + item.Name ; + } + else + { + rs += item.Name + ","; + strvalue += "@" + item.Name + ","; + } + num++; + + } + rs += ")"; + rs += strvalue + ")"; + return rs; + + } + public string GetrTablefieldUpdateSQL(OSMyNode node) + { + string rs = "use " + Pidnode_dbname + " update " + " [" + Pidnode_dbname + "].[dbo].[" + node.Text + "] " + " set "; + //string rs = "update " + node.Text + " set "; + Table tab = (Table)node.Value; + int num = 1; + foreach (Column item in tab.Columns) + { + if (tab.Columns.Count == num) + { + rs += item.Name + "=" + "@"+item.Name; + } + else + { + rs += item.Name + "=" + "@"+item.Name + ","; + } + num++; + + } + rs += ""; + return rs; + + } + public string GetrTablefieldUpdateSQL_PrimaryKey(OSMyNode node) + { + string rs = "use " + Pidnode_dbname + " update " + " [" + Pidnode_dbname + "].[dbo].[" + node.Text + "] " + " set "; + //string rs = "update " + node.Text + " set "; + Table tab = (Table)node.Value; + int num = 1; + foreach (Column item in tab.Columns) + { + if (item.PrimaryKey) + { + + }else{ + if (tab.Columns.Count == num) + { + rs += item.Name + "=" + "@" + item.Name; + } + else + { + rs += item.Name + "=" + "@" + item.Name + ","; + } + } + num++; + + } + rs += ""; + if (rs.EndsWith(",")) + rs = rs.Remove(rs.Length - 1); + return rs; + + } + + public string GetrTablefieldDeleteSQL(OSMyNode node) + { + string rs = "use " + Pidnode_dbname + " delete " + " [" + Pidnode_dbname + "].[dbo].[" + node.Text + "] " + ""; + return rs; + + } + public string GetrTablefieldSqlParameterSQL(OSMyNode node) + { + string rs = "\r\n SqlParameter[] spms = {"; + Table tab = (Table)node.Value; + int num = 1; + foreach (Column item in tab.Columns) + { + if (tab.Columns.Count == num) + { + string Sqltype = Data.SqlDbTypeAndDbTypeConvert.SqlTypeString2SqlTypers(item.Type); + string Sqltypelength = GetrTablefieldSqlParameterSQLLength(item.Type); + rs += "\r\n new SqlParameter(\"@" + item.Name + "\", " + Sqltype + + " " + Sqltypelength.ToString() + ") { Value = obj." + item.Name + " }"; + } + else + { + string Sqltype = Data.SqlDbTypeAndDbTypeConvert.SqlTypeString2SqlTypers(item.Type); + string Sqltypelength = GetrTablefieldSqlParameterSQLLength(item.Type); + rs += "\r\n new SqlParameter(\"@" + item.Name + "\", " + Sqltype + + " " + Sqltypelength.ToString() + ") { Value = obj." + item.Name + " },"; + } + num++; + + } + rs += "\r\n "; + rs += " };"; + return rs; + + } + public string GetrTablefieldSqlParameterSQL_PrimaryKey(OSMyNode node) + { + string rs = "\r\n SqlParameter[] spms = {"; + Table tab = (Table)node.Value; + int num = 1; + foreach (Column item in tab.Columns) + { + if (item.PrimaryKey) + { + if (tab.Columns.Count == num) + { + string Sqltype = Data.SqlDbTypeAndDbTypeConvert.SqlTypeString2SqlTypers(item.Type); + string Sqltypelength = GetrTablefieldSqlParameterSQLLength(item.Type); + rs += "\r\n new SqlParameter(\"@" + item.Name + "\", " + Sqltype + + " " + Sqltypelength.ToString() + ") { Value =" + item.Name + " }"; + } + else + { + string Sqltype = Data.SqlDbTypeAndDbTypeConvert.SqlTypeString2SqlTypers(item.Type); + string Sqltypelength = GetrTablefieldSqlParameterSQLLength(item.Type); + rs += "\r\n new SqlParameter(\"@" + item.Name + "\", " + Sqltype + + " " + Sqltypelength.ToString() + ") { Value =" + item.Name + " },"; + } + } + num++; + + } + rs += "\r\n "; + rs += " };"; + return rs; + + } + public string GetrTablefieldSqlParameterSQL_PrimaryKeyUpdate(OSMyNode node) + { + string rs = "\r\n SqlParameter[] spms = {"; + Table tab = (Table)node.Value; + int num = 1; + foreach (Column item in tab.Columns) + { + if (tab.Columns.Count == num) + { + string value = "obj." + item.Name; + if (item.PrimaryKey) + value = item.Name; + string Sqltype = Data.SqlDbTypeAndDbTypeConvert.SqlTypeString2SqlTypers(item.Type); + string Sqltypelength = GetrTablefieldSqlParameterSQLLength(item.Type); + rs += "\r\n new SqlParameter(\"@" + item.Name + "\", " + Sqltype + + " " + Sqltypelength.ToString() + ") { Value = " + value + " }"; + } + else + { + string value = "obj." + item.Name; + if (item.PrimaryKey) + value = item.Name; + string Sqltype = Data.SqlDbTypeAndDbTypeConvert.SqlTypeString2SqlTypers(item.Type); + string Sqltypelength = GetrTablefieldSqlParameterSQLLength(item.Type); + rs += "\r\n new SqlParameter(\"@" + item.Name + "\", " + Sqltype + + " " + Sqltypelength.ToString() + ") { Value =" + value + " },"; + } + num++; + + } + rs += "\r\n "; + rs += " };"; + return rs; + + } + public string GetrTablefieldSqlParameterSQLLength(string dbsql) + { + + string rs = ""; + if (dbsql == "varchar" || dbsql == "nvarchar" || dbsql == "char") + { + rs = ", -1 "; + } + return rs; + } + #endregion + public void NodecheckAllorNot(Boolean checkstate) + { + + foreach (OSMyNode node in treeView1.Nodes) + { + node.Checked = checkstate; + } + + } + + private void btn_Close_Click(object sender, EventArgs e) + { + this.Close(); + } + int checkT = 1; + private void llab_checkAllorNot_LinkClicked(object sender, EventArgs e) + { + if (checkT == 1) + { + + NodecheckAllorNot(false); + checkT = 0; + } + else + { + NodecheckAllorNot(true); + checkT = 1; + } + } + + private void llab_checkAllorNot_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + + } + + private void btn_CodeGenerator_DLL_Click(object sender, EventArgs e) + { + + //if (!String.IsNullOrEmpty(StrEntity)) + //{ + + //Codebianyi(StrEntity); + //} + } + public void Codebianyi(string StrEntity) + { + string CodeStr = StrEntity; + // 创建编译器对象 + CSharpCodeProvider p = new CSharpCodeProvider(); + ICodeCompiler cc = p.CreateCompiler(); + + // 设置编译参数 + CompilerParameters options = new CompilerParameters(); + options.ReferencedAssemblies.Add("System.dll"); + options.ReferencedAssemblies.Add("System.Xml.dll"); + options.ReferencedAssemblies.Add("System.Xml.Linq.dll"); + options.ReferencedAssemblies.Add("System.Data.dll"); + options.ReferencedAssemblies.Add("System.Core.dll"); + options.OutputAssembly = @"C:\Users\Administrator\Desktop\MeteorCode\" + "MeteorEntityCode.dll"; + // 2. 直接指定源码字符串 + string code = CodeStr; +// string code = @" +// using System; +// namespace Samples +// { +// public class Class1 +// { +// static void Main(string[] args) +// { +// Console.WriteLine(""Hello, World!""); +// Console.WriteLine(DateTime.Now.ToString()); +// } +// } +// } +// "; +// string code2 = @" +// using System; +// namespace Samples32 +// { +// public class Class1 +// { +// static void Main(string[] args) +// { +// Console.WriteLine(""Hello, World!""); +// Console.WriteLine(DateTime.Now.ToString()); +// } +// } +// } +// "; +// string code = @" +// using System; +// namespace Samples +// { +// +// public class sysdiagrams +// { +// public System.String name{set;get;} +// public System.Int32 principal_id{set;get;} +// public System.Int32 diagram_id{set;get;} +// public System.Int32 version{set;get;} +// public System.Byte[] definition{set;get;} +// +// } +// } +// "; + CodeSnippetCompileUnit cu = new CodeSnippetCompileUnit(code); + //CodeSnippetCompileUnit cu2 = new CodeSnippetCompileUnit(code2); + //CodeCompileUnit[] codecomUnit=new CodeCompileUnit[2]; + //codecomUnit[0] = cu; + //codecomUnit[1] = cu2; + + + // 开始编译 + CompilerResults cr = cc.CompileAssemblyFromDom(options, cu); + //CompilerResults cr = cc.CompileAssemblyFromDomBatch(options, codecomUnit); + + + string er = ""; + // 显示编译信息 + if (cr.Errors.Count == 0) + Console.WriteLine("\"{0}\" compiled ok!", cr.CompiledAssembly.Location); + else + { + Console.WriteLine("Complie Error:"); + foreach (CompilerError error in cr.Errors) + { + Console.WriteLine(" {0}", error); + er += error; + } + } + if (!String.IsNullOrEmpty(er)) + MessageBox.Show(er); + Console.WriteLine("Press Enter key to exit..."); + Console.ReadLine(); + } + + + + } +} diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_CodeGenerator.resx b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_CodeGenerator.resx new file mode 100644 index 0000000..88591c2 --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_CodeGenerator.resx @@ -0,0 +1,193 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACq + DgAAAk1TRnQBSQFMAgEBCAEAAdQBAAHUAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + AwABQAMAATADAAEBAQABCAYAAQwYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA + AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 + AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA + AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm + AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM + AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA + ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz + AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ + AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM + AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA + AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA + AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ + AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/ + AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA + AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm + ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ + Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz + AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA + AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM + AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM + ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM + Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA + AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM + AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ + AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz + AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm + AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw + AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD//8A/wD/AP8AJgAJZgHs + GAABGwGZARwBcwNLAXMBHAHxFAABZgf/AfABbRcAAZkBcwF0AXkBmQGaAXoBUgExAVEBSwGZAgAB7AHr + AW0B6gETARUBEQEPBw4CAAFmAf8BbAHxArwB8wFDAbwBZgH3Ae0BrgQAA60BiwWGAmYBhgQAAXMBWAF6 + AZoBoAGaAXoBWQEyAjEBSgIAAewBmgF6AVgFUgFRAUsBKgJLAQ8CAAFmAf8BkQHsAv8BDQH/AbsBbAH0 + ARkBkQQAAa0C9ALzARkB8QIZAd0BCQGGBAABcwFZAXoBmgGgAZoBegFZATICMQFKAgAB7AGgApoEegFZ + AVMCUgExAUsBEQIAAWYB/wHxAf8C8AH/AfMBBwFmAhkBkQQAAa0B/weLAgkBhgQAAXMBWQF6AZoBoAGa + AXoBWQEyAjEBSgIAAewBGgGgApoDegJZAVMCUgEqAUMCAAFmAf8BvAP/AfQB/wG8AWwB/wEZAZEEAAGt + Af8C9ALzARkB8wEZAd0BCQGGBAABcwFZAXoBmgGgAZoBegFZATICMQFLAgAB7QHDAqACmgN6AlkBUwFS + ATEBFAIAAWYB/wHxAf8B8QHdAf8B8wEHAWYB8wEZAZEEAAGtAf8CiwH0AosCGQLdAYYEAAFzAVkBegGa + AaABmgF6AVkBMgIxAUsCAAHtAcMCoAKaBHoCWQFSATEBEgIAAWYB/wGRAe0C/wENAf8BvAFsAf8B8wGR + BAABrQL/AvQC8wIZAd0BGQGGBAABcwFZAXoBmgGgAZoBegFZATICMQFLAgABHAPDAaACmgR6AVkBUgEx + AeoCAAFmAf8BbQH/AvEB/wENAfIBZgL0AZEEAAHUBP8B9ALzARkB8QEZAYYEAAFzAVkBegGaAaABmgF6 + AVkBMgIxAUsCAAEcA8MCoAKaBHoBWQFSAesCAAFmAf8B8AX/AfABbQH/ARkBkQQAAdUB/wKLAfQB/wH0 + ARkB8wIZAYsEAAF0AVkBegGaAaABmgF6AVkBMgIxAUsCAAEcBcMCoAKaBHoB6wIACWYB7AH/ARkBkQQA + AdUB9gX/AfQB8wIZAYsEAAF0AVkBegGaAaABmgF6AVkBMgIxAW4CAAocBO0B8gQAAfAJ/wGRBAABtALV + Ac8GrQGLAa0EAAEcAXoBoATDAaABmgF6AVgBbgIAARwBGgLDAaABmgEcAfELAAQJAtwB1gTVBAABtAMJ + AdwD1gPVAa0EAAF0CsMBbgIAAfQFHAH0DAABCQIZAt0FCQHVBAABtQHVA7QCzgWtBAABGgKZAhoCwwIa + AZkBHAGZFQAFCQLcAdYB3AHWAdUUAAH/ARsBGgGZARwBdAFzAhwBmQEbAf8yACf/AksO/wHrAW0t/wGZ + AVIBSw3/AQcB7AFtGf8B9wtmCP8BdAFZATEBSwz/Au0CbQj/AfcLZgT/AfcB/wLyAfEC3QQJAWYI/wF0 + AVkBSw3/Au0BbQHyCP8B7wH/AvIB8QHwAbwDCQG1AWYE/wH3A/8E7AH/ARkBCQFmCP8BdAFZATEBSwz/ + Au0B6gFtCP8B7wH/AbwBBwG7AfQBuwK1ARkBtQFmBP8B9wT/A/QB/wEZAQkBZgj/AXQBWQExAUsM/wGS + Ae0B6wFtCP8BuwT/AvQDGQG1AWYE/wH3A/8E7AL/Ad0BZgj/AXQBWQFKDf8BkgHtAeoJ/wG7Af8DvAH/ + A7sBGQG7AWYE/wG1CP8B9AHdAWYH/wGZAXQBWQFKARwK/wH0Ae8B7QGSAeoB9wH0B/8Buwb/AvQBGQEH + AWYE/wHvA/8E7AH/AfQB8QFmBv8BmQF0AXoBMgExAUoBcwj/AfQB7wHsAe8B6wFtAeoB7AHzBv8BuwH/ + A7wB/wG8AQcBuwH0AQcBZgT/AbUJ/wHyAWYF/wGZAXQBegEyAVkCMQFKAXQH/wEHAe0BBwLsAesBbQHq + AZIG/wG7B/8C9AEZAWYE/wG7A/8E7AL/AfIBZgX/AZkBwwRZAjEBbgf/Ae8B8QGSAewCkgHrAW0B6wb/ + A9YC1QK0Ba0E/wG7Cv8BZgX/ARwBwwF6AVIBHAFZAjEBbgf/Ae8B8gHvAewCkgHrAW0B6wb/AdYBCQTc + AdYE1QGtBP8D1gG1BLQBzwOtBf8BmQHDAXoBSwHzARwCMQFzB/8B7wHzAe8B6gHzAZIB7AFtAewG/wXW + AdUDtAOtBP8B1gIJAtwB1gXVAa0F/wGZAcMBmgFSAUsDUgF0B/8BBwHzAfAB7AHqA+wB9xb/A9YBtQS0 + Ac8DrQb/AZkCwwGaAVkBUgF0CP8B9AEHAvMB8AGSAewBkgHzKf8BGgGZARwBdAGZC/8BvAHvAfcB7QHv + AfQF/wFCAU0BPgcAAT4DAAEoAwABQAMAATADAAEBAQABAQUAAYABARYAA/+BAAT/AYABHwL/AeABBwL/ + AYABHwL/AcABAwEAAQEBgAEDAcABAwHAAQMBAAEBAYABAwHAAQMBwAEDAQABAQGAAQMBwAEDAcABAwEA + AQEBgAEDAcABAwHAAQMBAAEBAYABAwHAAQMBwAEDAQABAQGAAQMBwAEDAcABAwEAAQEBgAEDAcABAwHA + AQMBAAEBAYABAwHAAQMBwAEDAQABAQGAAQMBwAEDAcABAwEAAQEB4AEDAcABAwHAAQMBAAH/AeABAwHA + AQMBwAEDAQEB/wHgAQMBwAEDAcABAwL/AeABAwL/AcABAwb/gAAL + + + \ No newline at end of file diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_Main.Designer.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_Main.Designer.cs new file mode 100644 index 0000000..5b81dfe --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_Main.Designer.cs @@ -0,0 +1,301 @@ +namespace CsharpOSMeteorCodeGenerator +{ + partial class F_Main + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(F_Main)); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.treeView1 = new System.Windows.Forms.TreeView(); + this.lstImage = new System.Windows.Forms.ImageList(this.components); + this.panel1 = new System.Windows.Forms.Panel(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.panel2 = new System.Windows.Forms.Panel(); + this.linkLabel1 = new System.Windows.Forms.LinkLabel(); + this.rad_linq = new System.Windows.Forms.RadioButton(); + this.rad_ado = new System.Windows.Forms.RadioButton(); + this.rad_sql = new System.Windows.Forms.RadioButton(); + this.rad_isEntity = new System.Windows.Forms.RadioButton(); + this.label1 = new System.Windows.Forms.Label(); + this.contextMenu1 = new System.Windows.Forms.ContextMenu(); + this.menuItem1 = new System.Windows.Forms.MenuItem(); + this.contextMenu2 = new System.Windows.Forms.ContextMenu(); + this.menuItem2 = new System.Windows.Forms.MenuItem(); + this.menuItem4 = new System.Windows.Forms.MenuItem(); + this.menuItem5 = new System.Windows.Forms.MenuItem(); + this.menuItem6 = new System.Windows.Forms.MenuItem(); + this.menuItem7 = new System.Windows.Forms.MenuItem(); + this.menuItem3 = new System.Windows.Forms.MenuItem(); + this.groupBox1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.panel2.SuspendLayout(); + this.SuspendLayout(); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.treeView1); + this.groupBox1.Dock = System.Windows.Forms.DockStyle.Left; + this.groupBox1.Location = new System.Drawing.Point(0, 0); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(230, 515); + this.groupBox1.TabIndex = 0; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Database"; + // + // treeView1 + // + this.treeView1.Dock = System.Windows.Forms.DockStyle.Fill; + this.treeView1.ImageIndex = 4; + this.treeView1.ImageList = this.lstImage; + this.treeView1.Location = new System.Drawing.Point(3, 17); + this.treeView1.Name = "treeView1"; + this.treeView1.SelectedImageIndex = 4; + this.treeView1.Size = new System.Drawing.Size(224, 495); + this.treeView1.TabIndex = 0; + this.treeView1.BeforeExpand += new System.Windows.Forms.TreeViewCancelEventHandler(this.treeView1_BeforeExpand); + this.treeView1.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.treeView1_NodeMouseClick); + this.treeView1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.treeView1_MouseDown); + // + // lstImage + // + this.lstImage.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("lstImage.ImageStream"))); + this.lstImage.TransparentColor = System.Drawing.Color.Transparent; + this.lstImage.Images.SetKeyName(0, "table-icon.png"); + this.lstImage.Images.SetKeyName(1, "field-icon.png"); + this.lstImage.Images.SetKeyName(2, "primary_key-icon.png"); + this.lstImage.Images.SetKeyName(3, "foreign_key-icon.png"); + this.lstImage.Images.SetKeyName(4, "db.png"); + this.lstImage.Images.SetKeyName(5, "00060.png"); + this.lstImage.Images.SetKeyName(6, "views.png"); + this.lstImage.Images.SetKeyName(7, "proc.png"); + // + // panel1 + // + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(3, 47); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(718, 465); + this.panel1.TabIndex = 1; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.panel1); + this.groupBox2.Controls.Add(this.panel2); + this.groupBox2.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox2.Location = new System.Drawing.Point(230, 0); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(724, 515); + this.groupBox2.TabIndex = 0; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Code"; + // + // panel2 + // + this.panel2.Controls.Add(this.linkLabel1); + this.panel2.Controls.Add(this.rad_linq); + this.panel2.Controls.Add(this.rad_ado); + this.panel2.Controls.Add(this.rad_sql); + this.panel2.Controls.Add(this.rad_isEntity); + this.panel2.Controls.Add(this.label1); + this.panel2.Dock = System.Windows.Forms.DockStyle.Top; + this.panel2.Location = new System.Drawing.Point(3, 17); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(718, 30); + this.panel2.TabIndex = 0; + // + // linkLabel1 + // + this.linkLabel1.AutoSize = true; + this.linkLabel1.Location = new System.Drawing.Point(575, 9); + this.linkLabel1.Name = "linkLabel1"; + this.linkLabel1.Size = new System.Drawing.Size(77, 12); + this.linkLabel1.TabIndex = 9; + this.linkLabel1.TabStop = true; + this.linkLabel1.Text = "About author"; + this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked); + // + // rad_linq + // + this.rad_linq.AutoSize = true; + this.rad_linq.Location = new System.Drawing.Point(235, 8); + this.rad_linq.Name = "rad_linq"; + this.rad_linq.Size = new System.Drawing.Size(47, 16); + this.rad_linq.TabIndex = 7; + this.rad_linq.TabStop = true; + this.rad_linq.Text = "linq"; + this.rad_linq.UseVisualStyleBackColor = true; + this.rad_linq.CheckedChanged += new System.EventHandler(this.rad_linq_CheckedChanged); + // + // rad_ado + // + this.rad_ado.AutoSize = true; + this.rad_ado.Location = new System.Drawing.Point(188, 9); + this.rad_ado.Name = "rad_ado"; + this.rad_ado.Size = new System.Drawing.Size(41, 16); + this.rad_ado.TabIndex = 8; + this.rad_ado.TabStop = true; + this.rad_ado.Text = "ADO"; + this.rad_ado.UseVisualStyleBackColor = true; + this.rad_ado.CheckedChanged += new System.EventHandler(this.rad_ado_CheckedChanged); + // + // rad_sql + // + this.rad_sql.AutoSize = true; + this.rad_sql.Location = new System.Drawing.Point(140, 8); + this.rad_sql.Name = "rad_sql"; + this.rad_sql.Size = new System.Drawing.Size(41, 16); + this.rad_sql.TabIndex = 6; + this.rad_sql.TabStop = true; + this.rad_sql.Text = "sql"; + this.rad_sql.UseVisualStyleBackColor = true; + this.rad_sql.CheckedChanged += new System.EventHandler(this.rad_sql_CheckedChanged); + // + // rad_isEntity + // + this.rad_isEntity.AutoSize = true; + this.rad_isEntity.Location = new System.Drawing.Point(76, 8); + this.rad_isEntity.Name = "rad_isEntity"; + this.rad_isEntity.Size = new System.Drawing.Size(59, 16); + this.rad_isEntity.TabIndex = 4; + this.rad_isEntity.TabStop = true; + this.rad_isEntity.Text = "Entity"; + this.rad_isEntity.UseVisualStyleBackColor = true; + this.rad_isEntity.CheckedChanged += new System.EventHandler(this.rad_isEntity_CheckedChanged); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(19, 10); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(47, 12); + this.label1.TabIndex = 3; + this.label1.Text = "Choose:"; + // + // contextMenu1 + // + this.contextMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { + this.menuItem1}); + // + // menuItem1 + // + this.menuItem1.Index = 0; + this.menuItem1.Text = "CodeGenerator"; + this.menuItem1.Click += new System.EventHandler(this.menuItem1_Click); + // + // contextMenu2 + // + this.contextMenu2.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { + this.menuItem2, + this.menuItem3}); + // + // menuItem2 + // + this.menuItem2.Index = 0; + this.menuItem2.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { + this.menuItem4, + this.menuItem5, + this.menuItem6, + this.menuItem7}); + this.menuItem2.Text = "ADO"; + // + // menuItem4 + // + this.menuItem4.Index = 0; + this.menuItem4.Text = "Select-field"; + this.menuItem4.Click += new System.EventHandler(this.menuItem4_Click); + // + // menuItem5 + // + this.menuItem5.Index = 1; + this.menuItem5.Text = "Insert-field"; + this.menuItem5.Click += new System.EventHandler(this.menuItem5_Click); + // + // menuItem6 + // + this.menuItem6.Index = 2; + this.menuItem6.Text = "Update-field"; + this.menuItem6.Click += new System.EventHandler(this.menuItem6_Click); + // + // menuItem7 + // + this.menuItem7.Index = 3; + this.menuItem7.Text = "Delete-field"; + this.menuItem7.Click += new System.EventHandler(this.menuItem7_Click); + // + // menuItem3 + // + this.menuItem3.Index = 1; + this.menuItem3.Text = "Linq"; + // + // F_Main + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(954, 515); + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.groupBox1); + this.Cursor = System.Windows.Forms.Cursors.Default; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "F_Main"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "CsharpOSMeteorCodeGenerator"; + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.F_Main_FormClosed); + this.Load += new System.EventHandler(this.F_Main_Load); + this.groupBox1.ResumeLayout(false); + this.groupBox2.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.panel2.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.ImageList lstImage; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.RadioButton rad_linq; + private System.Windows.Forms.RadioButton rad_ado; + private System.Windows.Forms.RadioButton rad_sql; + private System.Windows.Forms.RadioButton rad_isEntity; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.LinkLabel linkLabel1; + private System.Windows.Forms.ContextMenu contextMenu1; + private System.Windows.Forms.MenuItem menuItem1; + public System.Windows.Forms.TreeView treeView1; + private System.Windows.Forms.ContextMenu contextMenu2; + private System.Windows.Forms.MenuItem menuItem2; + private System.Windows.Forms.MenuItem menuItem3; + private System.Windows.Forms.MenuItem menuItem5; + private System.Windows.Forms.MenuItem menuItem4; + private System.Windows.Forms.MenuItem menuItem6; + private System.Windows.Forms.MenuItem menuItem7; + } +} \ No newline at end of file diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_Main.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_Main.cs new file mode 100644 index 0000000..15de832 --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_Main.cs @@ -0,0 +1,866 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using CsharpOSMeteorCodeGenerator.Model; +using ICSharpCode.TextEditor; +using ICSharpCode.TextEditor.Document; +using System.IO; +using System.Data.SqlClient; + +namespace CsharpOSMeteorCodeGenerator +{ + public partial class F_Main : Form + { + TextEditorControl txtEditControl; + public F_Main() + { + InitializeComponent(); + txtEditControl = new TextEditorControl(); + txtEditControl.Dock = DockStyle.Fill; + this.panel1.Controls.Add(txtEditControl); + } + + private void F_Main_FormClosed(object sender, FormClosedEventArgs e) + { + System.Environment.Exit(0); + } + + private void F_Main_Load(object sender, EventArgs e) + { + rad_isEntity.Checked = true; + //this.Controls.Clear(); + Data.GetListTables glt = new Data.GetListTables(); + List list_str= glt.GetListDBName(Model.EModel.connBuilder); + OSMyNode node; + OSMyNode snode; + foreach (string item in list_str) + { + node = new OSMyNode(); + node.Text = item; + node.ToolTipText = item; + node.Value = item; + node.Tag = "fistPid"; + snode = new OSMyNode(); + snode.Text = "snode"; + snode.ImageIndex = 4; + snode.SelectedImageIndex = 4; + node.Nodes.Add(snode); + treeView1.Nodes.Add(node); + } + + + } + + private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e) + { + if (e.Node.Parent == null) + { + + this.treeView1.Cursor = Cursors.AppStarting; + OSMyNode node = (OSMyNode)e.Node; + node.Nodes.Clear(); + Data.GetListTables glt = new Data.GetListTables(); + + OSMyNode snode; + OSMyNode cnode; + List
list_tab = glt.ListTables(Model.EModel.connBuilder, e.Node.Text); + List
list_tab2 = glt.ListViews(Model.EModel.connBuilder, e.Node.Text); + List
list_tab3 = glt.ListProc(Model.EModel.connBuilder, e.Node.Text); + foreach (Table table in list_tab) + { + snode = new OSMyNode(); + snode.Text = table.Name; + snode.Value = table; + snode.ToolTipText = table.Name; + snode.ImageIndex = 5; + snode.SelectedImageIndex = 5; + node.Nodes.Add(snode); + //snode.Value = table; + //node.Checked = true; + //node.SelectedImageIndex = (int)DBImage.TABLE; + //node.ImageIndex = (int)DBImage.TABLE; + //tree.Nodes.Add(node); + cnode = new OSMyNode(); + cnode.Text = "snode"; + cnode.Tag = "snode"; + snode.Nodes.Add(cnode); + } + foreach (Table table in list_tab2) + { + snode = new OSMyNode(); + snode.Text = table.Name; + snode.Value = table; + snode.ToolTipText = table.Name; + snode.ImageIndex = 6; + snode.SelectedImageIndex = 6; + node.Nodes.Add(snode); + cnode = new OSMyNode(); + cnode.Text = "snode"; + cnode.Tag = "snode"; + snode.Nodes.Add(cnode); + } + foreach (Table table in list_tab3) + { + snode = new OSMyNode(); + snode.Text = table.Name; + snode.Value = table; + snode.ToolTipText = table.Name; + snode.ImageIndex = 7; + snode.SelectedImageIndex = 7; + node.Nodes.Add(snode); + cnode = new OSMyNode(); + cnode.Text = "snode"; + cnode.Tag = "snode"; + snode.Nodes.Add(cnode); + } + this.treeView1.Cursor = Cursors.Default ; + } + //MessageBox.Show(e.Node.FirstNode.Text); + + if ((e.Node.Parent != null) && (e.Node.FirstNode.Text == "snode")) + { + this.treeView1.Cursor = Cursors.AppStarting; + OSMyNode node = (OSMyNode)e.Node; + node.Nodes.Clear(); + Data.GetListTables glt = new Data.GetListTables(); + Data.ColumnData dcd = new Data.ColumnData(); + Data.TableData tabdata = new Data.TableData(); + List list_column = tabdata.ListTablesColumn(node.Text, Model.EModel.connBuilder); + OSMyNode Tnode; + foreach (Column column in list_column) + { + Tnode = new OSMyNode(); + Tnode.Value = column; + //Tnode.Text = column.Name; + Tnode.Text = column.Name + " \n(" + ListarAtributos(column) + ")"; + Tnode.ToolTipText = column.Name + " \n(" + ListarAtributos(column) + ")"; + Tnode.ImageIndex=GetImageIndex(column); + Tnode.SelectedImageIndex = GetImageIndex(column); + + //nodeSon.Checked = true; + //nodeSon.Text = column.Name + " (" + ListarAtributos(column) + ")"; + //nodeSon.Value = column; + //nodeSon.SelectedImageIndex = GetImageIndex(column); + //nodeSon.ImageIndex = GetImageIndex(column); + //node.Nodes.Add(nodeSon); + node.Nodes.Add(Tnode); + } + this.treeView1.Cursor = Cursors.Default; + } + } + + + private int GetImageIndex(Column column) + { + if (column.PrimaryKey) + { + return (int)DBImage.PRIMARY_KEY; + } + else if (column.ForeignKey) + { + return (int)DBImage.FOREIGN_KEY; + } + else + { + return (int)DBImage.FIELD; + } + } + /// + /// Database's objects image + /// + public enum DBImage : int + { + TABLE = 0, + FIELD = 1, + PRIMARY_KEY = 2, + FOREIGN_KEY = 3 + } + private string ListarAtributos(Column column) + { + string attributes = String.Empty; + + if (column.PrimaryKey) + { + attributes += "PK, "; + } + + if (column.ForeignKey) + { + attributes += "FK, "; + } + + if (column.CharacterMaximumLength != null) + { + attributes += column.Type + "(" + column.CharacterMaximumLength + "), "; + } + else + { + attributes += column.Type + ", "; + } + + attributes += (column.Nullable) ? "null" : "not null"; + + return attributes; + } + string Filepath_entity= @"..\..\config\tempentity.cs"; + string Filepath_sql = @"..\..\config\tempsql.cs"; + string Filepath_ado = @"..\..\config\tempado.cs"; + string Filepath_linq = @"..\..\config\templinq.cs"; + private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) + { + //OSMyNode node = (OSMyNode)treeView1.SelectedNode; + OSMyNode node = (OSMyNode)e.Node; + if (node == null) + { + return; + } + + if (node.Parent == null) + { + if (e.Button == MouseButtons.Right) + { + treeView1.ContextMenu = this.contextMenu1; + } + } + else if (node.ImageIndex==5) + { + if (e.Button == MouseButtons.Right) + { + treeView1.ContextMenu = this.contextMenu2; + } + } + else + { + treeView1.ContextMenu = null; + + } + + if (node.ImageIndex == 5 || node.ImageIndex==6) + { + string StrTableName = node.Text; + this.treeView1.Cursor = Cursors.AppStarting; + #region entity + //string StrNameSpace = this.txt_namespce.Text; + string StrTableAttribute = GetrTableAttribute(node); + string StrtableAttribute2 = GetrTableAttribute2(node); + string StrtableAttribute3 = GetrTableAttribute3(node); + string StrTablefieldJson = GetrTablefieldJson(node); + using (StreamWriter sw = File.CreateText(Filepath_entity)) + { + sw.WriteLine(String.Format(Model.BaseTableENtityClass.strtable, StrTableName, StrTableAttribute, StrtableAttribute2, StrtableAttribute3, StrTablefieldJson)); + sw.Close(); + } + #endregion + #region sql + + //string StrTablefield = GetrTablefield(node); + string StrTablefieldInsertsql = GetrTablefieldInsertSQL(node); + string StrTablefieldSelectSQL = GetrTablefieldSelectSQL(node); + string StrTablefieldUpdateSQL = GetrTablefieldUpdateSQL(node); + string StrTablefieldDeleteSQL = GetrTablefieldDeleteSQL(node); + //string StrTablefieldSqlParameterSQL = GetrTablefieldSqlParameterSQL(node); + using (StreamWriter sw = File.CreateText(Filepath_sql)) + { + sw.WriteLine(String.Format(Model.BaseTableSQLClass.strtablesql, StrTablefieldSelectSQL, StrTablefieldInsertsql, + StrTablefieldUpdateSQL, StrTablefieldDeleteSQL + )); + sw.Close(); + } + #endregion + #region ado + string StrTablefieldSqlParameterSQL = GetrTablefieldSqlParameterSQL(node); + using (StreamWriter sw = File.CreateText(Filepath_ado)) + { + sw.WriteLine(String.Format(Model.BaseTableAdoClass.strtableado, StrTablefieldSqlParameterSQL + )); + sw.Close(); + } + #endregion + #region linq + string linqadd_entity = GetrTableAttribute_linqadd_entity(node); + string linqadd = String.Format(Model.BaseTableLinqClass.strtablelinqadd, StrTableName, StrTableName, StrTableName,linqadd_entity,StrTableName); + string strtablelinqdelete = String.Format(Model.BaseTableLinqClass.strtablelinqdelete, StrTableName, StrTableName, StrTableName, StrTableName); + string linqupdate_entity = GetrTableAttribute_linqupdate_entity(node); + string strtablelinqupdate = String.Format(Model.BaseTableLinqClass.strtablelinqupdate, StrTableName, StrTableName, StrTableName, StrTableName, linqupdate_entity); + string strtablelinqselect = String.Format(Model.BaseTableLinqClass.strtablelinqselect, StrTableName, StrTableName, StrTableName, StrTableName, StrTableName, StrTableName, linqupdate_entity); + string strtablelinqselectToIEnumerable = String.Format(Model.BaseTableLinqClass.strtablelinqselectToIEnumerable, StrTableName, StrTableName, StrTableName, StrTableName, StrTableName, StrTableName, StrTableName, StrTableName); + using (StreamWriter sw = File.CreateText(Filepath_linq)) + { + sw.WriteLine(strtablelinqselect); + sw.WriteLine(strtablelinqselectToIEnumerable); + sw.WriteLine(linqadd); + sw.WriteLine(strtablelinqdelete); + sw.WriteLine(strtablelinqupdate); + sw.Close(); + } + + #endregion + this.treeView1.Cursor = Cursors.Default; + if (rad_isEntity.Checked) + { + + txtEditControl.LoadFile(Filepath_entity); + } + if (rad_sql.Checked) + { + + txtEditControl.LoadFile(Filepath_sql); + } + if (rad_ado.Checked) + { + txtEditControl.LoadFile(Filepath_ado); + } + if (rad_linq.Checked) + { + txtEditControl.LoadFile(Filepath_linq); + } + } + } + public string GetrTableAttribute(OSMyNode node) { + string rs = "\n"; + Table tab = (Table)node.Value; + foreach (Column item in tab.Columns) + { + rs += " public " + GetdbType(item.Type) + " " + item.Name + " { get; set ; }\n"; + } + return rs; + } + public string GetrTableAttribute2(OSMyNode node) + { + string rs = "\n"; + rs += " " + node.Text + " newojb = new " + node.Text + "();\n"; + Table tab = (Table)node.Value; + foreach (Column item in tab.Columns) + { + rs += " newojb." + item.Name + "="+"("+item.Type+");"+"\n"; + } + return rs; + } + public string GetrTableAttribute3(OSMyNode node) + { + string rs = "\n"; + rs += " " + node.Text + " newojb = new " + node.Text + "()\n"; + rs += " {\n"; + Table tab = (Table)node.Value; + int num = 1; + foreach (Column item in tab.Columns) + { + if (tab.Columns.Count == num) + { + rs += " " + item.Name + "=" + "(" + item.Type + ")" + "\n"; + } + else + { + rs += " " + item.Name + "=" + "(" + item.Type + ")," + "\n"; + } + num++; + + } + rs += " };"; + return rs; + } + public string GetrTablefieldJson(OSMyNode node) + { + string rs = "{"; + //Insert INTO table(field1,field2,...) values(value1,value2,...) + Table tab = (Table)node.Value; + int num = 1; + foreach (Column item in tab.Columns) + { + if (tab.Columns.Count == num) + { + rs += " \"" + item.Name + "\": " + "v_" + item.Name + "(" + item.Type + ")" + ""; + } + else + { + rs += " \"" + item.Name + "\": " + "v_" + item.Name + "(" + item.Type + ")" + ","; + } + num++; + + + } + rs += "}"; + return rs; + + } + public string GetrTablefield(OSMyNode node) + { + string rs = "\n"; + + Table tab = (Table)node.Value; + + foreach (Column item in tab.Columns) + { + rs += " " + item.Name + " "; + } + return rs; + + } + public string GetdbType(string type) + { + string rs = ""; + switch (type) + { + case "int": rs = "int"; break; + case "tinyint": rs = "int"; break; + case "smallint": rs = "int"; break; + case "bigint": rs = "int"; break; + case "datetime": rs = "DateTime"; break; + case "smalldatetime": rs = "DateTime"; break; + case "date": rs = "DateTime"; break; + case "float": rs = "int"; break; + case "decimal": rs = "decimal"; break; + case "numeric": rs = "decimal"; break; + case "money": rs = "decimal"; break; + case "real": rs = "decimal"; break; + case "smallmoney": rs = "decimal"; break; + case "bit": rs = "bool"; break; + default: + rs = "string"; + break; + } + return rs; + } + public string GetrTablefieldSelectSQL(OSMyNode node) + { + string rs = "select "; + Table tab = (Table)node.Value; + int num = 1; + foreach (Column item in tab.Columns) + { + if (tab.Columns.Count == num) + { + rs += item.Name; + } + else + { + rs += item.Name + ","; + } + num++; + + } + rs += " from "+node.Text+" where 1=1"; + return rs; + + } + public string GetrTablefieldInsertSQL(OSMyNode node) + { + string rs = "insert into "+node.Text+"("; + //Insert INTO table(field1,field2,...) values(value1,value2,...) + Table tab = (Table)node.Value; + string strvalue = " values("; + int num = 1; + foreach (Column item in tab.Columns) + { + if (tab.Columns.Count == num) + { + rs += item.Name; + strvalue += "v_" + item.Name + "(" + item.Type+ ")"; + } + else + { + rs += item.Name + ","; + strvalue += "v_" + item.Name + "(" + GetdbType(item.Type) + ")" + ","; + } + num++; + + } + rs += ")"; + rs += strvalue+")"; + return rs; + + } + public string GetrTablefieldUpdateSQL(OSMyNode node) + { + string rs = "update " + node.Text +" set "; + Table tab = (Table)node.Value; + int num = 1; + foreach (Column item in tab.Columns) + { + if (tab.Columns.Count == num) + { + rs += item.Name + "=" + "(" + item.Type + ")"; + } + else + { + rs += item.Name + "=" + "(" + item.Type + ")" + ","; + } + num++; + + } + rs += "where 1=1"; + return rs; + + } + public string GetrTablefieldDeleteSQL(OSMyNode node) + { + string rs = "delete from " + node.Text + " where 1=1"; + return rs; + + } + public string GetrTablefieldSqlParameterSQL(OSMyNode node) + { + string rs = "\n using (SqlConnection conn = new SqlConnection(connectionString))" + + "\n {" + + "\n conn.Open();" + + "\n SqlCommand comm = new SqlCommand();" + + "\n comm.Connection = conn;"; + Table tab = (Table)node.Value; + int number1= 1; + string strsql_update = "\" update " + node.Text + " set "; + string strql_select = "\" select "; + //select column1,column2,column3,id from Table_1 where 1=1 + string strql_insert = "\"insert into " + node.Text + "("; + foreach (Column item in tab.Columns) + { + if (tab.Columns.Count == number1) + { + strql_insert += item.Name; + strsql_update += item.Name + "= @" + item.Name + ""; + strql_select += item.Name; + }else{ + strql_insert += item.Name + ","; + strsql_update += item.Name + "= @" + item.Name+","; + strql_select += item.Name + ","; + } + number1++; + } + strql_insert += ") values("; + int number2= 1; + foreach (Column item in tab.Columns) + { + if (tab.Columns.Count == number2) + { + strql_insert += "@" + item.Name + ""; + + }else{ + strql_insert += "@" + item.Name + ","; + } + number2++; + } + strql_insert += ")\";\n"; + strsql_update += " where 1=1 \""; + strql_select += " from " + node.Text; + strql_select += " where 1=1 \""; + rs += "\n"; + rs += " string strql_insert=" + strql_insert+""; + rs += " string strql_select=" + strql_select + ";"; + rs += "\n"; + rs += " string sql_update=" + strsql_update + ";"; + rs += "\n comm.CommandText = \"\";"; + int num = 1; + foreach (Column item in tab.Columns) + { + if (tab.Columns.Count == num) + { + string Sqltype=Data.SqlDbTypeAndDbTypeConvert.SqlTypeString2SqlTypers(item.Type); + //string isnull = "false"; + //rs += "\n new SqlParameter(\"@" + item.Name + "\", " + Sqltype + ", " + item.CharacterMaximumLength + + // ",ParameterDirection.Input,"+isnull+" , 0, 0, \""+item.Name+"\""+ + // ", DataRowVersion.Current,"+"\""+"v_"+item.Name+"\"" + // +")"; + string Sqltypelength = GetrTablefieldSqlParameterSQLLength(item.Type); + rs += "\n comm.Parameters.Add(new SqlParameter(\"@" + item.Name + "\", " + Sqltype + + " "+Sqltypelength.ToString()+") { Value = \"v_"+item.Name+"\" });"; + } + else + { + string Sqltype = Data.SqlDbTypeAndDbTypeConvert.SqlTypeString2SqlTypers(item.Type); + //string isnull = "false"; + //rs += "\n new SqlParameter(\"@" + item.Name + "\", " + Sqltype + ", " + item.CharacterMaximumLength + + // ",ParameterDirection.Input," + isnull + " , 0, 0, \"" + item.Name + "\"" + + // ", DataRowVersion.Current," + "\"" + "v_" + item.Name + "\"" + // + "),"; + string Sqltypelength = GetrTablefieldSqlParameterSQLLength(item.Type); + rs += "\n comm.Parameters.Add(new SqlParameter(\"@" + item.Name + "\", " + Sqltype + + " "+Sqltypelength.ToString()+") { Value = \"v_"+item.Name+"\" });"; + } + num++; + + } + rs += "\n "; + rs += @"comm.ExecuteNonQuery();"; + rs += "\n //SqlDataAdapter adp = new SqlDataAdapter(comm);"; + rs += "\n //DataSet result =adp.Fill(result);"; + rs += "\n conn.Close();"; + rs+="\n }"; + return rs; + + } + public string GetrTablefieldSqlParameterSQLLength(string dbsql) { + + string rs = ""; + if (dbsql == "varchar" || dbsql == "nvarchar" || dbsql == "char") + { + rs = ", -1 "; + } + return rs; + } + + public string GetrTableAttribute_linqadd_entity(OSMyNode node) + { + string rs = "\n"; + rs += " " + node.Text + " newojb = new " + node.Text + "()\n"; + rs += " {\n"; + Table tab = (Table)node.Value; + int num = 1; + foreach (Column item in tab.Columns) + { + string convetType=Data.SqlDbTypeAndDbTypeConvert.SqlTypeString2CsharpTypeString(item.Type).ToString(); + if (tab.Columns.Count == num) + { + rs += " " + item.Name + "=" + "(" + convetType + ")" + "obj." + item.Name + "\n"; + } + else + { + rs += " " + item.Name + "=" + "(" + convetType + ")" + "obj." + item.Name + ",\n"; + } + num++; + } + rs += " };"; + + return rs; + } + + public string GetrTableAttribute_linqupdate_entity(OSMyNode node) + { + string rs = "\n"; + Table tab = (Table)node.Value; + foreach (Column item in tab.Columns) + { + string convetType = Data.SqlDbTypeAndDbTypeConvert.SqlTypeString2CsharpTypeString(item.Type).ToString(); + rs += " query." + item.Name + "=" + "(" + convetType + ")" + "obj." + item.Name + ";\n"; + } + return rs; + } + + private void rad_isEntity_CheckedChanged(object sender, EventArgs e) + { + if (rad_isEntity.Checked) + { + txtEditControl.LoadFile(Filepath_entity); + } + } + + private void rad_sql_CheckedChanged(object sender, EventArgs e) + { + if (rad_sql.Checked) { + txtEditControl.LoadFile(Filepath_sql); + } + } + + private void rad_ado_CheckedChanged(object sender, EventArgs e) + { + if (rad_ado.Checked) + { + txtEditControl.LoadFile(Filepath_ado); + } + } + + private void rad_linq_CheckedChanged(object sender, EventArgs e) + { + if (rad_linq.Checked) + { + txtEditControl.LoadFile(Filepath_linq); + } + } + about a = null; + private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + if (a == null) + { + a = new about(); + a.Show(); + } + else { + a.Close(); + a = new about(); + a.Show(); + } + } + + private void treeView1_MouseDown(object sender, MouseEventArgs e) + { + this.treeView1.ContextMenu = null; + //OSMyNode node = (OSMyNode)treeView1.SelectedNode; + //if (node == null) + //{ + // return; + //} + + //if (node.Parent == null) + //{ + // if (e.Button == MouseButtons.Right) + // { + // treeView1.ContextMenu = this.contextMenu1; + // } + //} + //else + //{ + // treeView1.ContextMenu = null; + + //} + } + F_CodeGenerator fcode = null; + private void menuItem1_Click(object sender, EventArgs e) + { + OSMyNode node = (OSMyNode)treeView1.SelectedNode; + if ( node.Tag.ToString()== "fistPid") + { + if(fcode==null) + { + fcode= new F_CodeGenerator(); + fcode.Owner = this; + fcode.selectnode = this.selectnode; + //fcode.Show(); + fcode.ShowDialog(this); + }else{ + fcode.Close(); + fcode= new F_CodeGenerator(); + fcode.Owner = this; + fcode.selectnode = this.selectnode; + //fcode.Show(); + fcode.ShowDialog(this); + } + } + } + public object selectnode{ + get { + OSMyNode node = (OSMyNode)treeView1.SelectedNode; + if (node.Parent != null) + { + //pubs + string rs= EModel.connBuilder.ConnectionString; + rs=rs.Remove(30); + rs += node.Parent.Text + ";Integrated Security=True;Persist Security Info=True"; + EModel.connBuilder.ConnectionString = rs; + } + return node; } + } + F_ADO_CodeGenerator fadocode = null; + private void menuItem4_Click(object sender, EventArgs e) + { + string type = "Select"; + if (fadocode == null) + { + fadocode = new F_ADO_CodeGenerator(); + fadocode.Owner = this; + fadocode.selectnode = this.selectnode; + fadocode.Pidnode_dbname = ((OSMyNode)selectnode).Parent.Text.Trim().ToString(); + fadocode.SQLType = type; + fadocode.ShowDialog(this); + } + else { + fadocode.Close(); + fadocode = new F_ADO_CodeGenerator(); + fadocode.Owner = this; + fadocode.selectnode = this.selectnode; + fadocode.Pidnode_dbname = ((OSMyNode)treeView1.SelectedNode).Parent.Text.Trim().ToString(); + fadocode.SQLType = type; + fadocode.ShowDialog(this); + } + } + + private void menuItem5_Click(object sender, EventArgs e) + { + string type = "Insert"; + if (fadocode == null) + { + fadocode = new F_ADO_CodeGenerator(); + fadocode.Owner = this; + fadocode.selectnode = this.selectnode; + fadocode.Pidnode_dbname = ((OSMyNode)treeView1.SelectedNode).Parent.Text.Trim().ToString(); + fadocode.SQLType = type; + fadocode.ShowDialog(this); + } + else + { + fadocode.Close(); + fadocode = new F_ADO_CodeGenerator(); + fadocode.Owner = this; + fadocode.selectnode = this.selectnode; + fadocode.Pidnode_dbname = ((OSMyNode)treeView1.SelectedNode).Parent.Text.Trim().ToString(); + fadocode.SQLType = type; + fadocode.ShowDialog(this); + } + } + + private void menuItem6_Click(object sender, EventArgs e) + { + string type = "Update"; + if (fadocode == null) + { + fadocode = new F_ADO_CodeGenerator(); + fadocode.Owner = this; + fadocode.selectnode = this.selectnode; + fadocode.Pidnode_dbname = ((OSMyNode)treeView1.SelectedNode).Parent.Text.Trim().ToString(); + fadocode.SQLType = type; + fadocode.ShowDialog(this); + } + else + { + fadocode.Close(); + fadocode = new F_ADO_CodeGenerator(); + fadocode.Owner = this; + fadocode.selectnode = this.selectnode; + fadocode.Pidnode_dbname = ((OSMyNode)treeView1.SelectedNode).Parent.Text.Trim().ToString(); + fadocode.SQLType = type; + fadocode.ShowDialog(this); + } + } + + private void menuItem7_Click(object sender, EventArgs e) + { + string type = "Delete"; + if (fadocode == null) + { + fadocode = new F_ADO_CodeGenerator(); + fadocode.Owner = this; + fadocode.selectnode = this.selectnode; + fadocode.Pidnode_dbname = ((OSMyNode)treeView1.SelectedNode).Parent.Text.Trim().ToString(); + fadocode.SQLType = type; + fadocode.ShowDialog(this); + } + else + { + fadocode.Close(); + fadocode = new F_ADO_CodeGenerator(); + fadocode.Owner = this; + fadocode.selectnode = this.selectnode; + fadocode.Pidnode_dbname = ((OSMyNode)treeView1.SelectedNode).Parent.Text.Trim().ToString(); + fadocode.SQLType = type; + fadocode.ShowDialog(this); + } + } + + //using (SqlConnection conn = new SqlConnection(EModel.connBuilder.ConnectionString)) + //{ + // conn.Open(); + // SqlCommand comm = new SqlCommand(); + // comm.Connection = conn; + // string strql_insert = "insert into [test].[dbo].[Table_1] (column1,column2,column3,id) values(@column1,@column2,@column3,@id)"; + // comm.CommandText = strql_insert; + // //comm.Parameters.Add(new SqlParameter("@column1", SqlDbType.VarChar , -1 ) { Value = "v_column1" }); + // //comm.Parameters.Add(new SqlParameter("@column2", SqlDbType.Int ) { Value = 1 }); + // //comm.Parameters.Add(new SqlParameter("@column3", SqlDbType.DateTime) { Value = "2013-11-22 15:39:24.383" }); + // //comm.Parameters.Add(new SqlParameter("@id", SqlDbType.UniqueIdentifier) { Value =System.Guid.NewGuid() }); + // SqlParameter[] pm = { + // new SqlParameter("@column1", SqlDbType.VarChar , -1 ) { Value = "v_column1" }, + // new SqlParameter("@column2", SqlDbType.Int ) { Value = 1 }, + // new SqlParameter("@column3", SqlDbType.DateTime) { Value = "2013-11-22 15:39:24.383" }, + // new SqlParameter("@id", SqlDbType.UniqueIdentifier) { Value =System.Guid.NewGuid() } + // }; + // comm.Parameters.AddRange(pm); + // comm.ExecuteNonQuery(); + // //SqlDataAdapter adp = new SqlDataAdapter(comm); + // //DataSet result =adp.Fill(result); + // conn.Close(); + //} + + } +} diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_Main.resx b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_Main.resx new file mode 100644 index 0000000..38b1c5b --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_Main.resx @@ -0,0 +1,279 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACq + DgAAAk1TRnQBSQFMAgEBCAEAAYwBAAGMAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + AwABQAMAATADAAEBAQABCAYAAQwYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA + AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 + AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA + AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm + AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM + AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA + ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz + AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ + AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM + AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA + AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA + AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ + AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/ + AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA + AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm + ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ + Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz + AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA + AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM + AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM + ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM + Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA + AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM + AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ + AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz + AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm + AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw + AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD//8A/wD/AP8AJgAJZgHs + GAABGwGZARwBcwNLAXMBHAHxFAABZgf/AfABbRcAAZkBcwF0AXkBmQGaAXoBUgExAVEBSwGZAgAB7AHr + AW0B6gETARUBEQEPBw4CAAFmAf8BbAHxArwB8wFDAbwBZgH3Ae0BrgQAA60BiwWGAmYBhgQAAXMBWAF6 + AZoBoAGaAXoBWQEyAjEBSgIAAewBmgF6AVgFUgFRAUsBKgJLAQ8CAAFmAf8BkQHsAv8BDQH/AbsBbAH0 + ARkBkQQAAa0C9ALzARkB8QIZAd0BCQGGBAABcwFZAXoBmgGgAZoBegFZATICMQFKAgAB7AGgApoEegFZ + AVMCUgExAUsBEQIAAWYB/wHxAf8C8AH/AfMBBwFmAhkBkQQAAa0B/weLAgkBhgQAAXMBWQF6AZoBoAGa + AXoBWQEyAjEBSgIAAewBGgGgApoDegJZAVMCUgEqAUMCAAFmAf8BvAP/AfQB/wG8AWwB/wEZAZEEAAGt + Af8C9ALzARkB8wEZAd0BCQGGBAABcwFZAXoBmgGgAZoBegFZATICMQFLAgAB7QHDAqACmgN6AlkBUwFS + ATEBFAIAAWYB/wHxAf8B8QHdAf8B8wEHAWYB8wEZAZEEAAGtAf8CiwH0AosCGQLdAYYEAAFzAVkBegGa + AaABmgF6AVkBMgIxAUsCAAHtAcMCoAKaBHoCWQFSATEBEgIAAWYB/wGRAe0C/wENAf8BvAFsAf8B8wGR + BAABrQL/AvQC8wIZAd0BGQGGBAABcwFZAXoBmgGgAZoBegFZATICMQFLAgABHAPDAaACmgR6AVkBUgEx + AeoCAAFmAf8BbQH/AvEB/wENAfIBZgL0AZEEAAHUBP8B9ALzARkB8QEZAYYEAAFzAVkBegGaAaABmgF6 + AVkBMgIxAUsCAAEcA8MCoAKaBHoBWQFSAesCAAFmAf8B8AX/AfABbQH/ARkBkQQAAdUB/wKLAfQB/wH0 + ARkB8wIZAYsEAAF0AVkBegGaAaABmgF6AVkBMgIxAUsCAAEcBcMCoAKaBHoB6wIACWYB7AH/ARkBkQQA + AdUB9gX/AfQB8wIZAYsEAAF0AVkBegGaAaABmgF6AVkBMgIxAW4CAAocBO0B8gQAAfAJ/wGRBAABtALV + Ac8GrQGLAa0EAAEcAXoBoATDAaABmgF6AVgBbgIAARwBGgLDAaABmgEcAfELAAQJAtwB1gTVBAABtAMJ + AdwD1gPVAa0EAAF0CsMBbgIAAfQFHAH0DAABCQIZAt0FCQHVBAABtQHVA7QCzgWtBAABGgKZAhoCwwIa + AZkBHAGZFQAFCQLcAdYB3AHWAdUUAAH/ARsBGgGZARwBdAFzAhwBmQEbAf8yACf/AksO/wHrAW0t/wGZ + AVIBSw3/AQcB7AFtGf8B9wtmCP8BdAFZATEBSwz/Au0CbQj/AfcLZgT/AfcB/wLyAfEC3QQJAWYI/wF0 + AVkBSw3/Au0BbQHyCP8B7wH/AvIB8QHwAbwDCQG1AWYE/wH3A/8E7AH/ARkBCQFmCP8BdAFZATEBSwz/ + Au0B6gFtCP8B7wH/AbwBBwG7AfQBuwK1ARkBtQFmBP8B9wT/A/QB/wEZAQkBZgj/AXQBWQExAUsM/wGS + Ae0B6wFtCP8BuwT/AvQDGQG1AWYE/wH3A/8E7AL/Ad0BZgj/AXQBWQFKDf8BkgHtAeoJ/wG7Af8DvAH/ + A7sBGQG7AWYE/wG1CP8B9AHdAWYH/wGZAXQBWQFKARwK/wH0Ae8B7QGSAeoB9wH0B/8Buwb/AvQBGQEH + AWYE/wHvA/8E7AH/AfQB8QFmBv8BmQF0AXoBMgExAUoBcwj/AfQB7wHsAe8B6wFtAeoB7AHzBv8BuwH/ + A7wB/wG8AQcBuwH0AQcBZgT/AbUJ/wHyAWYF/wGZAXQBegEyAVkCMQFKAXQH/wEHAe0BBwLsAesBbQHq + AZIG/wG7B/8C9AEZAWYE/wG7A/8E7AL/AfIBZgX/AZkBwwRZAjEBbgf/Ae8B8QGSAewCkgHrAW0B6wb/ + A9YC1QK0Ba0E/wG7Cv8BZgX/ARwBwwF6AVIBHAFZAjEBbgf/Ae8B8gHvAewCkgHrAW0B6wb/AdYBCQTc + AdYE1QGtBP8D1gG1BLQBzwOtBf8BmQHDAXoBSwHzARwCMQFzB/8B7wHzAe8B6gHzAZIB7AFtAewG/wXW + AdUDtAOtBP8B1gIJAtwB1gXVAa0F/wGZAcMBmgFSAUsDUgF0B/8BBwHzAfAB7AHqA+wB9xb/A9YBtQS0 + Ac8DrQb/AZkCwwGaAVkBUgF0CP8B9AEHAvMB8AGSAewBkgHzKf8BGgGZARwBdAGZC/8BvAHvAfcB7QHv + AfQF/wFCAU0BPgcAAT4DAAEoAwABQAMAATADAAEBAQABAQUAAYABARYAA/+BAAT/AYABHwL/AeABBwL/ + AYABHwL/AcABAwEAAQEBgAEDAcABAwHAAQMBAAEBAYABAwHAAQMBwAEDAQABAQGAAQMBwAEDAcABAwEA + AQEBgAEDAcABAwHAAQMBAAEBAYABAwHAAQMBwAEDAQABAQGAAQMBwAEDAcABAwEAAQEBgAEDAcABAwHA + AQMBAAEBAYABAwHAAQMBwAEDAQABAQGAAQMBwAEDAcABAwEAAQEB4AEDAcABAwHAAQMBAAH/AeABAwHA + AQMBwAEDAQEB/wHgAQMBwAEDAcABAwL/AeABAwL/AcABAwb/gAAL + + + + 119, 17 + + + 256, 17 + + + 89 + + + + + AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAC0Pj/A9P5/wLU9/8B2fr/BNr7/xPQ7v8kyOP/K8fi/xzC3f8Yxt7/Hr7W/wPk+v8B4fn/AuL6/wLi + /P8E5Pv/HqS+/xXh9f8S3vL/IsHe/zCUt/80j7T/LoSl/x6/3P8Y0uz/JrPY/xzQ7P8hxub/Hb/b/zR5 + qP8Zu+L/Bdv5/wHQ9v8D0/n/A9b4/wDa+/8C2vr/Hcvo/ybG4P8mzOT/JcHa/x3a8f8cprz/AuT5/wLj + +f8D4/r/A+P7/wPj+v8dlKz/KNzz/zKfvP83i6//M5e2/yK20/8X2vT/LbbU/yzA3v8V2Pb/Ctn4/yDC + 5f8V1vP/JajJ/yuOvP8byuv/BNP5/wTU+f8E1vn/ANr7/wPb+f8Q1+7/I8fi/yjE3f8uvtn/EOL2/yKZ + rv8G4/n/A+X6/wPl+P8N4/b/IsTW/xxOYf8WTFz/FTtR/yVSaP8tyN3/HdLo/yTA3P8Z3Pb/JcTg/x7G + 4/8I3Pr/DNv4/yK/4f8W2/L/Jomr/yqbw/8D1fn/A9b6/wPY+v8A2fr/ANr7/wzY8/8jyOH/IsDa/zSz + 0P8L4fn/KZSs/wXj+P8J5fj/G9fr/yZ4i/8ZVmv/HrrQ/xTe8/8V4vX/HLbJ/yFuhP8lrsP/CuH4/wrf + +P8hyeP/Jcfj/xnO6v8a0vH/J7LW/ya92/8qwdz/LZGw/wHY+f8B2vn/Ad35/wDb/P8A2vv/C932/yTA + 2/8lyOD/KrnT/wni+v8sjqj/C+H3/yLL4P8xfJP/Ho2g/xPi9P8F5/n/BOL6/wTj+v8E4/v/FeD0/x94 + jP8d0OL/MKTG/xfe9f8ow9v/HtHp/yHL5P8lxuL/NbXQ/yuiv/8ls8//A9f5/wPa+v8A2/j/ANv5/wLc + +v8L3fb/J8rf/ybH3v8ts8z/COP6/ymFm/8Y1Oz/LZKu/yagtP8J5ff/AeT7/wPn+f8C5vv/Beb6/wTl + +/8E4/r/G7HG/zqZsv82ssv/Isbe/ym71v8ext3/IsXe/yyJpv8wcZf/LH+h/yOuz/8B2fv/ANr6/wDc + +P8A3Pr/A935/xLW7f8lxtz/KMnd/y6nvv8G5Pr/Ioui/yHM4P8nvNb/C+j5/wTo9/8C5vn/CuX3/w7j + 9/8J5vr/C+f5/wnn+P8brb3/KsLX/zykvf8sv9X/KMTe/yW10/8upsb/MJG2/y5skv81r9T/JZm//wDa + +/8A2vv/ANv7/wHd+f8F4Pn/Ftnw/yfI3v8lzN7/MZqz/wfm+/8imK7/H8/i/wXl+v8B6vr/A+v7/wPp + +f8ixdX/G1pu/xp4iP8kaH3/KZCi/y2kuf8qxNj/L6C5/yWwzv8vnMT/LLDR/y6tz/8xmr//LoGf/yeG + pf8mgJ3/ANr7/wDZ+v8A2/z/Adz5/wLf+P8ezeb/Kb7Y/yrJ3/8skqv/BuX6/yKds/8Z1uf/Auf8/wHo + +/8B6Pr/Cun3/yOTpP8nna7/PqvD/zasyf8vscr/NX2X/zNui/81j7P/MJvC/y+fxP8ul7j/Kpe1/xm0 + zv8R4Pb/H8jl/y91o/8A2vv/ANv7/wHb/P8B3fn/BN/5/xrT6/8rv9n/MrvV/yaNpv8H5fr/J5Wr/xXZ + 6/8B5vv/AOf6/wbl+f8gu87/LGN0/zN5kf8siKD/Npy8/zC0zv8pwNj/L52//y+bw/8mhKv/JZa2/xbR + 5f8O4vf/CuP5/w3j+v8T3vb/KYi2/wDY+f8A2fr/ANr7/wHd+f8G3vb/Kb3Y/y261f80rcX/GKG7/wfj + +f8rg5r/DOL4/wjl+v8Q5Pj/Iaa5/zF9kP8fo7b/J5Sw/zSbuP8hv9f/DOH2/w/j9/8krcj/KI2w/xjL + 4f8L5Pj/DeX2/xfI3/8ZpsP/ILrV/wnj+P8smsH/ANn6/wDa+v8A2vv/Adz4/xDa8f8tsMz/LrbO/y2I + nv8U2fD/Hczg/yF8lv8L4/v/GdLk/xlqff8zkKf/N5Cq/zCds/8U4vT/D+H0/wnj9f8fvND/HpGt/xnD + 2v8L4vf/CeL5/xrO5f8gkbT/Ea7J/xHf8/8Z0ur/BuT5/yegwP8A2vv/ANv6/wDc+f8F3fr/Hsji/zCx + zv81qsX/I5Oo/w7k9/8db4T/ILXO/wTk+v8frsT/KpGl/zKetv8k2On/OpSt/y5/mP8Z1+v/CuT5/yWb + sf8O4vX/DuH6/xnH3/8gkrP/GrXS/w/e9v8C5fr/A+b7/xrP6/8G5vv/KKrI/wDa+P8B3fr/Ad77/wbd + 9/8ru9b/OarG/y6Rqf8Z3fD/IZCi/ydZcf8W2vP/BeD7/yCFm/8unbr/Hd/v/y6twv8wz+L/K6zC/yec + tP8O4fj/J8Td/w3i9f8gnb3/F7HT/w/c9/8I4fv/BeX7/wLl+/8D5/v/G9Ds/wXk+/8YsM7/Adr7/wDa + +/8A2/z/A936/yDA2/8xkqv/H9nw/yOYsP8ek6z/IbHI/xy0x/8Y2e3/IoKV/yCyx/8l2ef/MKO3/yXC + 2f8lvtH/J4ue/yGzzf8lxd//EN73/xu92/8F4vv/AOb7/wHn+v8B5fn/Aub7/wHm+v8Y0+v/CuP7/xXG + 4f8A2fr/ANr7/wDa+/8C2/r/CN31/xTb7/8fhpr/I7DE/wnf+P8Q3/f/KIae/xyGnf8Zvtb/D+Dz/zSQ + qv8yvtP/LKi//zSLov8kxNn/J5my/zKtyP8S4vj/HsDb/wTn+/8B6fv/Aej6/wLn+v8B5vv/Auj6/xLV + 6/8Q4Pb/Fd71/wDa+/8A2vv/ANr7/wHb+v8G2/n/GMTd/x7G3f8F4fj/AeT6/wPj+f8fqrz/I2N2/wri + 9/8F4/r/Gtfu/yORpv81ka//L3mV/xLg9f8Z3fD/OJav/xba7/8gwNn/Bun5/wLq+v8B6fn/Aun5/wLo + +/8B6Pj/D+P1/xPV6/8N4vf/ANr7/wDa+/8A2vv/ANz5/wHc+v8C4Pj/A+H3/wLg9/8A4/r/AuX6/xLj + 9v8sqsT/E+H4/wLm+f8E5fr/E97w/ySzzf87epn/H9Lm/wrm+P8oqL3/Hs/j/yLI3v8J6fj/Auv6/wHq + +P8C6/n/Auv7/wHq+v8G6Pj/G9Hq/wXl+v8A2vv/ANn6/wHa+/8B2/n/At/8/wTf+/8C4fj/AuL5/wHj + +v8B5Pn/CuP3/ytnfv8io7j/BeT6/wbn+/8T4PH/KMPX/zFwif8yt83/KMnc/yOitf8n0OL/G87i/wzp + 9/8E7vr/Auz4/wPu+/8B7Pr/Aer6/wLr+v8e0en/A+X6/wDZ+v8B2vv/ANn6/wDZ+v8B3vr/AN/7/wHh + +v8C5Pr/AuL7/wLl+v8U3vP/JGqC/y6Yrf8e2On/Duj3/wvn+P8a2On/KMbZ/y2JoP85qLr/LX6R/ybT + 4v8X2+3/Ednp/wPt+f8B7Pj/Ae35/wDr+f8B6vr/Aun5/xnU6v8J5fr/ANn6/wDY+v8A2Pr/ANn5/wDa + +v8C3Pv/At74/wLg9/8C4vv/A+b7/xnb8P8itc7/JKG0/0OTrP8wi5//HcbU/xDi8f8l0eL/K8XU/yuc + sP8gYXf/LcvZ/xbp9P8Wytz/BO76/wLt+f8B7Pj/AOv5/wHp+v8F6Pj/Etzv/xDd8P8B2vv/ANj6/wDX + +v8A2fr/Atr6/wTb+P8D3Pj/BOH2/wTj+/8C5vr/G7XI/x/S5/8fprv/SIWd/zN5j/8nZnn/Jdvr/zfA + 1f8xw9X/Oae5/yuFmP8uh5v/GeLt/yDD1/8H7vr/Bu75/wTt+P8E7Pn/Bun6/wvn+P8Z3PD/JLnS/wHa + +/8B2fv/Adn8/wDc+f8Pz+//J8bn/w3b9f8ixuD/Gdfw/wLl+f8ZoLP/GN7w/xrU5/8zcIb/J42j/xzg + 8v8kfIz/J3iL/yx5jf8si5//KZ+w/zuru/8c0Nv/Ir3P/xni7/8T2ur/ENDi/xbH2/8cvdb/Gb/Y/xrG + 3v8W1ej/ANn6/wLZ+f8E2fn/A9r5/wba+f8K2/j/Bd35/w3e9/8H4vn/AeX6/xnH3P8Zyt7/BeX5/xvY + 6f8N4/b/Bef5/wvo9/8K7Pn/D+vz/wvs9/8J7fj/LbTB/yXC0P8U2OX/FMXZ/xHV5/8R3ez/EOj1/w3q + +P8J6/j/B+r3/wbo9/8A2fr/Adn6/xPY9v8N0vD/Cdr4/wrc+P8F3vn/A+H6/wPk+/8C5vv/GNvy/xi/ + 1P8C5vn/Auf5/wPo+P8D6fn/Aer3/wHs+P8B7vj/A+35/wjt+f8isL7/KKO4/xrf6/8W4O7/GNfm/xTO + 3P8Vw9b/Fr/V/xy91f8hts//H7DK/wDa+/8Q1vb/No+v/x7H5f8vtdT/MKjG/xjV7f8ayuD/CeL3/wHk + +/8Z4fX/HrPJ/wXm+f8B5vr/AOj3/wHq9/8B7fj/AOz4/wHt+f8B7fn/Cu76/yWovP8Y2ej/FKzD/xav + x/8TtMr/FM7f/xTf8P8P5vf/DOf3/wro+P8J6fn/Adv8/xfO8P88kLL/Lp/A/zGTsv8ysc7/KrXN/zy7 + 0f8N5Pf/AuT6/w/j8/8qrMD/B+f5/wHp+/8A6Pn/Aer4/wHr+P8B7fn/Ae35/wPs+v8Y4O3/G7nL/wPt + +f8C7fj/A+v4/wLr+P8C6/j/Aur5/wLr+v8D6/r/Aej5/wLo+P8B2fr/Ctf4/yS62/8V0O7/Icrl/xjS + 6f8a0ur/JL3V/w3j+v8C5fv/Buf3/yWxwv8U5vb/Aer7/wLr+/8D6/r/Aev5/wLt+v8B7fj/Bur4/xuy + wf8Xytr/Auz4/wLs+f8C7Pn/AOv4/wHr+P8B6ff/Aer5/wHq9/8B6fj/Aef6/wLa+v8J2vj/Cdv4/wje + +f8H3/j/BOP6/wPj+f8K5Pn/Beb5/wHl+/8F5/n/HNDg/x23zP8D6vr/Aez3/wLr+f8B6/r/Aev6/wPs + +P8G6vj/HX+T/xPl8P8C6/j/Aez4/wLr+f8D7Pr/Auv5/wHq+P8C6/r/Auv5/wHp+v8C5/z/Fdb1/xvJ + 5/8mwd//Jcni/xzR6/8Y2vP/DOP6/xXc8P8J5vb/Aub7/wLn+v8I5vf/KKe8/xDk8v8C6vn/Aur7/wDq + +v8D7Pv/B+r4/xzL2f8duMj/A+r4/wHr+P8B6/j/Aer4/wDo9v8B6vj/Aen4/wLr+v8B6vj/AOf4/wLm + +/8budv/H77e/yfB4f84i6//JrrV/yaz0P8mzub/NbPP/xna7f8C5vv/Auf6/wPm+f8W3O3/Jpir/xPo + 9v8G6vj/C+r4/xPk8/8fsMP/JHyV/xPj8v8C6vr/Aev4/wHr+f8B6vn/Aen6/wTq/P8C5/v/Aej6/wHo + +v8A5Pn/AeP6/wTZ+v8O1fb/E9P1/yLH5v8S2fX/GMzq/xfP6P81oLr/Ftvv/wHk+v8B5vn/Auf6/wTn + +f8b1eX/KY6m/yOgt/8ghJz/In6U/xy0xf8T6fX/Buv4/wLr+/8A7Pn/AOv4/wLr+/8B6vv/Aef7/wHl + +/8B5/n/AOb5/wHm+f8C5fj/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + + + \ No newline at end of file diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_login.Designer.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_login.Designer.cs new file mode 100644 index 0000000..0425c30 --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_login.Designer.cs @@ -0,0 +1,253 @@ +namespace CsharpOSMeteorCodeGenerator +{ + partial class F_login + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows 窗体设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(F_login)); + this.label1 = new System.Windows.Forms.Label(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.comb_serverName = new System.Windows.Forms.ComboBox(); + this.label2 = new System.Windows.Forms.Label(); + this.combx_servertype = new System.Windows.Forms.ComboBox(); + this.label3 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.comb_Authentication = new System.Windows.Forms.ComboBox(); + this.comb_UserName = new System.Windows.Forms.ComboBox(); + this.txt_PassWord = new System.Windows.Forms.TextBox(); + this.btn_Connection = new System.Windows.Forms.Button(); + this.btn_Cancel = new System.Windows.Forms.Button(); + this.check_Remember = new System.Windows.Forms.CheckBox(); + this.pictureBox2 = new System.Windows.Forms.PictureBox(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(15, 133); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(65, 12); + this.label1.TabIndex = 0; + this.label1.Text = "ServeName:"; + // + // pictureBox1 + // + this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image"))); + this.pictureBox1.Location = new System.Drawing.Point(1, -3); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(533, 87); + this.pictureBox1.TabIndex = 2; + this.pictureBox1.TabStop = false; + // + // comb_serverName + // + this.comb_serverName.FormattingEnabled = true; + this.comb_serverName.Items.AddRange(new object[] { + ".", + "(local)"}); + this.comb_serverName.Location = new System.Drawing.Point(191, 133); + this.comb_serverName.Name = "comb_serverName"; + this.comb_serverName.Size = new System.Drawing.Size(298, 20); + this.comb_serverName.TabIndex = 3; + this.comb_serverName.Text = "."; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(15, 105); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(65, 12); + this.label2.TabIndex = 0; + this.label2.Text = "ServeType:"; + // + // combx_servertype + // + this.combx_servertype.Enabled = false; + this.combx_servertype.FormattingEnabled = true; + this.combx_servertype.Items.AddRange(new object[] { + "database engine"}); + this.combx_servertype.Location = new System.Drawing.Point(191, 105); + this.combx_servertype.Name = "combx_servertype"; + this.combx_servertype.Size = new System.Drawing.Size(298, 20); + this.combx_servertype.TabIndex = 4; + this.combx_servertype.Text = "database engine"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(15, 161); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(95, 12); + this.label3.TabIndex = 0; + this.label3.Text = "Authentication:"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(30, 197); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(59, 12); + this.label4.TabIndex = 0; + this.label4.Text = "UserName:"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(30, 222); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(59, 12); + this.label5.TabIndex = 0; + this.label5.Text = "Password:"; + // + // comb_Authentication + // + this.comb_Authentication.FormattingEnabled = true; + this.comb_Authentication.Items.AddRange(new object[] { + "Windows Authentication", + "Sql Server Authentication"}); + this.comb_Authentication.Location = new System.Drawing.Point(191, 161); + this.comb_Authentication.Name = "comb_Authentication"; + this.comb_Authentication.Size = new System.Drawing.Size(298, 20); + this.comb_Authentication.TabIndex = 3; + this.comb_Authentication.SelectedIndexChanged += new System.EventHandler(this.comb_Authentication_SelectedIndexChanged); + // + // comb_UserName + // + this.comb_UserName.FormattingEnabled = true; + this.comb_UserName.Items.AddRange(new object[] { + "sa"}); + this.comb_UserName.Location = new System.Drawing.Point(206, 189); + this.comb_UserName.Name = "comb_UserName"; + this.comb_UserName.Size = new System.Drawing.Size(283, 20); + this.comb_UserName.TabIndex = 3; + this.comb_UserName.Text = "sa"; + // + // txt_PassWord + // + this.txt_PassWord.Location = new System.Drawing.Point(206, 219); + this.txt_PassWord.Name = "txt_PassWord"; + this.txt_PassWord.Size = new System.Drawing.Size(283, 21); + this.txt_PassWord.TabIndex = 5; + // + // btn_Connection + // + this.btn_Connection.Location = new System.Drawing.Point(204, 293); + this.btn_Connection.Name = "btn_Connection"; + this.btn_Connection.Size = new System.Drawing.Size(75, 23); + this.btn_Connection.TabIndex = 6; + this.btn_Connection.Text = "Connection"; + this.btn_Connection.UseVisualStyleBackColor = true; + this.btn_Connection.Click += new System.EventHandler(this.btn_Connection_Click); + // + // btn_Cancel + // + this.btn_Cancel.Location = new System.Drawing.Point(311, 293); + this.btn_Cancel.Name = "btn_Cancel"; + this.btn_Cancel.Size = new System.Drawing.Size(75, 23); + this.btn_Cancel.TabIndex = 6; + this.btn_Cancel.Text = "Cancel"; + this.btn_Cancel.UseVisualStyleBackColor = true; + this.btn_Cancel.Click += new System.EventHandler(this.btn_Cancel_Click); + // + // check_Remember + // + this.check_Remember.AutoSize = true; + this.check_Remember.Location = new System.Drawing.Point(206, 254); + this.check_Remember.Name = "check_Remember"; + this.check_Remember.Size = new System.Drawing.Size(150, 16); + this.check_Remember.TabIndex = 7; + this.check_Remember.Text = "Remember the password"; + this.check_Remember.UseVisualStyleBackColor = true; + // + // pictureBox2 + // + this.pictureBox2.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox2.Image"))); + this.pictureBox2.Location = new System.Drawing.Point(14, 280); + this.pictureBox2.Name = "pictureBox2"; + this.pictureBox2.Size = new System.Drawing.Size(489, 4); + this.pictureBox2.TabIndex = 8; + this.pictureBox2.TabStop = false; + // + // F_login + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoSize = true; + this.ClientSize = new System.Drawing.Size(525, 327); + this.Controls.Add(this.pictureBox2); + this.Controls.Add(this.check_Remember); + this.Controls.Add(this.btn_Cancel); + this.Controls.Add(this.btn_Connection); + this.Controls.Add(this.txt_PassWord); + this.Controls.Add(this.combx_servertype); + this.Controls.Add(this.comb_UserName); + this.Controls.Add(this.comb_Authentication); + this.Controls.Add(this.comb_serverName); + this.Controls.Add(this.pictureBox1); + this.Controls.Add(this.label2); + this.Controls.Add(this.label5); + this.Controls.Add(this.label4); + this.Controls.Add(this.label3); + this.Controls.Add(this.label1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.ImeMode = System.Windows.Forms.ImeMode.On; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "F_login"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Connect to the database engine"; + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.ComboBox comb_serverName; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.ComboBox combx_servertype; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.ComboBox comb_Authentication; + private System.Windows.Forms.ComboBox comb_UserName; + private System.Windows.Forms.TextBox txt_PassWord; + private System.Windows.Forms.Button btn_Connection; + private System.Windows.Forms.Button btn_Cancel; + private System.Windows.Forms.CheckBox check_Remember; + private System.Windows.Forms.PictureBox pictureBox2; + + } +} + diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_login.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_login.cs new file mode 100644 index 0000000..07a6499 --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_login.cs @@ -0,0 +1,118 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using ICSharpCode.TextEditor; +using ICSharpCode.TextEditor.Document; +using System.Data.SqlClient; + + +namespace CsharpOSMeteorCodeGenerator +{ + public partial class F_login : Form + { + private SqlConnectionStringBuilder connBuilder; + public F_login() + { + InitializeComponent(); + comb_Authentication.SelectedIndex = 0; + connBuilder = new SqlConnectionStringBuilder(); + } + public bool AuthenticationIsWindows = false; + private bool sucess = false; + F_Main fr = null; + private void btn_Connection_Click(object sender, EventArgs e) + { + if (!string.IsNullOrEmpty(comb_serverName.Text)) + { + connBuilder.DataSource = comb_serverName.Text; + connBuilder.PersistSecurityInfo = true; + if (!AuthenticationIsWindows) + { + connBuilder.UserID = comb_UserName.Text; + connBuilder.Password = txt_PassWord.Text; + } + else + { + connBuilder.IntegratedSecurity = true; + } + try + { + //两种连接方式 + //Data Source=.;Integrated Security=True;Persist Security Info=True + //Data Source=.;Persist Security Info=True;User ID=sa;Password= + using (SqlConnection dbConnection = new SqlConnection(connBuilder.ConnectionString)) + { + dbConnection.Open(); + DataTable tempDataTable = dbConnection.GetSchema(SqlClientMetaDataCollectionNames.Databases); + //DataTable tempDataTable = dbConnection.GetSchema("Databases"); //和相同效果 + //cmbDatabase.DataSource = tempDataTable; + //cmbDatabase.DisplayMember = tempDataTable.Columns["database_name"].ColumnName; + //cmbDatabase.ValueMember = tempDataTable.Columns["database_name"].ColumnName; + //MessageBox.Show("Connected successfully!", "Connected", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); + dbConnection.Close(); + } + Model.EModel.connBuilder = connBuilder; + if (fr == null) + { + fr = new F_Main(); + this.Hide(); + fr.Show(); + } + else { + fr.Close(); + } + sucess = true; + //cmbDatabase.Enabled = sucess; + } + catch (SqlException) + { + txt_PassWord.Text = String.Empty; + connBuilder.Clear(); + MessageBox.Show("Connection failed", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + else + { + connBuilder.Clear(); + MessageBox.Show("Please select a server", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void btn_Cancel_Click(object sender, EventArgs e) + { + System.Environment.Exit(0); + } + + private void comb_Authentication_SelectedIndexChanged(object sender, EventArgs e) + { + if (string.IsNullOrEmpty(this.comb_Authentication.Text)) + { + return; + } + if (this.comb_Authentication.Text == "Windows Authentication") + { + this.comb_UserName.Enabled = false; + this.txt_PassWord.Enabled = false; + this.check_Remember.Checked = false; + this.check_Remember.Enabled = false; + AuthenticationIsWindows = true; + } + else if (this.comb_Authentication.Text == "Sql Server Authentication") + { + + this.comb_UserName.Enabled = true; + this.txt_PassWord.Enabled = true; + this.check_Remember.Enabled = true; + AuthenticationIsWindows = false; + } + else { + return; + } + } + } +} diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_login.resx b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_login.resx new file mode 100644 index 0000000..28a5aa8 --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/F_login.resx @@ -0,0 +1,609 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + AAD4+PgjwbCkWq2Yisipk4T/p5GC/6SOf/+ijHz/n4l5/5yFdf+ZgnL/lX5u/5J7af+Od2X/kXpoyKqZ + jlr4+Pgj+Pj4I/j4+CP4+Pgj+Pj4I/j4+CP4+Pgj+Pj4I/X19Rr///8IAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAMa4rVq5r56DramR1a+mkP+3ppX/s6OY/6SgmP+inpb/rZ2Q/7GajP+ul4f/q5OD/6iO + fv+njn3WqZSEg5yqjlp6yY5abNeQWmzXkFps15BabNeQWmzXkFps15Bac9uXR53otCL///8M////BAAA + AAAAAAAAAAAAAAAAAAAAAAAAt6OVyLSwmNWuw53xus2p/9XPvP/Pzcj/p8fP/6fGz//Nysb/4Mu//97H + uv/cw7X/2r6u/8msnfKmjXzWfI9qyFC5a8g7zmzIO85syDvObMg7zmzIO85syDvObMhK0Xeii+GpVv// + /yT///8MAAAAAAAAAAAAAAAAAAAAAAAAAAC3opP/ubGc/73Qrf/O4sD/6ubV/+Xl5P++4e3/u97p/9zb + 2f/s2c//69XK/+nRxP/nzL7/0LSl/6OJeP97hWPvTrFlzzPMZb8zzGW/M8xlvzPMZb8zzGW/M8xlv0HP + caxq2I+EjuKrWKzlvyj///8M////BAAAAAAAAAAAAAAAALunmf/Ftqb/2tPB/+rm1f/06+H/9O7q/+fu + 7//f5OX/29DK/9fEuv/VwLX/0ryx/8+4rP+9ppj/nYV0/4Z7Ys9lmmNvMc5lPzHOZT8xzmU/Mc5lPzHO + ZT8xzmU/O8xrZEHPcaxP03uojuKrWP///yT///8MAAAAAAAAAAAAAAAAwK2fyMy5rdXhzsLx69nP/+vd + 1P/r39j/6t/Z/+HUzf/OvrT/w7Ck/8CsoP+8qJv/uaSX/66Yi/Kch3bWknpplo96ZjIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAxzmU/M8xlv0DOb86D3qJr+fn5K////w4AAAAAAAAAAAAAAADPwbVazr+zg9C9 + sNXPvK//zbuu/8q5rP/Htar/wa6j/7iklv+xnI7/rJeI/6iSg/+kjn7/oo191qeUhIOrnI1DrpeLFgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAADHOZT8zzGW/Pc5uynbcll////8f////CgAAAAAAAAAAAAAAAMm4 + rVrMr56DzqeS1c2kjf/Loor/yJ+H/8Sbg//Al3//vJJ7/7aNdv+xiHH/q4Ns/6Z+Z/+kf2nWq457g7Wj + lEXBsKcd////CP///wj///8I////CP///wj///8IRdBxRjTLZsI9zm7KdtyWX/f39yLw8PAR////CP// + /wj///8IuqKVyMaeiNXalXHx5ZJo/+WSaP/kkWf/4o9l/9+NY//aiWD/1IVd/86AWf/He1X/v3ZR/7N1 + VPKjfGTWnINxnbWjlEX19fUa9fX1GvX19Rr19fUa9fX1GvX19Rpf14dTOcxrxkDOb86D3qJr+vr6Mff3 + 9yL19fUa9fX1GvX19Rq6oZP/x5uE/+OPZv/zi1j/9Y5a//aOWv/1jVn/8otY/+6IVv/ohFP/4YBQ/9l6 + TP/QdUj/vnRO/6N4X/+Zf27Isp+QWt/U1DC/tatMuKqhWriqoVq1p5xasJ+TWnuneYNSsmjWVrJq3Iis + hZS1ophrrJaMX6SOglqfjoJanI6CWr6lmP/Mn4n/6JNq//mQXP/7lGD//JZh//yVYP/6k17/+I9b//OL + WP/shlT/44FQ/9l6TP/FeFH/pXpg/5p/bsiyn5Bav7WrTKiXi5+jkYTIo5GEyJ+LfsiWfnDIiHxl1neB + YPJ2gF/0hXhi3I1wYs6La13Kh2payIFqWsh+aFrIwaqd/9Ckjf/smG3//ZVh//+baP//nWr//5xo//+Z + Zv/9lmH/+pFd//SMWf/shlT/4YBQ/8t8VP+ofGL/m4FvyLKfkFq4raRao5KHyKSShv+sm4//rZmM/6aM + ff+hhXX/noNy/52BcP+df27/k4Bo/3+GXP92f1X/d2tT/3hhUv/FrqP/06iS/++ccf//mmb//6Bx//+j + df//onL//59u//+caf/9l2P/+pFd//OLWP/ohFP/0IBX/6t/ZP+dg3HIsqGTWritp1qjkovIrJyT/8W2 + rv/QvbP/zbGj/8yrnP/Nq5z/zKuc/8upmv+stIn/cctr/125Wf9ufFL/dl1P/8izqP/WrZf/8aB2//+e + bP//p3r//6p///+ofP//pXf//6Fw//+caf/9lmH/+I9b/+6IVv/Vg1n/roFm/56Ec8i1oZNauK2nWqOU + jcixo5z/1cnC/+bWzv/my77/5sa3/+jHuf/px7n/6Me4/8nRp/+M5Yf/b8tt/3SCWf92Xk//zLiu/9ix + nf/ypHv//6Ny//+tg///sYn//66F//+qf///pXf//59u//+ZZv/6k17/8otY/9mGW/+xg2j/n4Z1yLWk + llq4sKpao5aPyLOoof/b083/7+Pc/+/Zzv/w1Mf/8NXI//LWyf/01sr/6NbB/83Vrv+uuJD/in9n/3di + U//PvbT/27ai//OngP//pHX//6yB//+uhP//q4D//6Z6//6hcv/8m2v/+pZj//WPXP/uiFb/14Vb/7GD + af+iiHbIuKSWWriwqlqjmJHItauk/97Y1P/06+X/9eLY//Xd0v/13tL/997T//vg1f/32tD/7s7D/82w + o/+WfnH/emZX/9PDuv/eu6j/9KuF//+kdP//pHT//6Jy//+ebP/+mWf/+pRi//WQXv/vi1n/6YVU/+GA + UP/Nf1f/r4Nq/6OKeci4pJlau7KtWqSaksi2rab/3trW//Tt5//25dv/9+HW//fh1//44tj/++PZ//fd + 0//s0cX/zbKm/5iCdP9+alv/1si/yODAr9XtspPx9KuF//Snf//zo3r/8p50/++ab//qlWv/5ZFn/96M + ZP/XiGD/0INc/8OCYfKwiHDWqJCAn7+upEy7sq1appuVyLatqP/d2tb/8u3p//Xn4P/25dz/9uTc//fl + 3f/55t7/9eHY/+zWy//PuKz/nYh7/4RwYv/d1Mxa3si9g+DAr9Xfu6n/3Laj/9mxnf/XrZf/06iS/8+j + jf/Ln4j/xpqE/8GWf/+9knv/upN91rucioO/rqRM39TPMLuysFqnm5bItq2o/9zY1P/w7Oj/8url//Pp + 4//z6eP/8+jj//Po4//x5d7/7N3V/9PBt/+kkYT/jHhq//X19Rri19BH2cvDotbHv9DSwbnQz7y00My5 + r9DJtKnQxbCk0MKrn9C/qJvQu6SW0Legk9C5o5WiybesR/b29hz39/cgu7KwWqablsi0q6b/2NPO/+nk + 3//o4Nv/593X/+bc1v/l29X/5NrU/+LW0P/e0Mj/ybmu/6SRg/+RfW7/////COjh4SLn3thW5t3WcOPY + 03Dh1s9w39PNcN3RynDazcZw2MrEcNbIwXDTxr9w08S9cNPEvlbZysoi7u7uD/b29hy4srBapJqWyLGo + ov/SysT/39XO/9bJwP/Rwrj/0MC2/86+s//Lu7H/x7ar/8Gvov+zoJL/nYl6/5J9bv8AAAAA////DP// + /yT///8w////MP///zD///8w////MP///zD///8w////MP///zD///8w////JP///wz///8I9fX1Gruy + sFqmm5jIs6ql/9bOyf/j2tP/2s3F/9XGvf/TxLv/0cK5/8/At//Lu7H/xLSo/7akmP+fjH//lIBy/wAA + AAD///8E////DP///xD///8Q////EP///xD///8Q////EP///xD///8Q////EP///xD///8M////BP// + /wj19fUau7WyWqifm8i5sq7/49/c//bz8P/z7er/8erm//Hq5v/w6eb/7+nm/+3m4v/o4Nr/0se//6uc + k/+Whnz/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA////CPX19Rq+uLJaqaKdyLu0r//j39z/9/Pw//Xw7P/07ur/8+3p//Ls6f/x7Oj/7+nl/+vk + 3v/Wy8T/r6GX/5uLgf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAD///8I9fX1Gr64slqrop3It66p/9fOyP/l29T/39TM/9zQx//azsX/2MvC/9XI + wP/RxLz/zsC2/8Gyp/+smo7/oY2B/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wj19fUavri1Wqyjn8i4r6r/187H/+PY0f/d0Mf/2crA/9fH + vP/Uw7j/0b+z/826rv/Is6f/vaib/62Yi/+lkIL/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////CPX19RrBu7haraajyL22s//i3dn/8uvn/+3i + 3P/q29P/6dfO/+fTyf/m0MT/4si8/9q+r//Kr6D/s5yP/6eShv8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8I9fX1GsO+u1qxq6jIwby6/+fl + 4//59fP/9e3p//Ln4f/y49z/8eDX//Hd0//t1sv/5sq9/9S5rP+4opb/qpaL/wAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wj19fUaxsPBWrax + rsjFwb7/5+bk//f19P/z8O7/8e3q//Lr5//y6eT/8efh/+/i2//r2tL/2se+/72rof+unJH/AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////CPX1 + 9RrJxsNaurayyMO/vP/Z19X/4uDf/93c2v/b2db/3NjV/9zX1P/d19T/3dXR/9vQy//Qw7z/u6yk/7Gh + mP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD///8I9fX1GszJxlq+ubXIvbi0/7+6t/+9uLX/trCu/7Ksqf+xq6f/sqyo/7WvrP+3sK3/uK+r/7et + p/+0qKH/s6We/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAP///wj19fUaz8nGWsC7tsi6tLD/sqyo/6qjoP+im5j/nZaT/5uUkf+dlpL/oZuY/6Se + m/+mn5v/qqKd/7Gmn/+1qKH/wAP//4AB//8AAAD/AAAAfwAA/z8AAP8/gAH/P4AB/z8AAP8/AAD+HwAA + wAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAgAHAAMADwAD//8AA///AAP//wAD//8AA///AAP// + wAD//8AA///AAP//wAD//8AA///AAP//wAA= + + + \ No newline at end of file diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Form1Test.Designer.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Form1Test.Designer.cs new file mode 100644 index 0000000..8188b60 --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Form1Test.Designer.cs @@ -0,0 +1,60 @@ +namespace CsharpOSMeteorCodeGenerator +{ + partial class Form1Test + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.button1 = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // button1 + // + this.button1.Location = new System.Drawing.Point(21, 227); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(75, 23); + this.button1.TabIndex = 0; + this.button1.Text = "button1"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // Form1Test + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(284, 262); + this.Controls.Add(this.button1); + this.Name = "Form1Test"; + this.Text = "Form1Test"; + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Button button1; + } +} \ No newline at end of file diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Form1Test.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Form1Test.cs new file mode 100644 index 0000000..e64588d --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Form1Test.cs @@ -0,0 +1,472 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Reflection; +using System.Reflection.Emit; +using System.IO; +using System.CodeDom.Compiler; +using Microsoft.CSharp; +using System.CodeDom; +using System.Threading; + +namespace CsharpOSMeteorCodeGenerator +{ + public partial class Form1Test : Form + { + public Form1Test() + { + InitializeComponent(); + } + + private void button1_Click(object sender, EventArgs e) + { + DynamicCreateType1(); + DynamicCreateType(); + COdedongtai(); + codeDongtai2(); + //Test(); + ////动态创建的类类型 + //Type classType = DynamicCreateType(); + ////调用有参数的构造函数 + //Type[] ciParamsTypes = new Type[] { typeof(string) }; + //object[] ciParamsValues = new object[] { "Hello World" }; + //ConstructorInfo ci = classType.GetConstructor(ciParamsTypes); + //object Vector = ci.Invoke(ciParamsValues); + ////调用方法 + //object[] methedParams = new object[] { }; + //MessageBox.Show(classType.InvokeMember("get_Field", BindingFlags.InvokeMethod, null, Vector, methedParams).ToString()); + ////Console.ReadKey(); + } + //动态创建的动态类型 + public static Type DynamicCreateType() + { + //动态创建程序集 + AssemblyName DemoName = new AssemblyName("OSMeteorAssemblyDB"); + AssemblyBuilder dynamicAssembly = AppDomain.CurrentDomain.DefineDynamicAssembly(DemoName, AssemblyBuilderAccess.RunAndSave); + //动态创建模块 + AssemblyName aName = new AssemblyName("DynamicAssemblyExample"); + ModuleBuilder mb = dynamicAssembly.DefineDynamicModule(DemoName.Name, DemoName.Name + ".dll"); + + //ModuleBuilder modBuild = dynamicAssembly.DefineDynamicModule("ModuleOne", "NestedEnum.dll"); + //动态创建类MyClass + TypeBuilder Ptb = mb.DefineType("Eneity", TypeAttributes.Public); + //TypeBuilder tb = mb.DefineType("table", TypeAttributes.Public); + TypeBuilder tb = Ptb.DefineNestedType("Table1", TypeAttributes.NestedPublic | TypeAttributes.Sealed, null); + + //动态创建字段 + FieldBuilder fb = tb.DefineField("myField", typeof(System.String), FieldAttributes.Private); + //动态创建构造函数 + Type[] clorType = new Type[] { typeof(System.String) }; + ConstructorBuilder cb1 = tb.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, clorType); + //生成指令 + ILGenerator ilg = cb1.GetILGenerator();//生成 Microsoft 中间语言 (MSIL) 指令 + ilg.Emit(OpCodes.Ldarg_0); + ilg.Emit(OpCodes.Call, typeof(object).GetConstructor(Type.EmptyTypes)); + ilg.Emit(OpCodes.Ldarg_0); + ilg.Emit(OpCodes.Ldarg_1); + ilg.Emit(OpCodes.Stfld, fb); + ilg.Emit(OpCodes.Ret); + //动态创建属性 + PropertyBuilder pb = tb.DefineProperty("MyProperty", PropertyAttributes.HasDefault, typeof(string), null); + //动态创建方法 + MethodAttributes getSetAttr = MethodAttributes.Public | MethodAttributes.SpecialName; + MethodBuilder myMethod = tb.DefineMethod("get_Field", getSetAttr, typeof(string), Type.EmptyTypes); + //生成指令 + ILGenerator numberGetIL = myMethod.GetILGenerator(); + numberGetIL.Emit(OpCodes.Ldarg_0); + numberGetIL.Emit(OpCodes.Ldfld, fb); + numberGetIL.Emit(OpCodes.Ret); + //使用动态类创建类型 + Type classType1 = Ptb.CreateType(); + Type classType = tb.CreateType(); + //保存动态创建的程序集 (程序集将保存在程序目录下调试时就在Debug下) + dynamicAssembly.Save(DemoName.Name + ".dll"); + + //创建类 + return classType; + } + //动态创建的动态类型 + public static Type DynamicCreateType1() + { + //动态创建程序集 + AssemblyName DemoName = new AssemblyName("DynamicAssembly"); + AssemblyBuilder dynamicAssembly = AppDomain.CurrentDomain.DefineDynamicAssembly(DemoName, AssemblyBuilderAccess.RunAndSave); + //动态创建模块 + ModuleBuilder mb = dynamicAssembly.DefineDynamicModule(DemoName.Name, DemoName.Name + ".dll"); + //动态创建类MyClass + TypeBuilder tb = mb.DefineType("MyClass", TypeAttributes.Public); + //动态创建字段 + FieldBuilder fb = tb.DefineField("myField", typeof(System.String), FieldAttributes.Private); + //动态创建构造函数 + Type[] clorType = new Type[] { typeof(System.String) }; + ConstructorBuilder cb1 = tb.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, clorType); + //生成指令 + ILGenerator ilg = cb1.GetILGenerator();//生成 Microsoft 中间语言 (MSIL) 指令 + ilg.Emit(OpCodes.Ldarg_0); + ilg.Emit(OpCodes.Call, typeof(object).GetConstructor(Type.EmptyTypes)); + ilg.Emit(OpCodes.Ldarg_0); + ilg.Emit(OpCodes.Ldarg_1); + ilg.Emit(OpCodes.Stfld, fb); + ilg.Emit(OpCodes.Ret); + //动态创建属性 + PropertyBuilder pb = tb.DefineProperty("MyProperty", PropertyAttributes.HasDefault, typeof(string), null); + //动态创建方法 + MethodAttributes getSetAttr = MethodAttributes.Public | MethodAttributes.SpecialName; + MethodBuilder myMethod = tb.DefineMethod("get_Field", getSetAttr, typeof(string), Type.EmptyTypes); + //生成指令 + ILGenerator numberGetIL = myMethod.GetILGenerator(); + numberGetIL.Emit(OpCodes.Ldarg_0); + numberGetIL.Emit(OpCodes.Ldfld, fb); + numberGetIL.Emit(OpCodes.Ret); + //使用动态类创建类型 + Type classType = tb.CreateType(); + //保存动态创建的程序集 (程序集将保存在程序目录下调试时就在Debug下) + dynamicAssembly.Save(DemoName.Name + ".dll"); + //创建类 + return classType; + } + public class CodeGenerator + { + AssemblyBuilder myAssemblyBuilder; + public CodeGenerator() + { + // Get the current application domain for the current thread. + AppDomain myCurrentDomain = AppDomain.CurrentDomain; + AssemblyName myAssemblyName = new AssemblyName(); + myAssemblyName.Name = "TempAssembly"; + + // Define a dynamic assembly in the current application domain. + myAssemblyBuilder = myCurrentDomain.DefineDynamicAssembly + (myAssemblyName, AssemblyBuilderAccess.Run); + + // Define a dynamic module in this assembly. + ModuleBuilder myModuleBuilder = myAssemblyBuilder. + DefineDynamicModule("TempModule"); + + // Define a runtime class with specified name and attributes. + TypeBuilder myTypeBuilder = myModuleBuilder.DefineType + ("TempClass", TypeAttributes.Public); + + // Add 'Greeting' field to the class, with the specified attribute and type. + FieldBuilder greetingField = myTypeBuilder.DefineField("Greeting", + typeof(String), FieldAttributes.Public); + Type[] myMethodArgs = { typeof(String) }; + + // Add 'MyMethod' method to the class, with the specified attribute and signature. + MethodBuilder myMethod = myTypeBuilder.DefineMethod("MyMethod", + MethodAttributes.Public, CallingConventions.Standard, null, myMethodArgs); + + ILGenerator methodIL = myMethod.GetILGenerator(); + methodIL.EmitWriteLine("In the method..."); + methodIL.Emit(OpCodes.Ldarg_0); + methodIL.Emit(OpCodes.Ldarg_1); + methodIL.Emit(OpCodes.Stfld, greetingField); + methodIL.Emit(OpCodes.Ret); + myTypeBuilder.CreateType(); + } + public AssemblyBuilder MyAssembly + { + get + { + return this.myAssemblyBuilder; + } + } + } + public void COdedongtai() { + CodeGenerator myCodeGenerator = new CodeGenerator(); + // Get the assembly builder for 'myCodeGenerator' object. + AssemblyBuilder myAssemblyBuilder = myCodeGenerator.MyAssembly; + // Get the module builder for the above assembly builder object . + ModuleBuilder myModuleBuilder = myAssemblyBuilder. + GetDynamicModule("TempModule"); + MessageBox.Show("The fully qualified name and path to this " + + "module is :" + myModuleBuilder.FullyQualifiedName); + Type myType = myModuleBuilder.GetType("TempClass"); + MethodInfo myMethodInfo = + myType.GetMethod("MyMethod"); + // Get the token used to identify the method within this module. + MethodToken myMethodToken = + myModuleBuilder.GetMethodToken(myMethodInfo); + MessageBox.Show(String.Format("Token used to identify the method of 'myType'" + + " within the module is {0:x}", myMethodToken.Token)); + object[] args = { "Hello." }; + object myObject = Activator.CreateInstance(myType, null, null); + myMethodInfo.Invoke(myObject, args); + } + public void codeDongtai2() { + AssemblyName aName = new AssemblyName("DynamicAssemblyExample"); + AssemblyBuilder ab = + AppDomain.CurrentDomain.DefineDynamicAssembly( + aName, + AssemblyBuilderAccess.RunAndSave); + + + // For a single-module assembly, the module name is usually + // the assembly name plus an extension. + ModuleBuilder mb = + ab.DefineDynamicModule(aName.Name, aName.Name + ".dll"); + //利用AssemblyBuilder创建ModuleBuilder + ModuleBuilder newModule = ab.DefineDynamicModule("SayHello"); + //创建一个公共类MySayHello + //TypeBuilder myType = newModule.DefineType("MySayHello", TypeAttributes.Public | TypeAttributes.Class); + + + //TypeBuilder tb = mb.DefineType( + // "MyDynamicType", + // TypeAttributes.Public); + + TypeBuilder tb = mb.DefineType( + "MyDynamicType", + TypeAttributes.Public); + // Add a private field of type int (Int32). + FieldBuilder fbNumber = tb.DefineField( + "m_number", + typeof(int), + FieldAttributes.Private); + + // Define a constructor that takes an integer argument and + // stores it in the private field. + Type[] parameterTypes = { typeof(int) }; + ConstructorBuilder ctor1 = tb.DefineConstructor( + MethodAttributes.Public, + CallingConventions.Standard, + parameterTypes); + + ILGenerator ctor1IL = ctor1.GetILGenerator(); + // For a constructor, argument zero is a reference to the new + // instance. Push it on the stack before calling the base + // class constructor. Specify the default constructor of the + // base class (System.Object) by passing an empty array of + // types (Type.EmptyTypes) to GetConstructor. + ctor1IL.Emit(OpCodes.Ldarg_0); + ctor1IL.Emit(OpCodes.Call, + typeof(object).GetConstructor(Type.EmptyTypes)); + // Push the instance on the stack before pushing the argument + // that is to be assigned to the private field m_number. + ctor1IL.Emit(OpCodes.Ldarg_0); + ctor1IL.Emit(OpCodes.Ldarg_1); + ctor1IL.Emit(OpCodes.Stfld, fbNumber); + ctor1IL.Emit(OpCodes.Ret); + + // Define a default constructor that supplies a default value + // for the private field. For parameter types, pass the empty + // array of types or pass null. + ConstructorBuilder ctor0 = tb.DefineConstructor( + MethodAttributes.Public, + CallingConventions.Standard, + Type.EmptyTypes); + + ILGenerator ctor0IL = ctor0.GetILGenerator(); + // For a constructor, argument zero is a reference to the new + // instance. Push it on the stack before pushing the default + // value on the stack, then call constructor ctor1. + ctor0IL.Emit(OpCodes.Ldarg_0); + ctor0IL.Emit(OpCodes.Ldc_I4_S, 42); + ctor0IL.Emit(OpCodes.Call, ctor1); + ctor0IL.Emit(OpCodes.Ret); + + // Define a property named Number that gets and sets the private + // field. + // + // The last argument of DefineProperty is null, because the + // property has no parameters. (If you don't specify null, you must + // specify an array of Type objects. For a parameterless property, + // use the built-in array with no elements: Type.EmptyTypes) + PropertyBuilder pbNumber = tb.DefineProperty( + "Number", + PropertyAttributes.HasDefault, + typeof(int), + null); + + // The property "set" and property "get" methods require a special + // set of attributes. + MethodAttributes getSetAttr = MethodAttributes.Public | + MethodAttributes.SpecialName | MethodAttributes.HideBySig; + + // Define the "get" accessor method for Number. The method returns + // an integer and has no arguments. (Note that null could be + // used instead of Types.EmptyTypes) + MethodBuilder mbNumberGetAccessor = tb.DefineMethod( + "get_Number", + getSetAttr, + typeof(int), + Type.EmptyTypes); + + ILGenerator numberGetIL = mbNumberGetAccessor.GetILGenerator(); + // For an instance property, argument zero is the instance. Load the + // instance, then load the private field and return, leaving the + // field value on the stack. + numberGetIL.Emit(OpCodes.Ldarg_0); + numberGetIL.Emit(OpCodes.Ldfld, fbNumber); + numberGetIL.Emit(OpCodes.Ret); + + // Define the "set" accessor method for Number, which has no return + // type and takes one argument of type int (Int32). + MethodBuilder mbNumberSetAccessor = tb.DefineMethod( + "set_Number", + getSetAttr, + null, + new Type[] { typeof(int) }); + + ILGenerator numberSetIL = mbNumberSetAccessor.GetILGenerator(); + // Load the instance and then the numeric argument, then store the + // argument in the field. + numberSetIL.Emit(OpCodes.Ldarg_0); + numberSetIL.Emit(OpCodes.Ldarg_1); + numberSetIL.Emit(OpCodes.Stfld, fbNumber); + numberSetIL.Emit(OpCodes.Ret); + + // Last, map the "get" and "set" accessor methods to the + // PropertyBuilder. The property is now complete. + pbNumber.SetGetMethod(mbNumberGetAccessor); + pbNumber.SetSetMethod(mbNumberSetAccessor); + + // Define a method that accepts an integer argument and returns + // the product of that integer and the private field m_number. This + // time, the array of parameter types is created on the fly. + MethodBuilder meth = tb.DefineMethod( + "MyMethod", + MethodAttributes.Public, + typeof(int), + new Type[] { typeof(int) }); + + ILGenerator methIL = meth.GetILGenerator(); + // To retrieve the private instance field, load the instance it + // belongs to (argument zero). After loading the field, load the + // argument one and then multiply. Return from the method with + // the return value (the product of the two numbers) on the + // execution stack. + methIL.Emit(OpCodes.Ldarg_0); + methIL.Emit(OpCodes.Ldfld, fbNumber); + methIL.Emit(OpCodes.Ldarg_1); + methIL.Emit(OpCodes.Mul); + methIL.Emit(OpCodes.Ret); + + // Finish the type. + Type t = tb.CreateType(); + + // The following line saves the single-module assembly. This + // requires AssemblyBuilderAccess to include Save. You can now + // type "ildasm MyDynamicAsm.dll" at the command prompt, and + // examine the assembly. You can also write a program that has + // a reference to the assembly, and use the MyDynamicType type. + // + ab.Save(aName.Name + ".dll"); + + // Because AssemblyBuilderAccess includes Run, the code can be + // executed immediately. Start by getting reflection objects for + // the method and the property. + MethodInfo mi = t.GetMethod("MyMethod"); + PropertyInfo pi = t.GetProperty("Number"); + + // Create an instance of MyDynamicType using the default + // constructor. + object o1 = Activator.CreateInstance(t); + + // Display the value of the property, then change it to 127 and + // display it again. Use null to indicate that the property + // has no index. + Console.WriteLine("o1.Number: {0}", pi.GetValue(o1, null)); + pi.SetValue(o1, 127, null); + Console.WriteLine("o1.Number: {0}", pi.GetValue(o1, null)); + + // Call MyMethod, passing 22, and display the return value, 22 + // times 127. Arguments must be passed as an array, even when + // there is only one. + object[] arguments = { 22 }; + Console.WriteLine("o1.MyMethod(22): {0}", + mi.Invoke(o1, arguments)); + + // Create an instance of MyDynamicType using the constructor + // that specifies m_Number. The constructor is identified by + // matching the types in the argument array. In this case, + // the argument array is created on the fly. Display the + // property value. + object o2 = Activator.CreateInstance(t, + new object[] { 5280 }); + Console.WriteLine("o2.Number: {0}", pi.GetValue(o2, null)); + + } + /// + ///ReflectionOfDefineDynamicAssembly 的摘要说明 + /// + /// + public interface ISayHello + { + int SayHello(); + } + public class ReflectionOfDefineDynamicAssembly + { + private ISayHello sayHello = null; + public ReflectionOfDefineDynamicAssembly() + { + // + //TODO: 在此处添加构造函数逻辑 + // + } + + private Assembly EmitAssembly(string sMsg) + { + //创建程序集名称 + AssemblyName assemblyName = new AssemblyName("SayHelloAssembly"); + //创建新的动态程序集 + AssemblyBuilder newAssembly = Thread.GetDomain().DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run); + //利用AssemblyBuilder创建ModuleBuilder + ModuleBuilder newModule = newAssembly.DefineDynamicModule("SayHello"); + //创建一个公共类MySayHello + TypeBuilder myType = newModule.DefineType("MySayHello", TypeAttributes.Public | TypeAttributes.Class); + //使得该类实现ISayHello接口 + myType.AddInterfaceImplementation(typeof(ISayHello)); + //方法的传入参数 + Type[] paramTypes = new Type[0];//不传入参数 + //方法返回的类型 + Type returnType = typeof(int); + //定义接口中的方法 + MethodBuilder myMethod = myType.DefineMethod("SayHello", MethodAttributes.Public | MethodAttributes.Virtual, returnType, paramTypes); + //获取ILGenerator + ILGenerator generator = myMethod.GetILGenerator(); + //编写代码 + generator.EmitWriteLine("Hello " + sMsg); + //入栈 + generator.Emit(OpCodes.Ldc_I4, 1); + //返回栈顶元素 + generator.Emit(OpCodes.Ret); + //获得接口的方法信息 + MethodInfo info = typeof(ISayHello).GetMethod("SayHello"); + //规定方法重载 + myType.DefineMethodOverride(myMethod, info); + //创建类型 + myType.CreateType(); + return newAssembly; + } + //动态创建程序集 + //初始化接口变量 + public void GenerateCode(string sMsg) + { + Assembly theAssembly = EmitAssembly(sMsg); + sayHello = (ISayHello)theAssembly.CreateInstance("MySayHello"); + } + + //设置接口变量 如果不为空则 + public int DoSayHello(string sMsg) + { + if (sayHello != null) + { + GenerateCode(sMsg); + } + return sayHello.SayHello(); + } + } + public void codeDongtai3() + { + ReflectionOfDefineDynamicAssembly test = new ReflectionOfDefineDynamicAssembly(); + int i = test.DoSayHello("1987Raymond/果汁分你一半"); + Console.WriteLine(i); + } + } + +} diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Form1Test.resx b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Form1Test.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Form1Test.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Model/BaseClass.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Model/BaseClass.cs new file mode 100644 index 0000000..fc0eb74 --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Model/BaseClass.cs @@ -0,0 +1,1177 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.IO; + +namespace CsharpOSMeteorCodeGenerator.Model +{ + public class BaseClass + { + + public static readonly string str_GeneratorTime = "//===============================================================================\r\n//GeneratorDate: " + + System.DateTime.Now + "\r\n//===============================================================================\r\n"; + public static readonly string str_stat = str_GeneratorTime+@"using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Data; +using System.Data.SqlClient; +namespace {0} +{{ + public class {1} + {{ +"; + public const string str_end = @" + } +} +"; + public const string strtable_eneity = + @" + public class {0} + {{ {1} + }} +"; + public class BaseTableLinqClass + { + public const string strtablelinq = + @" +{0} +"; + public const string strtablelinqadd = @" + public static int {0}Add(Entity.{1} obj) + {{ + int rs = 0;//0 >>add failure + //1 >>Has been in existence can't repeat to add + //2 >>add success + using (DataObjectDataContext dt = new DataObjectDataContext()) + {{ + var query = from s in dt.{2} + where (your conditions) + select s ; + if (query.ToList().Count > 0) + {{ + rs = 1; + }} + else + {{ + {3} + dt.{4}.InsertOnSubmit(newojb); + dt.SubmitChanges(); + rs = 2; + }} + }} + return rs; + }}"; + public const string strtablelinqdelete = @" + public static int {0}Delete(string objid) + {{ + int rs = 0; // 0 failure + //1 Delete the object does not exist + //2 success + using (DataObjectDataContext db = new DataObjectDataContext()) + {{ + var query = db.{1}.SingleOrDefault<{2}>(s => s.id == System.Guid.Parse(objid)); + if (query == null) + {{ + rs = 1; + return rs; + }} + db.{3}.DeleteOnSubmit(query); + db.SubmitChanges(); + rs=2; + }} + return rs; + }}"; + public const string strtablelinqupdate = @" + public static int {0}Update(Entity.{1} obj) + {{ + int rs = 0;// 0 failure + //1 update the object does not exist + //2 success + using (DataObjectDataContext db = new DataObjectDataContext()) + {{ + var query = db.{2}.SingleOrDefault<{3}>(s => s.id == System.Guid.Parse(obj.id)); + if (query == null) + {{ + rs = 1; + return rs; + }}{4} + db.SubmitChanges(); + rs = 2; + + }} + return rs; + }}"; + public const string strtablelinqselect = @" + public static List getALLuserlist() + {{ + List rslist=new List(); + using (DataObjectDataContext db = new DataObjectDataContext()) + {{ + var querylist = from s in db.{3} orderby s.id select s ; + if(querylist==null) + {{ + return rslist; + }} + foreach (var obj in querylist) + {{ + Entity.{4} query=new Entity.{5} ();{6} + rslist.Add(query); + }} + }} + return rslist; + }}"; + public const string strtablelinqselectToIEnumerable = @" + public static IEnumerable getALL{1}ToIEnumerable(?Expression> expression,int isall) + {{ + using (DataObjectDataContext db = new DataObjectDataContext()) + {{ + if (isall == 1) + {{ + return db.{3}.Rows.Cast(); + }} + else + {{ + return db.{5}.Rows.Cast().AsQueryable().Where(expression); + }} + }} + }}"; + + } + #region 创建辅助类 + public static void CreateSqlHelper(string Helperlocation,string namespaceStr) + { + Helperlocation += "\\SQLHelper.cs"; + using (StreamWriter sw = File.CreateText(Helperlocation)) + { + //System.IO.FileStream fs = new System.IO.FileStream(Helperlocation, System.IO.FileMode.CreateNew); + //System.IO.StreamWriter sw = new System.IO.StreamWriter(fs); + sw.WriteLine("using System;"); + sw.WriteLine("using System.Configuration;"); + sw.WriteLine("using System.Data;"); + sw.WriteLine("using System.Data.SqlClient;"); + sw.WriteLine("using System.Collections;"); + sw.WriteLine(""); + sw.WriteLine("namespace " + namespaceStr); + sw.WriteLine("{"); + sw.WriteLine(" public abstract class SqlHelper"); + sw.WriteLine(" {"); + sw.WriteLine(" //DBConnectionString"); + sw.WriteLine(" public static readonly string ConnectionString = ConfigurationManager.AppSettings[\"ConnectionString\"];"); + sw.WriteLine(""); + sw.WriteLine(" // Hashtable to store cached parameters"); + sw.WriteLine(" private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());"); + sw.WriteLine(""); + sw.WriteLine(" /// "); + sw.WriteLine(" /// Execute a SqlCommand (that returns no resultset) against the database specified in the connection string "); + sw.WriteLine(" /// using the provided parameters."); + sw.WriteLine(" /// "); + sw.WriteLine(" /// "); + sw.WriteLine(" /// e.g.: "); + sw.WriteLine(" /// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, \"PublishOrders\", new SqlParameter(\"@prodid\", 24));"); + sw.WriteLine(" /// "); + sw.WriteLine(" /// a valid connection string for a SqlConnection"); + sw.WriteLine(" /// the CommandType (stored procedure, text, etc.)"); + sw.WriteLine(" /// the stored procedure name or T-SQL command"); + sw.WriteLine(" /// an array of SqlParamters used to execute the command"); + sw.WriteLine(" /// an int representing the number of rows affected by the command"); + sw.WriteLine(" public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)"); + sw.WriteLine(" {"); + sw.WriteLine(""); + sw.WriteLine(" SqlCommand cmd = new SqlCommand();"); + sw.WriteLine(" using (SqlConnection conn = new SqlConnection(connectionString))"); + sw.WriteLine(" {"); + sw.WriteLine(" PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);"); + sw.WriteLine(" int val = cmd.ExecuteNonQuery();"); + sw.WriteLine(" cmd.Parameters.Clear();"); + sw.WriteLine(" return val;"); + sw.WriteLine(" }"); + sw.WriteLine(" }"); + sw.WriteLine(""); + sw.WriteLine(" /// "); + sw.WriteLine(" /// Execute a SqlCommand (that returns no resultset) against an existing database connection "); + sw.WriteLine(" /// using the provided parameters."); + sw.WriteLine(" /// "); + sw.WriteLine(" /// "); + sw.WriteLine(" /// e.g.: "); + sw.WriteLine(" /// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, \"PublishOrders\", new SqlParameter(\"@prodid\", 24));"); + sw.WriteLine(" /// "); + sw.WriteLine(" /// an existing database connection"); + sw.WriteLine(" /// the CommandType (stored procedure, text, etc.)"); + sw.WriteLine(" /// the stored procedure name or T-SQL command"); + sw.WriteLine(" /// an array of SqlParamters used to execute the command"); + sw.WriteLine(" /// an int representing the number of rows affected by the command"); + sw.WriteLine(" public static int ExecuteNonQuery(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)"); + sw.WriteLine(" {"); + sw.WriteLine(" SqlCommand cmd = new SqlCommand();"); + sw.WriteLine(" PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);"); + sw.WriteLine(" int val = cmd.ExecuteNonQuery();"); + sw.WriteLine(" cmd.Parameters.Clear();"); + sw.WriteLine(" return val;"); + sw.WriteLine(" }"); + sw.WriteLine(""); + sw.WriteLine(" /// "); + sw.WriteLine(" /// Execute a SqlCommand (that returns no resultset) using an existing SQL Transaction "); + sw.WriteLine(" /// using the provided parameters."); + sw.WriteLine(" /// "); + sw.WriteLine(" /// "); + sw.WriteLine(" /// e.g.: "); + sw.WriteLine(" /// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, \"PublishOrders\", new SqlParameter(\"@prodid\", 24));"); + sw.WriteLine(" /// "); + sw.WriteLine(" /// an existing sql transaction"); + sw.WriteLine(" /// the CommandType (stored procedure, text, etc.)"); + sw.WriteLine(" /// the stored procedure name or T-SQL command"); + sw.WriteLine(" /// an array of SqlParamters used to execute the command"); + sw.WriteLine(" /// an int representing the number of rows affected by the command"); + sw.WriteLine(" public static int ExecuteNonQuery(SqlTransaction trans, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)"); + sw.WriteLine(" {"); + sw.WriteLine(" SqlCommand cmd = new SqlCommand();"); + sw.WriteLine(" PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters);"); + sw.WriteLine(" int val = cmd.ExecuteNonQuery();"); + sw.WriteLine(" cmd.Parameters.Clear();"); + sw.WriteLine(" return val;"); + sw.WriteLine(" }"); + sw.WriteLine(""); + sw.WriteLine(" /// "); + sw.WriteLine(" /// Execute a SqlCommand that returns a resultset against the database specified in the connection string "); + sw.WriteLine(" /// using the provided parameters."); + sw.WriteLine(" /// "); + sw.WriteLine(" /// "); + sw.WriteLine(" /// e.g.: "); + sw.WriteLine(" /// SqlDataReader r = ExecuteReader(connString, CommandType.StoredProcedure, \"PublishOrders\", new SqlParameter(\"@prodid\", 24));"); + sw.WriteLine(" /// "); + sw.WriteLine(" /// a valid connection string for a SqlConnection"); + sw.WriteLine(" /// the CommandType (stored procedure, text, etc.)"); + sw.WriteLine(" /// the stored procedure name or T-SQL command"); + sw.WriteLine(" /// an array of SqlParamters used to execute the command"); + sw.WriteLine(" /// A SqlDataReader containing the results"); + sw.WriteLine(" public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)"); + sw.WriteLine(" {"); + sw.WriteLine(" SqlCommand cmd = new SqlCommand();"); + sw.WriteLine(" SqlConnection conn = new SqlConnection(connectionString);"); + sw.WriteLine(" // we use a try/catch here because if the method throws an exception we want to "); + sw.WriteLine(" // close the connection throw code, because no datareader will exist, hence the "); + sw.WriteLine(" // commandBehaviour.CloseConnection will not work"); + sw.WriteLine(" try"); + sw.WriteLine(" {"); + sw.WriteLine(" PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);"); + sw.WriteLine(" SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);"); + sw.WriteLine(" cmd.Parameters.Clear();"); + sw.WriteLine(" return rdr;"); + sw.WriteLine(" }"); + sw.WriteLine(" catch"); + sw.WriteLine(" {"); + sw.WriteLine(" conn.Close();"); + sw.WriteLine(" throw;"); + sw.WriteLine(" }"); + sw.WriteLine(" }"); + sw.WriteLine(""); + sw.WriteLine(" /// "); + sw.WriteLine(" /// Execute a SqlCommand that returns the first column of the first record against the database specified in the connection string "); + sw.WriteLine(" /// using the provided parameters."); + sw.WriteLine(" /// "); + sw.WriteLine(" /// "); + sw.WriteLine(" /// e.g.: "); + sw.WriteLine(" /// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, \"PublishOrders\", new SqlParameter(\"@prodid\", 24));"); + sw.WriteLine(" /// "); + sw.WriteLine(" /// a valid connection string for a SqlConnection"); + sw.WriteLine(" /// the CommandType (stored procedure, text, etc.)"); + sw.WriteLine(" /// the stored procedure name or T-SQL command"); + sw.WriteLine(" /// an array of SqlParamters used to execute the command"); + sw.WriteLine(" /// An object that should be converted to the expected type using Convert.To{Type}"); + sw.WriteLine(" public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)"); + sw.WriteLine(" {"); + sw.WriteLine(" SqlCommand cmd = new SqlCommand();"); + sw.WriteLine(" using (SqlConnection connection = new SqlConnection(connectionString))"); + sw.WriteLine(" {"); + sw.WriteLine(" PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);"); + sw.WriteLine(" object val = cmd.ExecuteScalar();"); + sw.WriteLine(" cmd.Parameters.Clear();"); + sw.WriteLine(" return val;"); + sw.WriteLine(" }"); + sw.WriteLine(" }"); + sw.WriteLine(" public static object ExecuteScalar(string sql)"); + sw.WriteLine(" {"); + sw.WriteLine(" SqlCommand cmd = new SqlCommand();"); + sw.WriteLine(" cmd.CommandText = sql;"); + sw.WriteLine(" using (SqlConnection connection = new SqlConnection(ConnectionString))"); + sw.WriteLine(" {"); + sw.WriteLine(" cmd.Connection = connection;"); + sw.WriteLine(" connection.Open();"); + sw.WriteLine(" object val = cmd.ExecuteScalar();"); + sw.WriteLine(" connection.Close();"); + sw.WriteLine(" return val;"); + sw.WriteLine(" }"); + sw.WriteLine(" }"); + sw.WriteLine(""); + sw.WriteLine(" /// "); + sw.WriteLine(" /// Execute a SqlCommand that returns the first column of the first record against an existing database connection "); + sw.WriteLine(" /// using the provided parameters."); + sw.WriteLine(" /// "); + sw.WriteLine(" /// "); + sw.WriteLine(" /// e.g.: "); + sw.WriteLine(" /// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, \"PublishOrders\", new SqlParameter(\"@prodid\", 24));"); + sw.WriteLine(" /// "); + sw.WriteLine(" /// an existing database connection"); + sw.WriteLine(" /// the CommandType (stored procedure, text, etc.)"); + sw.WriteLine(" /// the stored procedure name or T-SQL command"); + sw.WriteLine(" /// an array of SqlParamters used to execute the command"); + sw.WriteLine(" /// An object that should be converted to the expected type using Convert.To{Type}"); + sw.WriteLine(" public static object ExecuteScalar(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)"); + sw.WriteLine(" {"); + sw.WriteLine(" SqlCommand cmd = new SqlCommand();"); + sw.WriteLine(" PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);"); + sw.WriteLine(" object val = cmd.ExecuteScalar();"); + sw.WriteLine(" cmd.Parameters.Clear();"); + sw.WriteLine(" return val;"); + sw.WriteLine(" }"); + sw.WriteLine(""); + sw.WriteLine(" /// "); + sw.WriteLine(" /// add parameter array to the cache"); + sw.WriteLine(" /// "); + sw.WriteLine(" /// Key to the parameter cache"); + sw.WriteLine(" /// an array of SqlParamters to be cached"); + sw.WriteLine(" public static void CacheParameters(string cacheKey, params SqlParameter[] commandParameters)"); + sw.WriteLine(" {"); + sw.WriteLine(" parmCache[cacheKey] = commandParameters;"); + sw.WriteLine(" }"); + sw.WriteLine(""); + sw.WriteLine(" /// "); + sw.WriteLine(" /// Retrieve cached parameters"); + sw.WriteLine(" /// "); + sw.WriteLine(" /// key used to lookup parameters"); + sw.WriteLine(" /// Cached SqlParamters array"); + sw.WriteLine(" public static SqlParameter[] GetCachedParameters(string cacheKey)"); + sw.WriteLine(" {"); + sw.WriteLine(" SqlParameter[] cachedParms = (SqlParameter[])parmCache[cacheKey];"); + sw.WriteLine(" if (cachedParms == null)"); + sw.WriteLine(" return null;"); + sw.WriteLine(" SqlParameter[] clonedParms = new SqlParameter[cachedParms.Length];"); + sw.WriteLine(" for (int i = 0, j = cachedParms.Length; i < j; i++)"); + sw.WriteLine(" clonedParms[i] = (SqlParameter)((ICloneable)cachedParms[i]).Clone();"); + sw.WriteLine(" return clonedParms;"); + sw.WriteLine(" }"); + sw.WriteLine(""); + sw.WriteLine(" /// "); + sw.WriteLine(" /// Prepare a command for execution"); + sw.WriteLine(" /// "); + sw.WriteLine(" /// SqlCommand object"); + sw.WriteLine(" /// SqlConnection object"); + sw.WriteLine(" /// SqlTransaction object"); + sw.WriteLine(" /// Cmd type e.g. stored procedure or text"); + sw.WriteLine(" /// Command text, e.g. Select * from Products"); + sw.WriteLine(" /// SqlParameters to use in the command"); + sw.WriteLine(" private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms)"); + sw.WriteLine(" {"); + sw.WriteLine(" if (conn.State != ConnectionState.Open)"); + sw.WriteLine(" conn.Open();"); + sw.WriteLine(" cmd.Connection = conn;"); + sw.WriteLine(" cmd.CommandText = cmdText;"); + sw.WriteLine(" if (trans != null)"); + sw.WriteLine(" cmd.Transaction = trans;"); + sw.WriteLine(" cmd.CommandType = cmdType;"); + sw.WriteLine(" if (cmdParms != null)"); + sw.WriteLine(" {"); + //sw.WriteLine(" foreach (SqlParameter parm in cmdParms)"); + //sw.WriteLine(" cmd.Parameters.Add(parm);"); + sw.WriteLine(" cmd.Parameters.AddRange(cmdParms);"); + sw.WriteLine(" }"); + sw.WriteLine(" }"); + sw.WriteLine(" public static SqlDataReader ExecuteReader(string sql)"); + sw.WriteLine(" {"); + sw.WriteLine(" SqlCommand cmd = new SqlCommand();"); + sw.WriteLine(" SqlConnection connection = new SqlConnection(ConnectionString);"); + sw.WriteLine(" connection.Open();"); + sw.WriteLine(" cmd.CommandText = sql;"); + sw.WriteLine(" cmd.Connection = connection;"); + sw.WriteLine(" return cmd.ExecuteReader(CommandBehavior.CloseConnection);"); + sw.WriteLine(" }"); + sw.WriteLine(" public static int ExecuteNonQuery(string sql)"); + sw.WriteLine(" {"); + sw.WriteLine(" SqlCommand cmd = new SqlCommand();"); + sw.WriteLine(" using (SqlConnection connection = new SqlConnection(ConnectionString))"); + sw.WriteLine(" {"); + sw.WriteLine(" connection.Open();"); + sw.WriteLine(" cmd.CommandText = sql;"); + sw.WriteLine(" cmd.Connection = connection;"); + sw.WriteLine(" int i = cmd.ExecuteNonQuery();"); + sw.WriteLine(" connection.Close();"); + sw.WriteLine(" return i;"); + sw.WriteLine(" }"); + sw.WriteLine(" }"); + sw.WriteLine(" public static DataSet ExecuteDataSet(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)"); + sw.WriteLine(" {"); + sw.WriteLine(" SqlConnection connection = new SqlConnection(connectionString);"); + sw.WriteLine(" try"); + sw.WriteLine(" {"); + sw.WriteLine(" connection.Open();"); + sw.WriteLine(" SqlCommand cmd = new SqlCommand();"); + sw.WriteLine(" PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);"); + sw.WriteLine(" SqlDataAdapter adp = new SqlDataAdapter(cmd);"); + sw.WriteLine(" DataSet dt = new DataSet();"); + sw.WriteLine(" adp.Fill(dt);"); + sw.WriteLine(" connection.Close();"); + sw.WriteLine(" return dt;"); + sw.WriteLine(" }"); + sw.WriteLine(" catch (Exception ex)"); + sw.WriteLine(" {"); + sw.WriteLine(" throw (ex);"); + sw.WriteLine(" }"); + sw.WriteLine(" finally"); + sw.WriteLine(" {"); + sw.WriteLine(" if (connection.State != ConnectionState.Closed)"); + sw.WriteLine(" {"); + sw.WriteLine(" connection.Close();"); + sw.WriteLine(" }"); + sw.WriteLine(" }"); + sw.WriteLine(" }"); + sw.WriteLine(" public static DataSet ExecuteDataSet(string sql)"); + sw.WriteLine(" {"); + sw.WriteLine(" SqlConnection connection = new SqlConnection(ConnectionString);"); + sw.WriteLine(" try"); + sw.WriteLine(" {"); + sw.WriteLine(" connection.Open();"); + sw.WriteLine(" SqlCommand cmd = new SqlCommand(sql, connection);"); + sw.WriteLine(" cmd.CommandType = CommandType.Text;"); + sw.WriteLine(" SqlDataAdapter adp = new SqlDataAdapter(cmd);"); + sw.WriteLine(" DataSet dt = new DataSet();"); + sw.WriteLine(" adp.Fill(dt);"); + sw.WriteLine(" connection.Close();"); + sw.WriteLine(" return dt;"); + sw.WriteLine(" }"); + sw.WriteLine(" catch (Exception ex)"); + sw.WriteLine(" {"); + sw.WriteLine(" throw (ex);"); + sw.WriteLine(" }"); + sw.WriteLine(" finally"); + sw.WriteLine(" {"); + sw.WriteLine(" if (connection.State != ConnectionState.Closed)"); + sw.WriteLine(" {"); + sw.WriteLine(" connection.Close();"); + sw.WriteLine(" }"); + sw.WriteLine(" }"); + sw.WriteLine(" }"); + sw.WriteLine(" /// Get the DataTable object by the query"); + sw.WriteLine(" public static DataTable ExecuteGetDataTableFromTableName(string sql)"); + sw.WriteLine(" {"); + sw.WriteLine(" DataTable dt = new DataTable();"); + sw.WriteLine(" using (SqlConnection conn = new SqlConnection(ConnectionString))"); + sw.WriteLine(" {"); + sw.WriteLine(" SqlCommand scCommand = conn.CreateCommand();"); + sw.WriteLine(" scCommand.CommandText = sql;"); + sw.WriteLine(" SqlDataAdapter sdaAdapter = new SqlDataAdapter(scCommand);"); + sw.WriteLine(" sdaAdapter.Fill(dt);"); + sw.WriteLine(" }"); + sw.WriteLine(" return dt;"); + sw.WriteLine(" }"); + sw.WriteLine(" public static DataTable ExecuteDataTable(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)"); + sw.WriteLine(" {"); + sw.WriteLine(" SqlConnection connection = new SqlConnection(connectionString);"); + sw.WriteLine(" try"); + sw.WriteLine(" {"); + sw.WriteLine(" connection.Open();"); + sw.WriteLine(" SqlCommand cmd = new SqlCommand();"); + sw.WriteLine(" PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);"); + sw.WriteLine(" SqlDataAdapter adp = new SqlDataAdapter(cmd);"); + sw.WriteLine(" DataTable dt = new DataTable();"); + sw.WriteLine(" adp.Fill(dt);"); + sw.WriteLine(" connection.Close();"); + sw.WriteLine(" return dt;"); + sw.WriteLine(" }"); + sw.WriteLine(" catch (Exception ex)"); + sw.WriteLine(" {"); + sw.WriteLine(" throw (ex);"); + sw.WriteLine(" }"); + sw.WriteLine(" finally"); + sw.WriteLine(" {"); + sw.WriteLine(" if (connection.State != ConnectionState.Closed)"); + sw.WriteLine(" {"); + sw.WriteLine(" connection.Close();"); + sw.WriteLine(" }"); + sw.WriteLine(" }"); + sw.WriteLine(" }"); + sw.WriteLine(" }"); + sw.WriteLine("}"); + sw.Close(); + } + } + public static string GetStrSQLHelper(string namespaceStr) { + StringBuilder sb = new StringBuilder(); + sb.Append("using System;"); + sb.Append("using System.Configuration;"); + sb.Append("using System.Data;"); + sb.Append("using System.Data.SqlClient;"); + sb.Append("using System.Collections;"); + sb.Append(""); + sb.Append("namespace " + namespaceStr); + sb.Append("{"); + sb.Append(" public abstract class SqlHelper"); + sb.Append(" {"); + sb.Append(" //DBConnectionString"); + sb.Append(" public static readonly string ConnectionString = ConfigurationManager.AppSettings[\"ConnectionString\"];"); + sb.Append(""); + sb.Append(" // Hashtable to store cached parameters"); + sb.Append(" private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());"); + sb.Append(""); + sb.Append(" /// "); + sb.Append(" /// Execute a SqlCommand (that returns no resultset) against the database specified in the connection string "); + sb.Append(" /// using the provided parameters."); + sb.Append(" /// "); + sb.Append(" /// "); + sb.Append(" /// e.g.: "); + sb.Append(" /// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, \"PublishOrders\", new SqlParameter(\"@prodid\", 24));"); + sb.Append(" /// "); + sb.Append(" /// a valid connection string for a SqlConnection"); + sb.Append(" /// the CommandType (stored procedure, text, etc.)"); + sb.Append(" /// the stored procedure name or T-SQL command"); + sb.Append(" /// an array of SqlParamters used to execute the command"); + sb.Append(" /// an int representing the number of rows affected by the command"); + sb.Append(" public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)"); + sb.Append(" {"); + sb.Append(""); + sb.Append(" SqlCommand cmd = new SqlCommand();"); + sb.Append(" using (SqlConnection conn = new SqlConnection(connectionString))"); + sb.Append(" {"); + sb.Append(" PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);"); + sb.Append(" int val = cmd.ExecuteNonQuery();"); + sb.Append(" cmd.Parameters.Clear();"); + sb.Append(" return val;"); + sb.Append(" }"); + sb.Append(" }"); + sb.Append(""); + sb.Append(" /// "); + sb.Append(" /// Execute a SqlCommand (that returns no resultset) against an existing database connection "); + sb.Append(" /// using the provided parameters."); + sb.Append(" /// "); + sb.Append(" /// "); + sb.Append(" /// e.g.: "); + sb.Append(" /// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, \"PublishOrders\", new SqlParameter(\"@prodid\", 24));"); + sb.Append(" /// "); + sb.Append(" /// an existing database connection"); + sb.Append(" /// the CommandType (stored procedure, text, etc.)"); + sb.Append(" /// the stored procedure name or T-SQL command"); + sb.Append(" /// an array of SqlParamters used to execute the command"); + sb.Append(" /// an int representing the number of rows affected by the command"); + sb.Append(" public static int ExecuteNonQuery(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)"); + sb.Append(" {"); + sb.Append(" SqlCommand cmd = new SqlCommand();"); + sb.Append(" PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);"); + sb.Append(" int val = cmd.ExecuteNonQuery();"); + sb.Append(" cmd.Parameters.Clear();"); + sb.Append(" return val;"); + sb.Append(" }"); + sb.Append(""); + sb.Append(" /// "); + sb.Append(" /// Execute a SqlCommand (that returns no resultset) using an existing SQL Transaction "); + sb.Append(" /// using the provided parameters."); + sb.Append(" /// "); + sb.Append(" /// "); + sb.Append(" /// e.g.: "); + sb.Append(" /// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, \"PublishOrders\", new SqlParameter(\"@prodid\", 24));"); + sb.Append(" /// "); + sb.Append(" /// an existing sql transaction"); + sb.Append(" /// the CommandType (stored procedure, text, etc.)"); + sb.Append(" /// the stored procedure name or T-SQL command"); + sb.Append(" /// an array of SqlParamters used to execute the command"); + sb.Append(" /// an int representing the number of rows affected by the command"); + sb.Append(" public static int ExecuteNonQuery(SqlTransaction trans, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)"); + sb.Append(" {"); + sb.Append(" SqlCommand cmd = new SqlCommand();"); + sb.Append(" PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters);"); + sb.Append(" int val = cmd.ExecuteNonQuery();"); + sb.Append(" cmd.Parameters.Clear();"); + sb.Append(" return val;"); + sb.Append(" }"); + sb.Append(""); + sb.Append(" /// "); + sb.Append(" /// Execute a SqlCommand that returns a resultset against the database specified in the connection string "); + sb.Append(" /// using the provided parameters."); + sb.Append(" /// "); + sb.Append(" /// "); + sb.Append(" /// e.g.: "); + sb.Append(" /// SqlDataReader r = ExecuteReader(connString, CommandType.StoredProcedure, \"PublishOrders\", new SqlParameter(\"@prodid\", 24));"); + sb.Append(" /// "); + sb.Append(" /// a valid connection string for a SqlConnection"); + sb.Append(" /// the CommandType (stored procedure, text, etc.)"); + sb.Append(" /// the stored procedure name or T-SQL command"); + sb.Append(" /// an array of SqlParamters used to execute the command"); + sb.Append(" /// A SqlDataReader containing the results"); + sb.Append(" public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)"); + sb.Append(" {"); + sb.Append(" SqlCommand cmd = new SqlCommand();"); + sb.Append(" SqlConnection conn = new SqlConnection(connectionString);"); + sb.Append(" // we use a try/catch here because if the method throws an exception we want to "); + sb.Append(" // close the connection throw code, because no datareader will exist, hence the "); + sb.Append(" // commandBehaviour.CloseConnection will not work"); + sb.Append(" try"); + sb.Append(" {"); + sb.Append(" PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);"); + sb.Append(" SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);"); + sb.Append(" cmd.Parameters.Clear();"); + sb.Append(" return rdr;"); + sb.Append(" }"); + sb.Append(" catch"); + sb.Append(" {"); + sb.Append(" conn.Close();"); + sb.Append(" throw;"); + sb.Append(" }"); + sb.Append(" }"); + sb.Append(""); + sb.Append(" /// "); + sb.Append(" /// Execute a SqlCommand that returns the first column of the first record against the database specified in the connection string "); + sb.Append(" /// using the provided parameters."); + sb.Append(" /// "); + sb.Append(" /// "); + sb.Append(" /// e.g.: "); + sb.Append(" /// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, \"PublishOrders\", new SqlParameter(\"@prodid\", 24));"); + sb.Append(" /// "); + sb.Append(" /// a valid connection string for a SqlConnection"); + sb.Append(" /// the CommandType (stored procedure, text, etc.)"); + sb.Append(" /// the stored procedure name or T-SQL command"); + sb.Append(" /// an array of SqlParamters used to execute the command"); + sb.Append(" /// An object that should be converted to the expected type using Convert.To{Type}"); + sb.Append(" public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)"); + sb.Append(" {"); + sb.Append(" SqlCommand cmd = new SqlCommand();"); + sb.Append(" using (SqlConnection connection = new SqlConnection(connectionString))"); + sb.Append(" {"); + sb.Append(" PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);"); + sb.Append(" object val = cmd.ExecuteScalar();"); + sb.Append(" cmd.Parameters.Clear();"); + sb.Append(" return val;"); + sb.Append(" }"); + sb.Append(" }"); + sb.Append(" public static object ExecuteScalar(string sql)"); + sb.Append(" {"); + sb.Append(" SqlCommand cmd = new SqlCommand();"); + sb.Append(" cmd.CommandText = sql;"); + sb.Append(" using (SqlConnection connection = new SqlConnection(ConnectionString))"); + sb.Append(" {"); + sb.Append(" cmd.Connection = connection;"); + sb.Append(" connection.Open();"); + sb.Append(" object val = cmd.ExecuteScalar();"); + sb.Append(" connection.Close();"); + sb.Append(" return val;"); + sb.Append(" }"); + sb.Append(" }"); + sb.Append(""); + sb.Append(" /// "); + sb.Append(" /// Execute a SqlCommand that returns the first column of the first record against an existing database connection "); + sb.Append(" /// using the provided parameters."); + sb.Append(" /// "); + sb.Append(" /// "); + sb.Append(" /// e.g.: "); + sb.Append(" /// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, \"PublishOrders\", new SqlParameter(\"@prodid\", 24));"); + sb.Append(" /// "); + sb.Append(" /// an existing database connection"); + sb.Append(" /// the CommandType (stored procedure, text, etc.)"); + sb.Append(" /// the stored procedure name or T-SQL command"); + sb.Append(" /// an array of SqlParamters used to execute the command"); + sb.Append(" /// An object that should be converted to the expected type using Convert.To{Type}"); + sb.Append(" public static object ExecuteScalar(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)"); + sb.Append(" {"); + sb.Append(" SqlCommand cmd = new SqlCommand();"); + sb.Append(" PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);"); + sb.Append(" object val = cmd.ExecuteScalar();"); + sb.Append(" cmd.Parameters.Clear();"); + sb.Append(" return val;"); + sb.Append(" }"); + sb.Append(""); + sb.Append(" /// "); + sb.Append(" /// add parameter array to the cache"); + sb.Append(" /// "); + sb.Append(" /// Key to the parameter cache"); + sb.Append(" /// an array of SqlParamters to be cached"); + sb.Append(" public static void CacheParameters(string cacheKey, params SqlParameter[] commandParameters)"); + sb.Append(" {"); + sb.Append(" parmCache[cacheKey] = commandParameters;"); + sb.Append(" }"); + sb.Append(""); + sb.Append(" /// "); + sb.Append(" /// Retrieve cached parameters"); + sb.Append(" /// "); + sb.Append(" /// key used to lookup parameters"); + sb.Append(" /// Cached SqlParamters array"); + sb.Append(" public static SqlParameter[] GetCachedParameters(string cacheKey)"); + sb.Append(" {"); + sb.Append(" SqlParameter[] cachedParms = (SqlParameter[])parmCache[cacheKey];"); + sb.Append(" if (cachedParms == null)"); + sb.Append(" return null;"); + sb.Append(" SqlParameter[] clonedParms = new SqlParameter[cachedParms.Length];"); + sb.Append(" for (int i = 0, j = cachedParms.Length; i < j; i++)"); + sb.Append(" clonedParms[i] = (SqlParameter)((ICloneable)cachedParms[i]).Clone();"); + sb.Append(" return clonedParms;"); + sb.Append(" }"); + sb.Append(""); + sb.Append(" /// "); + sb.Append(" /// Prepare a command for execution"); + sb.Append(" /// "); + sb.Append(" /// SqlCommand object"); + sb.Append(" /// SqlConnection object"); + sb.Append(" /// SqlTransaction object"); + sb.Append(" /// Cmd type e.g. stored procedure or text"); + sb.Append(" /// Command text, e.g. Select * from Products"); + sb.Append(" /// SqlParameters to use in the command"); + sb.Append(" private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms)"); + sb.Append(" {"); + sb.Append(" if (conn.State != ConnectionState.Open)"); + sb.Append(" conn.Open();"); + sb.Append(" cmd.Connection = conn;"); + sb.Append(" cmd.CommandText = cmdText;"); + sb.Append(" if (trans != null)"); + sb.Append(" cmd.Transaction = trans;"); + sb.Append(" cmd.CommandType = cmdType;"); + sb.Append(" if (cmdParms != null)"); + sb.Append(" {"); + //sw.WriteLine(" foreach (SqlParameter parm in cmdParms)"); + //sw.WriteLine(" cmd.Parameters.Add(parm);"); + sb.Append(" cmd.Parameters.AddRange(cmdParms);"); + sb.Append(" }"); + sb.Append(" }"); + sb.Append(" public static SqlDataReader ExecuteReader(string sql)"); + sb.Append(" {"); + sb.Append(" SqlCommand cmd = new SqlCommand();"); + sb.Append(" SqlConnection connection = new SqlConnection(ConnectionString);"); + sb.Append(" connection.Open();"); + sb.Append(" cmd.CommandText = sql;"); + sb.Append(" cmd.Connection = connection;"); + sb.Append(" return cmd.ExecuteReader(CommandBehavior.CloseConnection);"); + sb.Append(" }"); + sb.Append(" public static int ExecuteNonQuery(string sql)"); + sb.Append(" {"); + sb.Append(" SqlCommand cmd = new SqlCommand();"); + sb.Append(" using (SqlConnection connection = new SqlConnection(ConnectionString))"); + sb.Append(" {"); + sb.Append(" connection.Open();"); + sb.Append(" cmd.CommandText = sql;"); + sb.Append(" cmd.Connection = connection;"); + sb.Append(" int i = cmd.ExecuteNonQuery();"); + sb.Append(" connection.Close();"); + sb.Append(" return i;"); + sb.Append(" }"); + sb.Append(" }"); + sb.Append(" public static DataSet ExecuteDataSet(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)"); + sb.Append(" {"); + sb.Append(" SqlConnection connection = new SqlConnection(connectionString);"); + sb.Append(" try"); + sb.Append(" {"); + sb.Append(" connection.Open();"); + sb.Append(" SqlCommand cmd = new SqlCommand();"); + sb.Append(" PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);"); + sb.Append(" SqlDataAdapter adp = new SqlDataAdapter(cmd);"); + sb.Append(" DataSet dt = new DataSet();"); + sb.Append(" adp.Fill(dt);"); + sb.Append(" connection.Close();"); + sb.Append(" return dt;"); + sb.Append(" }"); + sb.Append(" catch (Exception ex)"); + sb.Append(" {"); + sb.Append(" throw (ex);"); + sb.Append(" }"); + sb.Append(" finally"); + sb.Append(" {"); + sb.Append(" if (connection.State != ConnectionState.Closed)"); + sb.Append(" {"); + sb.Append(" connection.Close();"); + sb.Append(" }"); + sb.Append(" }"); + sb.Append(" }"); + sb.Append(" public static DataSet ExecuteDataSet(string sql)"); + sb.Append(" {"); + sb.Append(" SqlConnection connection = new SqlConnection(ConnectionString);"); + sb.Append(" try"); + sb.Append(" {"); + sb.Append(" connection.Open();"); + sb.Append(" SqlCommand cmd = new SqlCommand(sql, connection);"); + sb.Append(" cmd.CommandType = CommandType.Text;"); + sb.Append(" SqlDataAdapter adp = new SqlDataAdapter(cmd);"); + sb.Append(" DataSet dt = new DataSet();"); + sb.Append(" adp.Fill(dt);"); + sb.Append(" connection.Close();"); + sb.Append(" return dt;"); + sb.Append(" }"); + sb.Append(" catch (Exception ex)"); + sb.Append(" {"); + sb.Append(" throw (ex);"); + sb.Append(" }"); + sb.Append(" finally"); + sb.Append(" {"); + sb.Append(" if (connection.State != ConnectionState.Closed)"); + sb.Append(" {"); + sb.Append(" connection.Close();"); + sb.Append(" }"); + sb.Append(" }"); + sb.Append(" }"); + sb.Append(" /// Get the DataTable object by the query"); + sb.Append(" public static DataTable ExecuteGetDataTableFromTableName(string sql)"); + sb.Append(" {"); + sb.Append(" DataTable dt = new DataTable();"); + sb.Append(" using (SqlConnection conn = new SqlConnection(ConnectionString))"); + sb.Append(" {"); + sb.Append(" SqlCommand scCommand = conn.CreateCommand();"); + sb.Append(" scCommand.CommandText = sql;"); + sb.Append(" SqlDataAdapter sdaAdapter = new SqlDataAdapter(scCommand);"); + sb.Append(" sdaAdapter.Fill(dt);"); + sb.Append(" }"); + sb.Append(" return dt;"); + sb.Append(" }"); + sb.Append(" public static DataTable ExecuteDataTable(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)"); + sb.Append(" {"); + sb.Append(" SqlConnection connection = new SqlConnection(connectionString);"); + sb.Append(" try"); + sb.Append(" {"); + sb.Append(" connection.Open();"); + sb.Append(" SqlCommand cmd = new SqlCommand();"); + sb.Append(" PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);"); + sb.Append(" SqlDataAdapter adp = new SqlDataAdapter(cmd);"); + sb.Append(" DataTable dt = new DataTable();"); + sb.Append(" adp.Fill(dt);"); + sb.Append(" connection.Close();"); + sb.Append(" return dt;"); + sb.Append(" }"); + sb.Append(" catch (Exception ex)"); + sb.Append(" {"); + sb.Append(" throw (ex);"); + sb.Append(" }"); + sb.Append(" finally"); + sb.Append(" {"); + sb.Append(" if (connection.State != ConnectionState.Closed)"); + sb.Append(" {"); + sb.Append(" connection.Close();"); + sb.Append(" }"); + sb.Append(" }"); + sb.Append(" }"); + sb.Append(" }"); + sb.Append("}"); + return sb.ToString(); + } + #endregion 创建辅助类 + public class BaseTableADODALClass { + public const string strtableADOInsert = @" + public static bool {0}Insert(Entity.{0} obj) + {{ + string sql = ""{1}""; + {2} + if (SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionString, CommandType.Text, sql, spms) > 0) + return true; + else + return false; + }} +"; + + public const string strtableADODeleteFromPrimaryKey = @" + public static bool {0}DeleteFromPrimaryKey({1} {2}) + {{ + string sql = ""{3}""; + sql+="" where {2}=@{2}""; + {4} + if (SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionString, CommandType.Text, sql, spms) > 0) + return true; + else + return false; + }} +"; + public const string strtableADODelete = @" + public static bool {0}Delete(string deleteWhere) + {{ + string sql = ""{1}""; + if(!String.IsNullOrEmpty(deleteWhere.Trim())) + {{ + sql+="" where ""+deleteWhere; + }} else{{ + return false; + }} + if (SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionString, CommandType.Text, sql, null) > 0) + return true; + else + return false; + }} +"; + public const string strtableADOSelectFromPrimaryKey = @" + public static DataTable {0}SelectFromPrimaryKey({1} {2}) + {{ + string sql = ""{3}""; + sql+="" where {2}=@{2}""; + {4} + return SqlHelper.ExecuteDataTable(SqlHelper.ConnectionString, CommandType.Text, sql, spms); + }} +"; + public const string strtableADOSelectFromPrimaryKey_bool = @" + public static bool {0}SelectFromPrimaryKey_bool({1} {2}) + {{ + string sql = ""{3}""; + sql+="" where {2}=@{2}""; + {4} + IDataReader dr= SqlHelper.ExecuteReader(SqlHelper.ConnectionString, CommandType.Text, sql, spms); + if (dr.Read()) + return true; + else + return false; + }} +"; + public const string strtableADOSelect = @" + public static DataTable {0}Select(string selectWhere) + {{ + string sql = ""{1}""; + if(!String.IsNullOrEmpty(selectWhere.Trim())) + {{ + sql+="" where ""+selectWhere; + }} + return SqlHelper.ExecuteGetDataTableFromTableName(sql); + }} +"; + public const string strtableADOUpdateFromPrimaryKey = @" + public static bool {0}UpdateFromPrimaryKey(Entity.{0} obj ,{1} {2}) + {{ + string sql = ""{3}""; + sql+="" where {2}=@{2}""; + {4} + if (SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionString, CommandType.Text, sql, spms) > 0) + return true; + else + return false; + }} +"; + public const string strtableADOUpdate = @" + public static bool {0}Update(Entity.{0} obj , string updateWhere) + {{ + string sql = ""{1}""; + if(!String.IsNullOrEmpty(updateWhere.Trim())) + {{ + sql+="" where ""+updateWhere; + }} else{{ + return false; + }} + {2} + if (SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionString, CommandType.Text, sql, spms) > 0) + return true; + else + return false; + }} +"; + } + public class BaseTableADOBLLClass + { + public const string strtableADOInsert = @" + public static bool {0}Insert(Entity.{0} obj) + {{ + return ADODAL.{0}Insert(obj); + }} +"; + public const string strtableADOInsertFromPrimaryKey = @" + public static bool {0}InsertFromPrimaryKey(Entity.{0} obj,{1} {2}) + {{ + if(ADOBLL.{0}SelectFromPrimaryKey_bool({2})) + return ADODAL.{0}Insert(obj); + else + return false; + }} +"; + + public const string strtableADODelete = @" + public static bool {0}Delete(string deleteWhere) + {{ + return ADODAL.{0}Delete(deleteWhere); + }} +"; + public const string strtableADODeleteFromPrimaryKey = @" + public static bool {0}DeleteFromPrimaryKey({1} {2}) + {{ + return ADODAL.{0}DeleteFromPrimaryKey({2}); + }} +"; + public const string strtableADOSelect = @" + public static DataTable {0}Select(string selectWhere) + {{ + return ADODAL.{0}Select(selectWhere); + }} +"; + public const string strtableADOSelectFromPrimaryKey = @" + public static bool {0}SelectFromPrimaryKey({1} {2}) + {{ + return ADODAL.{0}SelectFromPrimaryKey({2}); + }} +"; + public const string strtableADOSelectFromPrimaryKey_bool = @" + public static bool {0}SelectFromPrimaryKey_bool({1} {2}) + {{ + return ADODAL.{0}SelectFromPrimaryKey_bool({2}); + }} +"; + public const string strtableADOSelectALL = @" + public static DataTable {0}SelectALL(string selectWhere) + {{ + return ADODAL.{0}Select(""""); + }} +"; + public const string strtableADOUpdateFromPrimaryKey = @" + public static bool {0}UpdateFromPrimaryKey(Entity.Table_1 obj ,{1} {2}) + {{ + return ADODAL.{0}UpdateFromPrimaryKey(obj , {2}); + }} +"; + public const string strtableADOUpdate = @" + public static bool {0}Update(Entity.{0} obj , string updateWhere) + {{ + return ADODAL.{0}Update(obj , updateWhere); + }} +"; + } + } + public class BaseTableENtityClass { + public const string strtable = + @" +/*************EntityClass***************/ + public class {0} + {{ +{1} + }} +/***************Entity*************/ +{2}/***********Entity*****************/ +{3} +/*************JSON***************/ +{4} +/****************************/"; + } + public class BaseTableSQLClass { + public const string strtablesql = + @" +/************Select****************/ +{0} +/************Insert****************/ +{1} +/************Update****************/ +{2} +/************Delete****************/ +{3} +/****************************/ +"; + + } + public class BaseTableAdoClass + { + public const string strtableado = + @"/************SqlParameter****************/ +{0} +/****************************/ +"; + } + public class BaseTableLinqClass + { + public const string strtablelinq = + @"/************add****************/ +{0} +/****************************/ +"; + public const string strtablelinqadd = @" +/************linqAdd****************/ +public static int {0}Add(Entity.{1} obj) +{{ + int rs = 0;//0 >>add failure + //1 >>Has been in existence can't repeat to add + //2 >>add success + using (DataObjectDataContext dt = new DataObjectDataContext()) + {{ + var query = from s in dt.{2} + where (your conditions) + select s ; + if (query.ToList().Count > 0) + {{ + rs = 1; + }} + else + {{ {3} + dt.{4}.InsertOnSubmit(newojb); + dt.SubmitChanges(); + rs = 2; + }} + }} + return rs; +}} +/****************************/"; + public const string strtablelinqdelete = @" +/************linqDelete****************/ +public static int {0}Delete(string objid) +{{ + int rs = 0; // 0 failure + //1 Delete the object does not exist + //2 success + using (DataObjectDataContext db = new DataObjectDataContext()) + {{ + var query = db.{1}.SingleOrDefault<{2}>(s => s.id == System.Guid.Parse(objid)); + if (query == null) + {{ + rs = 1; + return rs; + }} + db.{3}.DeleteOnSubmit(query); + db.SubmitChanges(); + rs=2; + }} + return rs; +}} +/****************************/"; + public const string strtablelinqupdate = @" +/************linqUpdate****************/ + public static int {0}Update(Entity.{1} obj) + {{ + int rs = 0;// 0 failure + //1 update the object does not exist + //2 success + using (DataObjectDataContext db = new DataObjectDataContext()) + {{ + var query = db.{2}.SingleOrDefault<{3}>(s => s.id == System.Guid.Parse(obj.id)); + if (query == null) + {{ + rs = 1; + return rs; + }}{4} + db.SubmitChanges(); + rs = 2; + + }} + return rs; + }} +/****************************/"; + public const string strtablelinqselect = @"// +/************linqselect****************/ +public static List getALLuserlist() +{{ + List rslist=new List(); + using (DataObjectDataContext db = new DataObjectDataContext()) + {{ + var querylist = from s in db.{3} orderby s.id select s ; + if(querylist==null) + {{ + return rslist; + }} + foreach (var obj in querylist) + {{ + Entity.{4} query=new Entity.{5} ();{6} + rslist.Add(query); + }} + }} + return rslist; + }} +/****************************/"; + public const string strtablelinqselectToIEnumerable = @"// +/************linqselectToIEnumerable****************/ +public static IEnumerable getALL{1}ToIEnumerable(?Expression> expression,int isall) +{{ + using (DataObjectDataContext db = new DataObjectDataContext()) + {{ + if (isall == 1) + {{ + return db.{3}.Rows.Cast(); + }} + else + {{ + return db.{5}.Rows.Cast().AsQueryable().Where(expression); + }} + }} +}} +/****************************/"; + + } +} diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Model/Column.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Model/Column.cs new file mode 100644 index 0000000..54beec7 --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Model/Column.cs @@ -0,0 +1,68 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace CsharpOSMeteorCodeGenerator.Model +{ + public class Column + { + #region Attributes + + private Table table; + private string name; + private bool nullable; + private string type; + private int? characterMaximumLength; + private bool primaryKey; + private bool foreignKey; + + #endregion + + #region Properties + + public Table Table + { + get { return table; } + set { table = value; } + } + + public string Name + { + get { return name; } + set { name = value; } + } + + public bool Nullable + { + get { return nullable; } + set { nullable = value; } + } + + public int? CharacterMaximumLength + { + get { return characterMaximumLength; } + set { characterMaximumLength = value; } + } + + public bool PrimaryKey + { + get { return primaryKey; } + set { primaryKey = value; } + } + + public bool ForeignKey + { + get { return foreignKey; } + set { foreignKey = value; } + } + + public string Type + { + get { return type; } + set { type = value; } + } + + #endregion + } +} diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Model/EModel.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Model/EModel.cs new file mode 100644 index 0000000..41fb505 --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Model/EModel.cs @@ -0,0 +1,94 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Data.SqlClient; +using System.Data; +using System.Reflection; + +namespace CsharpOSMeteorCodeGenerator.Model +{ + public class EModel + { + public static SqlConnectionStringBuilder connBuilder; + //use pubs select top 0 * from KFUSER + /// + /// 通过查询语句获得DataTable 对象 + /// + /// sql查询语句 + /// + public static DataTable ExecuteGetDataTableFromTableName(string sql) + { + //DataSet dsSet = new DataSet(); + DataTable dt = new DataTable(); + using (SqlConnection conn = new SqlConnection(connBuilder.ConnectionString)) + { + //建立Command + SqlCommand scCommand = conn.CreateCommand(); + //scCommand.CommandText = "select * from " + strTableName; + scCommand.CommandText = sql; + //建立Adapter + SqlDataAdapter sdaAdapter = new SqlDataAdapter(scCommand); + sdaAdapter.Fill(dt); + } + return dt; + } + + + + public static DataTable getDatable(string dbname,string tablename) + { + string sql = string.Format("use {0} select top 0 * from [{1}].[dbo].[{2}]", dbname, dbname, tablename); + return ExecuteGetDataTableFromTableName(sql); + } + } + /// + /// 将DataTable转换成泛型集合IList<>助手类 + /// + public class ConvertHelper + { + /// + /// 单表查询结果转换成泛型集合 + /// + /// 泛型集合类型 + /// 查询结果DataTable + /// 以实体类为元素的泛型集合 + public static IList convertToList(DataTable dt) where T : new() + { + // 定义集合 + List ts = new List(); + + // 获得此模型的类型 + Type type = typeof(T); + //定义一个临时变量 + string tempName = string.Empty; + //遍历DataTable中所有的数据行 + foreach (DataRow dr in dt.Rows) + { + T t = new T(); + // 获得此模型的公共属性 + PropertyInfo[] propertys = t.GetType().GetProperties(); + //遍历该对象的所有属性 + foreach (PropertyInfo pi in propertys) + { + tempName = pi.Name;//将属性名称赋值给临时变量 + //检查DataTable是否包含此列(列名==对象的属性名) + if (dt.Columns.Contains(tempName)) + { + // 判断此属性是否有Setter + if (!pi.CanWrite) continue;//该属性不可写,直接跳出 + //取值 + object value = dr[tempName]; + //如果非空,则赋给对象的属性 + if (value != DBNull.Value) + pi.SetValue(t, value, null); + } + } + //对象添加到泛型集合中 + ts.Add(t); + } + + return ts; + } + } +} diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Model/OSMyNode.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Model/OSMyNode.cs new file mode 100644 index 0000000..39ce28d --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Model/OSMyNode.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace CsharpOSMeteorCodeGenerator.Model +{ + public class OSMyNode : TreeNode + { + private object value; + public object Value + { + get { return this.value; } + set { this.value = value; } + } + } +} diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Model/Table.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Model/Table.cs new file mode 100644 index 0000000..004e879 --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Model/Table.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace CsharpOSMeteorCodeGenerator.Model +{ + public class Table + { + #region Attributes + + private string catalog; + private string schema; + private string name; + private List columns; + + #endregion + + #region Constructor + + public Table() + { + columns = new List(); + } + + #endregion + + #region Properties + + public string Catalog + { + get { return catalog; } + set { catalog = value; } + } + + public string Schema + { + get { return schema; } + set { schema = value; } + } + + public string Name + { + get { return name; } + set { name = value; } + } + + public List Columns + { + get { return columns; } + + } + + public void AddColumn(Column column) + { + columns.Add(column); + } + + #endregion + } +} diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Program.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Program.cs new file mode 100644 index 0000000..abc1991 --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Windows.Forms; + +namespace CsharpOSMeteorCodeGenerator +{ + static class Program + { + /// + /// 应用程序的主入口点。 + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new F_login()); + //Application.Run(new Form1Test()); + } + } +} diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Properties/AssemblyInfo.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..6de2f73 --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的常规信息通过以下 +// 特性集控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("CsharpOSMeteorCodeGenerator")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("微软中国")] +[assembly: AssemblyProduct("CsharpOSMeteorCodeGenerator")] +[assembly: AssemblyCopyright("Copyright © 微软中国 2013")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 使此程序集中的类型 +// 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型, +// 则将该类型上的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("f608282d-db92-4779-88d9-e1cb7ab54a7e")] + +// 程序集的版本信息由下面四个值组成: +// +// 主版本 +// 次版本 +// 内部版本号 +// 修订号 +// +// 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值, +// 方法是按如下所示使用“*”: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Properties/Resources.Designer.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Properties/Resources.Designer.cs new file mode 100644 index 0000000..b7025fd --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本: 4.0.30319.1008 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将丢失。 +// +//------------------------------------------------------------------------------ + +namespace CsharpOSMeteorCodeGenerator.Properties +{ + + + /// + /// 一个强类型的资源类,用于查找本地化的字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// 返回此类使用的、缓存的 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CsharpOSMeteorCodeGenerator.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 为所有资源查找重写当前线程的 CurrentUICulture 属性, + /// 方法是使用此强类型资源类。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Properties/Resources.resx b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Properties/Settings.Designer.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Properties/Settings.Designer.cs new file mode 100644 index 0000000..6aeff11 --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.1008 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace CsharpOSMeteorCodeGenerator.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Properties/Settings.settings b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/about.Designer.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/about.Designer.cs new file mode 100644 index 0000000..1df52e9 --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/about.Designer.cs @@ -0,0 +1,235 @@ +namespace CsharpOSMeteorCodeGenerator +{ + partial class about + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(about)); + this.linkLabel1 = new System.Windows.Forms.LinkLabel(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.linkLabel2 = new System.Windows.Forms.LinkLabel(); + this.label8 = new System.Windows.Forms.Label(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.pictureBox2 = new System.Windows.Forms.PictureBox(); + this.pictureBox3 = new System.Windows.Forms.PictureBox(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).BeginInit(); + this.SuspendLayout(); + // + // linkLabel1 + // + this.linkLabel1.AutoSize = true; + this.linkLabel1.Font = new System.Drawing.Font("宋体", 10F, System.Drawing.FontStyle.Bold); + this.linkLabel1.LinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(192))))); + this.linkLabel1.Location = new System.Drawing.Point(178, 210); + this.linkLabel1.Name = "linkLabel1"; + this.linkLabel1.Size = new System.Drawing.Size(431, 14); + this.linkLabel1.TabIndex = 1; + this.linkLabel1.TabStop = true; + this.linkLabel1.Text = "http://blog.csdn.net/osmeteor/article/details/9082353"; + this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("宋体", 10F, System.Drawing.FontStyle.Bold); + this.label1.Location = new System.Drawing.Point(13, 210); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(159, 14); + this.label1.TabIndex = 2; + this.label1.Text = "The author details:"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("宋体", 10F, System.Drawing.FontStyle.Bold); + this.label2.Location = new System.Drawing.Point(11, 46); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(54, 14); + this.label2.TabIndex = 2; + this.label2.Text = "sina:"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("宋体", 10F, System.Drawing.FontStyle.Bold); + this.label3.Location = new System.Drawing.Point(13, 99); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(38, 14); + this.label3.TabIndex = 2; + this.label3.Text = "QQ:"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("宋体", 10F, System.Drawing.FontStyle.Bold); + this.label4.Location = new System.Drawing.Point(12, 140); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(86, 14); + this.label4.TabIndex = 2; + this.label4.Text = "QQ Group:"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Font = new System.Drawing.Font("宋体", 10F, System.Drawing.FontStyle.Bold); + this.label5.Location = new System.Drawing.Point(12, 174); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(62, 14); + this.label5.TabIndex = 2; + this.label5.Text = "Emali:"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(104, 101); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(59, 12); + this.label6.TabIndex = 3; + this.label6.Text = "406662428"; + this.label6.Click += new System.EventHandler(this.pictureBox2_Click); + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(104, 176); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(131, 12); + this.label7.TabIndex = 4; + this.label7.Text = "meteorsoftware@qq.com"; + // + // linkLabel2 + // + this.linkLabel2.AutoSize = true; + this.linkLabel2.Font = new System.Drawing.Font("宋体", 10F, System.Drawing.FontStyle.Bold); + this.linkLabel2.LinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(192))))); + this.linkLabel2.Location = new System.Drawing.Point(126, 46); + this.linkLabel2.Name = "linkLabel2"; + this.linkLabel2.Size = new System.Drawing.Size(263, 14); + this.linkLabel2.TabIndex = 1; + this.linkLabel2.TabStop = true; + this.linkLabel2.Text = "http://weibo.com/systembreakdown"; + this.linkLabel2.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel2_LinkClicked_1); + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(200, 142); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(59, 12); + this.label8.TabIndex = 5; + this.label8.Text = "185748894"; + this.label8.Click += new System.EventHandler(this.pictureBox1_Click); + // + // pictureBox1 + // + this.pictureBox1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("pictureBox1.BackgroundImage"))); + this.pictureBox1.Cursor = System.Windows.Forms.Cursors.Hand; + this.pictureBox1.Location = new System.Drawing.Point(104, 132); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(90, 22); + this.pictureBox1.TabIndex = 6; + this.pictureBox1.TabStop = false; + this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click); + // + // pictureBox2 + // + this.pictureBox2.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("pictureBox2.BackgroundImage"))); + this.pictureBox2.Location = new System.Drawing.Point(73, 88); + this.pictureBox2.Name = "pictureBox2"; + this.pictureBox2.Size = new System.Drawing.Size(25, 25); + this.pictureBox2.TabIndex = 7; + this.pictureBox2.TabStop = false; + this.pictureBox2.Click += new System.EventHandler(this.pictureBox2_Click); + // + // pictureBox3 + // + this.pictureBox3.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("pictureBox3.BackgroundImage"))); + this.pictureBox3.InitialImage = ((System.Drawing.Image)(resources.GetObject("pictureBox3.InitialImage"))); + this.pictureBox3.Location = new System.Drawing.Point(67, 20); + this.pictureBox3.Name = "pictureBox3"; + this.pictureBox3.Size = new System.Drawing.Size(53, 53); + this.pictureBox3.TabIndex = 8; + this.pictureBox3.TabStop = false; + // + // about + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(620, 249); + this.Controls.Add(this.pictureBox2); + this.Controls.Add(this.pictureBox1); + this.Controls.Add(this.label8); + this.Controls.Add(this.label7); + this.Controls.Add(this.label6); + this.Controls.Add(this.label5); + this.Controls.Add(this.label4); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.linkLabel2); + this.Controls.Add(this.linkLabel1); + this.Controls.Add(this.pictureBox3); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "about"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "about"; + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.LinkLabel linkLabel1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.LinkLabel linkLabel2; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.PictureBox pictureBox2; + private System.Windows.Forms.PictureBox pictureBox3; + + } +} \ No newline at end of file diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/about.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/about.cs new file mode 100644 index 0000000..db6b53e --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/about.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace CsharpOSMeteorCodeGenerator +{ + public partial class about : Form + { + public about() + { + InitializeComponent(); + } + + private void label1_Click(object sender, EventArgs e) + { + + } + + private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(this.linkLabel1.Text); + System.Diagnostics.Process.Start(startInfo); + } + + private void label6_Click(object sender, EventArgs e) + { + //http://wpa.qq.com/msgrd?v=3&uin=406662428&site=qq&menu=yes + } + + private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + string url = this.linkLabel2.Text; + System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(url); + System.Diagnostics.Process.Start(startInfo); + } + + private void pictureBox2_Click(object sender, EventArgs e) + { + string url = @"http://wpa.qq.com/msgrd?v=3&uin=406662428&site=qq&menu=yes"; + System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(url); + System.Diagnostics.Process.Start(startInfo); + } + + private void linkLabel2_LinkClicked_1(object sender, LinkLabelLinkClickedEventArgs e) + { + string url = @"http://weibo.com/systembreakdown"; + System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(url); + System.Diagnostics.Process.Start(startInfo); + } + + private void pictureBox1_Click(object sender, EventArgs e) + { + string url = @"http://shang.qq.com/wpa/qunwpa?idkey=ac8d7a501d7ae846eb4c47d87128097fdedd6c2db54b00c49c7b850875c9352a"; + System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(url); + System.Diagnostics.Process.Start(startInfo); + } + } +} diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/about.resx b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/about.resx new file mode 100644 index 0000000..95ef656 --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/about.resx @@ -0,0 +1,408 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + iVBORw0KGgoAAAANSUhEUgAAAFoAAAAWCAMAAAB37HsnAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAMAUExURVYeE6BkRSlyq0lwlaS3zBKO0rz//0az7qSck9C/tkaVwkt5eReg6XK85P/w8n5FKwx/ + wM7U322hx2OzkqHS7Niwk7SCZDOh2xSU5FOv4Ovu9nLh9pNTMf/b2iOUz73d7mOUvC6As+XPs0Gd0Gwz + Gw6172S76oinwd3o9oHC5M2beW52Y9Hj7RWb5iKU0l1aQKJtWsWQakKQvxmk7bu70uHX1pTV9iak6kmV + 2pVcQkjP+bDZ74PI7bWhoBmj8ODErRee6a9ySGix197v+u3y+3o0JIuso1iZwjCJv42grlKr293M2XNA + NsbM1ntSTCiq7f7+/7+IWHOTeYWx0tOoj1N/n/H1/PDXwCWe4Nzj7RSV26l2YtHp9jSNwg+JzJhiV5LN + 7VslG9/w+ZDI56LZ9UydynTApHOXtWM+Jxmf5zKc1O/4/c/Gyprx/qLF4Hdzd9SZab6bhd7V6//i7rS3 + mLR5TfXgy1d3YVKk0IU/LaVmVbu/3X5LO5NgSBTB9nTG8la67zqUyGS/8Ja71hSt8Ofm62gvI/LWu+Pq + 9ZVaNzSn6MHm+ebu+ayCcHQ1KNTb5kuj0bV2Yj2LuurEpaNsTbSVjei6lbnM3E6Da3Kdv4TN9IRJK0Gh + 1cSrni6Eu5q156RwVnPB62u5mhOR1WYnGXCozxKKy2ObwyWb3ItTR4xKO8mWcjat7bLh+ZxmQnK43m89 + NeHn81S16krS+6lqQuzIqreflDWn5d7R43ybuNHs+6puXu/QtJBYTG0zI9je6dCig3mAZrJ9WBqf6Jxd + Nunv+ix5rhqM1jiw75mu29nEtbWJcYRELU10mfPbw14qIHo9K3k+I51kS97x9F6869CumrHb8pfO+T6Z + zHOewEqZxsDh88fU2KLP5t7l8EKl2sORceDw+ZKrww2DxMGpqP/j9P/e5IB4efD5/Ser73Tk/rzD4zeR + xk2hzrZ+UmXE9Nfd6NDn9HM6K4pLKKpyUGApH5pePd21mIq21BfG+TOf2KPb+IJHOlZ/ovfk0JpXReTS + MgcAAAAJcEhZcwAACxAAAAsQAa0jvXUAAAPYSURBVEhLtZELVBRVGMdHayNrycRJbLOyfMRa16ipqNzq + KmMWvS69d93WoE2TtTLMInuApTK2Y2jrI2B7ADWiTNHuRm642ZNeCqXV9phCJrJMspLKNMH8vpnd7HQ4 + R88B/+fM/f7fY35z517OXb/4kKjoW27Cyawn/dpbfbadKxJv7EFM6K1+WswVyYiyLbsy7+oZ8xft7Deg + j9DCCECLomh7fcOSOQteXjds/PhXls6HQt+hv39gyeo5a/O4l3J/mT172X50RYUZTe3ZkzAHpRHcdkRP + +Wf12syuj7s+yX17Ye4F+9EOhxlN1br//dJ5cNP+FDAfvAjOew24CN5+4e6ocPGdH+LIl9ztiJ74xKpV + k6c81LVu4SXrN1b+D+2HV3QjzfGpRhQa9RzlJG2rKqhb3QVK0N0INTLv0/MjhUKkcNuzxoyJtj3/Z+b6 + wPVDOrl79t60YWQSXYL7YCVaqpJjokczrxGLWQERhBrdK3j1GiKQv1kx7NWYzsblRApDc7mvAd20Ke+4 + WGnsr7zMvfe1LN2YRBOF5xU9rFUJYRMdH8eMbcc1IAuC3Sf47GiIFocvzXNaIlEiRDqwlETbxnQ2lLaU + NnSOaWmJ7XwY0e8Ybf5W4T9olR3PG9vWeFyFKiawKsPxWuKso9twLcTaXO6oDCB93i8Auw5sejPWcNaw + ixA93YqKO6yItoZ1zLwaSWcqljVMrY5sq+gwXJy3Wl2Rc9rbLTWeCzs8HgK1nwHd1NR07uS2QEOg7bk/ + Zs6sfHcGFNh0ivKNpoimYR2SR9lmSm7zg0tlKnZ1nvLYoCpLhRUPewulkQ4sUXqLiZZPe7quru7VHwcu + Xz7w9yMRbXRLxJupuCaBTvHZCaW1egWlrh2NJTTLL6bTdNGv0pTGHS5Kd+dH20dtOQIP5BgYBPTZGbIs + f+dkH7UNYM67Y4EhlWd+I8sGOku3kyz2uAbD+TTss8P7lGz2eSm18FCLBwklBdjlx0LnhC+i5JFZHuNA + cNJEvzZtBZOuk9iKaZefeu9bI08HNAFVuWsZ04hWr+Tkq7rdhTVCgnoFITVKMNu9BlOLUs/iaDx4j7MI + iXRgRshl3JMZstS96ytbeVq5VL6re+rU6mvvkEy0SyGKYiEWl+ESZJJ0Y8cxVozGFXQzpgLzimNH/QDh + QaOdRKetHL7yBXjSbqiuHjz4/gT6ALIoiY8MVRQFgssCNfihdqNInjHQh3c3H9bcjM/RT4EuPTj0AWSi + W98oKysbdBVoEJjfnH2EnnSXLEuSFAq1OkGtoVBIkuAah/ZW77/HnTHplJ7Uv7fq/9g+iW2284darYMA + AAAASUVORK5CYII= + + + + + /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB + AQICAQECAQEBAgICAgICAgICAQICAgICAgICAgL/2wBDAQEBAQEBAQEBAQECAQEBAgICAgICAgICAgIC + AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL/wAARCAAZABkDASIAAhEBAxEB/8QA + HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh + MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVW + V1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG + x8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQF + BgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV + YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE + hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq + 8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD+yT4w/GLxF4P8QfEO/u/HU3gvwd4AiRryay0/wubW00rTvBei + eM9c1/Wr3xF4f1GWSRI9cuFIg+zwxW2lxnynlaWRv5+9V/4L9fGWXxH4f1fwR+z7478WfAnxP8NPih8b + dC+It/8AtBfsl+E/iZrfwZ+DF/4ptfiP4+0P9n7U/Ab6vqC29j8P/ibqGl6W99Bq3iLTvg548v8AQbPU + LLwH4vuNG+ov+C1vx1b4P/BX47eFbTwXe/EDW/2jfH2l/sx6J4ZsXvUecfFf4CeH08UahNJYQs8NvZeA + dH8X3hdngiVrJWluIkBavzm/Zn/Yw/b/APG/wC8R/s1fD3wv8DbHwF8Dpfjl+yVrfinxr4T8I3F7pdhr + Gq+D774ueDLXWE8Ug+IfCGraj4V+HeoalHe+FprXxBJ4P0e512PWbuxiePLxY8RsZ4eYXgfLeGPDlcaZ + vn2Gw9StGlSwydOm6MHKrUnPD4ibtJ80/cTcG3Gbkmo+r4H+BuN8X8L4l8VZv4oYLg/JOE83eCcMyznE + 5fyUq1XFKOIoRVWjRq04So/Vo0qdWVX2rhGOGnFuUf6Jf2fP2rbr43aB8Kfih4G+JN941+HvxIbwff6S + 1/pngoWeo6P4s1nTtBniuG8P+GbO4sdWtJdSm3Il0RBe6Y0M6zxiSM/pVX8nv/BHHxL4q+H1l4u/Yl8b + eBrjwlrv7F37RWi/DXTtdjm1690L4j+E9d/aL1+PTvG3hvVPEGlWcmr6RceJfDnjFILiKJY/s8NvC8UF + 1Dcwp/WFX2/FMsDisBwxm2CwFPLlm2EjVnThTp0+WbjTcoSVK8HKE5Sg5RlNO3uzlHlZ+YcJ4XMcozzj + rhvH55LiGPDuZVMPRxftq1enXoxnVjSxFCWIjTrKjiKUKdaEalKjUSn+8o0qrnBfll+1R8LfHXi7xX8T + dKsPD/iQWPi3VvDuraXq1j4F8WeONC1PRY/CHgXQ9V06/TwYnm28dxceF9f0+8t2vNOv1tb4XFtIizW8 + 58rtR+2jp/g288HxePfGdzbSXCpp8t1+zP8AFGcadopiuoZtH85wb+9+SW1WG6l1A3ES2mGeR5DIP2ho + rw8fV4bzjFYXMc44fr4nNMNlcMo9th84zTAxeDp8zjajg8RSpRxEZTnOni4x+t0ZzboV6aUVH0MFk3EO + TxzLDZHxRDAZfmWZVM0lSq5TlmNksVVlFyXtsXQqVXRahGEsO2sPUhG1WlUcpyn+MXwJ+EfxV0Hxd4ds + tU0fxzrkt98WNE8YS6hqfw48deEtL0TSl8f6N458QJda340s/wDSIIYdO1yZJr/U7vUrye9jtka4neFD + +ztFFZ4rGYL+y8gyLKsueWZNw1hoYTCUpYnEYupCjTjCFOEsRip1K0406dOnCCqTnKMY252uVR6snybE + 4DH8QZxmOZf2rm/E2Kli8VWjhsPhITrScpTmsPhoQownUqTnOo4RjGUpX5FLmlL/2Q== + + + + + /9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYG + BwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoK + CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAAyADIDAREAAhEBAxEB/8QA + HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh + MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVW + V1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG + x8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQF + BgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV + YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE + hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq + 8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9FfH3ijxLrfieL4QfDa+az1Se1W61nWxbhxo1k5dVkQOCklxK + 0bpGpyq7XkYMECSf4ycP5Rl2X5XLPs1jz0k3GnTv/FqLdO1moQ3k+ukVq7r9iqVJVJezho+rET9lv4Dy + 6fNZ+JfhppviCS6R0vL7xLB/aNxc7/v7pLje2G7gYXgAAAADCv4kcX1Kqlh8S6MI/DCn7kIpbJKNr287 + vvqSqFO1mijcfspfDzRDLqfwk1bW/Ad+VPlSeGNTkjtFbaVUtYyF7SQDj70WeBgiuzDeJecYhqnnNOnj + Ke1qkFzWvraokpp+fMRPDwveGjJ/2fvilr/ihdV+FnxDWYeMvBbw22uzvaeTHqkTqfI1KBeginCOcD7k + iSJzsBOHHHDmEwKo5vl1lg8UnKCvd02vipy3d4XtvqrPqKhWcr05bo9GmEgYgbevJPFfn0djqg7IjaIM + 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 + LxbokC2mppGduUF1EFlCnJ43Y5Nf1F9HrF4rNoTwOOqSq0LL93NuUP8AwGV4/geJmaUK3NHR2Pniy/aZ + /aQl/Y01PxFL+0D43bUE00FL5vFd4ZlO1+Q/mbh+dfp3+qXCq4qjFYCha/8Az6p9/wDCcMMRXdF3m/vZ + 9q/sSadp+i/s/fCzxXo1jDaap4ls7afxHqVrEI7jVZSxy9zIuGnY56uSa/GvEJvE55mOFre9TpO0IvWM + FZfDF6R+SR6+XpewUup9BfFiaWK43Ryspj0W8kQq2Nr74V3D0O1mGfRiO5r8k4OhH6rN23qRXySk7el0 + nburnrVty34/sLGP4favZJZRLDDpcvkxCMBY9qMV2joMEDGOmBXl8OYjES4qpSlNtynq7vXXr3OtpKKJ + /BMEN14M0i6uoVklk0y3aSSRQWZjGpJJPUk9668yxOJp5jWjGbSU5JJN2Suznsj/2Q== + + + + + /9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYFBgYG + BwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgoKCgoK + CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCAAyADIDAREAAhEBAxEB/8QA + HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIh + MUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVW + V1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG + x8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQF + BgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAV + YnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE + 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 + /P8E5Pv/HqS+/xXh9f8S3vL/IsHe/zCUt/80j7T/LoSl/x6/3P8Y0uz/JrPY/xzQ7P8hxub/Hb/b/zR5 + qP8Zu+L/Bdv5/wHQ9v8D0/n/A9b4/wDa+/8C2vr/Hcvo/ybG4P8mzOT/JcHa/x3a8f8cprz/AuT5/wLj + +f8D4/r/A+P7/wPj+v8dlKz/KNzz/zKfvP83i6//M5e2/yK20/8X2vT/LbbU/yzA3v8V2Pb/Ctn4/yDC + 5f8V1vP/JajJ/yuOvP8byuv/BNP5/wTU+f8E1vn/ANr7/wPb+f8Q1+7/I8fi/yjE3f8uvtn/EOL2/yKZ + rv8G4/n/A+X6/wPl+P8N4/b/IsTW/xxOYf8WTFz/FTtR/yVSaP8tyN3/HdLo/yTA3P8Z3Pb/JcTg/x7G + 4/8I3Pr/DNv4/yK/4f8W2/L/Jomr/yqbw/8D1fn/A9b6/wPY+v8A2fr/ANr7/wzY8/8jyOH/IsDa/zSz + 0P8L4fn/KZSs/wXj+P8J5fj/G9fr/yZ4i/8ZVmv/HrrQ/xTe8/8V4vX/HLbJ/yFuhP8lrsP/CuH4/wrf + +P8hyeP/Jcfj/xnO6v8a0vH/J7LW/ya92/8qwdz/LZGw/wHY+f8B2vn/Ad35/wDb/P8A2vv/C932/yTA + 2/8lyOD/KrnT/wni+v8sjqj/C+H3/yLL4P8xfJP/Ho2g/xPi9P8F5/n/BOL6/wTj+v8E4/v/FeD0/x94 + jP8d0OL/MKTG/xfe9f8ow9v/HtHp/yHL5P8lxuL/NbXQ/yuiv/8ls8//A9f5/wPa+v8A2/j/ANv5/wLc + +v8L3fb/J8rf/ybH3v8ts8z/COP6/ymFm/8Y1Oz/LZKu/yagtP8J5ff/AeT7/wPn+f8C5vv/Beb6/wTl + +/8E4/r/G7HG/zqZsv82ssv/Isbe/ym71v8ext3/IsXe/yyJpv8wcZf/LH+h/yOuz/8B2fv/ANr6/wDc + +P8A3Pr/A935/xLW7f8lxtz/KMnd/y6nvv8G5Pr/Ioui/yHM4P8nvNb/C+j5/wTo9/8C5vn/CuX3/w7j + 9/8J5vr/C+f5/wnn+P8brb3/KsLX/zykvf8sv9X/KMTe/yW10/8upsb/MJG2/y5skv81r9T/JZm//wDa + +/8A2vv/ANv7/wHd+f8F4Pn/Ftnw/yfI3v8lzN7/MZqz/wfm+/8imK7/H8/i/wXl+v8B6vr/A+v7/wPp + +f8ixdX/G1pu/xp4iP8kaH3/KZCi/y2kuf8qxNj/L6C5/yWwzv8vnMT/LLDR/y6tz/8xmr//LoGf/yeG + pf8mgJ3/ANr7/wDZ+v8A2/z/Adz5/wLf+P8ezeb/Kb7Y/yrJ3/8skqv/BuX6/yKds/8Z1uf/Auf8/wHo + +/8B6Pr/Cun3/yOTpP8nna7/PqvD/zasyf8vscr/NX2X/zNui/81j7P/MJvC/y+fxP8ul7j/Kpe1/xm0 + zv8R4Pb/H8jl/y91o/8A2vv/ANv7/wHb/P8B3fn/BN/5/xrT6/8rv9n/MrvV/yaNpv8H5fr/J5Wr/xXZ + 6/8B5vv/AOf6/wbl+f8gu87/LGN0/zN5kf8siKD/Npy8/zC0zv8pwNj/L52//y+bw/8mhKv/JZa2/xbR + 5f8O4vf/CuP5/w3j+v8T3vb/KYi2/wDY+f8A2fr/ANr7/wHd+f8G3vb/Kb3Y/y261f80rcX/GKG7/wfj + +f8rg5r/DOL4/wjl+v8Q5Pj/Iaa5/zF9kP8fo7b/J5Sw/zSbuP8hv9f/DOH2/w/j9/8krcj/KI2w/xjL + 4f8L5Pj/DeX2/xfI3/8ZpsP/ILrV/wnj+P8smsH/ANn6/wDa+v8A2vv/Adz4/xDa8f8tsMz/LrbO/y2I + nv8U2fD/Hczg/yF8lv8L4/v/GdLk/xlqff8zkKf/N5Cq/zCds/8U4vT/D+H0/wnj9f8fvND/HpGt/xnD + 2v8L4vf/CeL5/xrO5f8gkbT/Ea7J/xHf8/8Z0ur/BuT5/yegwP8A2vv/ANv6/wDc+f8F3fr/Hsji/zCx + zv81qsX/I5Oo/w7k9/8db4T/ILXO/wTk+v8frsT/KpGl/zKetv8k2On/OpSt/y5/mP8Z1+v/CuT5/yWb + sf8O4vX/DuH6/xnH3/8gkrP/GrXS/w/e9v8C5fr/A+b7/xrP6/8G5vv/KKrI/wDa+P8B3fr/Ad77/wbd + 9/8ru9b/OarG/y6Rqf8Z3fD/IZCi/ydZcf8W2vP/BeD7/yCFm/8unbr/Hd/v/y6twv8wz+L/K6zC/yec + tP8O4fj/J8Td/w3i9f8gnb3/F7HT/w/c9/8I4fv/BeX7/wLl+/8D5/v/G9Ds/wXk+/8YsM7/Adr7/wDa + +/8A2/z/A936/yDA2/8xkqv/H9nw/yOYsP8ek6z/IbHI/xy0x/8Y2e3/IoKV/yCyx/8l2ef/MKO3/yXC + 2f8lvtH/J4ue/yGzzf8lxd//EN73/xu92/8F4vv/AOb7/wHn+v8B5fn/Aub7/wHm+v8Y0+v/CuP7/xXG + 4f8A2fr/ANr7/wDa+/8C2/r/CN31/xTb7/8fhpr/I7DE/wnf+P8Q3/f/KIae/xyGnf8Zvtb/D+Dz/zSQ + qv8yvtP/LKi//zSLov8kxNn/J5my/zKtyP8S4vj/HsDb/wTn+/8B6fv/Aej6/wLn+v8B5vv/Auj6/xLV + 6/8Q4Pb/Fd71/wDa+/8A2vv/ANr7/wHb+v8G2/n/GMTd/x7G3f8F4fj/AeT6/wPj+f8fqrz/I2N2/wri + 9/8F4/r/Gtfu/yORpv81ka//L3mV/xLg9f8Z3fD/OJav/xba7/8gwNn/Bun5/wLq+v8B6fn/Aun5/wLo + +/8B6Pj/D+P1/xPV6/8N4vf/ANr7/wDa+/8A2vv/ANz5/wHc+v8C4Pj/A+H3/wLg9/8A4/r/AuX6/xLj + 9v8sqsT/E+H4/wLm+f8E5fr/E97w/ySzzf87epn/H9Lm/wrm+P8oqL3/Hs/j/yLI3v8J6fj/Auv6/wHq + +P8C6/n/Auv7/wHq+v8G6Pj/G9Hq/wXl+v8A2vv/ANn6/wHa+/8B2/n/At/8/wTf+/8C4fj/AuL5/wHj + +v8B5Pn/CuP3/ytnfv8io7j/BeT6/wbn+/8T4PH/KMPX/zFwif8yt83/KMnc/yOitf8n0OL/G87i/wzp + 9/8E7vr/Auz4/wPu+/8B7Pr/Aer6/wLr+v8e0en/A+X6/wDZ+v8B2vv/ANn6/wDZ+v8B3vr/AN/7/wHh + +v8C5Pr/AuL7/wLl+v8U3vP/JGqC/y6Yrf8e2On/Duj3/wvn+P8a2On/KMbZ/y2JoP85qLr/LX6R/ybT + 4v8X2+3/Ednp/wPt+f8B7Pj/Ae35/wDr+f8B6vr/Aun5/xnU6v8J5fr/ANn6/wDY+v8A2Pr/ANn5/wDa + +v8C3Pv/At74/wLg9/8C4vv/A+b7/xnb8P8itc7/JKG0/0OTrP8wi5//HcbU/xDi8f8l0eL/K8XU/yuc + sP8gYXf/LcvZ/xbp9P8Wytz/BO76/wLt+f8B7Pj/AOv5/wHp+v8F6Pj/Etzv/xDd8P8B2vv/ANj6/wDX + +v8A2fr/Atr6/wTb+P8D3Pj/BOH2/wTj+/8C5vr/G7XI/x/S5/8fprv/SIWd/zN5j/8nZnn/Jdvr/zfA + 1f8xw9X/Oae5/yuFmP8uh5v/GeLt/yDD1/8H7vr/Bu75/wTt+P8E7Pn/Bun6/wvn+P8Z3PD/JLnS/wHa + +/8B2fv/Adn8/wDc+f8Pz+//J8bn/w3b9f8ixuD/Gdfw/wLl+f8ZoLP/GN7w/xrU5/8zcIb/J42j/xzg + 8v8kfIz/J3iL/yx5jf8si5//KZ+w/zuru/8c0Nv/Ir3P/xni7/8T2ur/ENDi/xbH2/8cvdb/Gb/Y/xrG + 3v8W1ej/ANn6/wLZ+f8E2fn/A9r5/wba+f8K2/j/Bd35/w3e9/8H4vn/AeX6/xnH3P8Zyt7/BeX5/xvY + 6f8N4/b/Bef5/wvo9/8K7Pn/D+vz/wvs9/8J7fj/LbTB/yXC0P8U2OX/FMXZ/xHV5/8R3ez/EOj1/w3q + +P8J6/j/B+r3/wbo9/8A2fr/Adn6/xPY9v8N0vD/Cdr4/wrc+P8F3vn/A+H6/wPk+/8C5vv/GNvy/xi/ + 1P8C5vn/Auf5/wPo+P8D6fn/Aer3/wHs+P8B7vj/A+35/wjt+f8isL7/KKO4/xrf6/8W4O7/GNfm/xTO + 3P8Vw9b/Fr/V/xy91f8hts//H7DK/wDa+/8Q1vb/No+v/x7H5f8vtdT/MKjG/xjV7f8ayuD/CeL3/wHk + +/8Z4fX/HrPJ/wXm+f8B5vr/AOj3/wHq9/8B7fj/AOz4/wHt+f8B7fn/Cu76/yWovP8Y2ej/FKzD/xav + x/8TtMr/FM7f/xTf8P8P5vf/DOf3/wro+P8J6fn/Adv8/xfO8P88kLL/Lp/A/zGTsv8ysc7/KrXN/zy7 + 0f8N5Pf/AuT6/w/j8/8qrMD/B+f5/wHp+/8A6Pn/Aer4/wHr+P8B7fn/Ae35/wPs+v8Y4O3/G7nL/wPt + +f8C7fj/A+v4/wLr+P8C6/j/Aur5/wLr+v8D6/r/Aej5/wLo+P8B2fr/Ctf4/yS62/8V0O7/Icrl/xjS + 6f8a0ur/JL3V/w3j+v8C5fv/Buf3/yWxwv8U5vb/Aer7/wLr+/8D6/r/Aev5/wLt+v8B7fj/Bur4/xuy + wf8Xytr/Auz4/wLs+f8C7Pn/AOv4/wHr+P8B6ff/Aer5/wHq9/8B6fj/Aef6/wLa+v8J2vj/Cdv4/wje + +f8H3/j/BOP6/wPj+f8K5Pn/Beb5/wHl+/8F5/n/HNDg/x23zP8D6vr/Aez3/wLr+f8B6/r/Aev6/wPs + +P8G6vj/HX+T/xPl8P8C6/j/Aez4/wLr+f8D7Pr/Auv5/wHq+P8C6/r/Auv5/wHp+v8C5/z/Fdb1/xvJ + 5/8mwd//Jcni/xzR6/8Y2vP/DOP6/xXc8P8J5vb/Aub7/wLn+v8I5vf/KKe8/xDk8v8C6vn/Aur7/wDq + +v8D7Pv/B+r4/xzL2f8duMj/A+r4/wHr+P8B6/j/Aer4/wDo9v8B6vj/Aen4/wLr+v8B6vj/AOf4/wLm + +/8budv/H77e/yfB4f84i6//JrrV/yaz0P8mzub/NbPP/xna7f8C5vv/Auf6/wPm+f8W3O3/Jpir/xPo + 9v8G6vj/C+r4/xPk8/8fsMP/JHyV/xPj8v8C6vr/Aev4/wHr+f8B6vn/Aen6/wTq/P8C5/v/Aej6/wHo + +v8A5Pn/AeP6/wTZ+v8O1fb/E9P1/yLH5v8S2fX/GMzq/xfP6P81oLr/Ftvv/wHk+v8B5vn/Auf6/wTn + +f8b1eX/KY6m/yOgt/8ghJz/In6U/xy0xf8T6fX/Buv4/wLr+/8A7Pn/AOv4/wLr+/8B6vv/Aef7/wHl + +/8B5/n/AOb5/wHm+f8C5fj/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + + + \ No newline at end of file diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/bin/Debug/CsharpOSMeteorCodeGenerator.exe b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/bin/Debug/CsharpOSMeteorCodeGenerator.exe new file mode 100644 index 0000000000000000000000000000000000000000..e72244f5bb7c19ae03dd824bc0c38ada5e04a29d GIT binary patch literal 244736 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

    C%kPbByCeZ5n=aKp?<1#1-S{_G+ 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 GivNEtBdgp1 literal 0 HcmV?d00001 diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/bin/Debug/CsharpOSMeteorCodeGenerator.pdb b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/bin/Debug/CsharpOSMeteorCodeGenerator.pdb new file mode 100644 index 0000000000000000000000000000000000000000..2b06aa1bf58870aa34f3e722a9fd742b32d6417a GIT binary patch literal 202240 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�Hc2jL3% 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

    +Ili%mGY*da*VU9tSgFGdKx$ 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 Q2Hfxu+oTNhck=6h0BG2bAOHXW literal 0 HcmV?d00001 diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/bin/Debug/CsharpOSMeteorCodeGenerator.vshost.exe b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/bin/Debug/CsharpOSMeteorCodeGenerator.vshost.exe new file mode 100644 index 0000000000000000000000000000000000000000..bb84a51ac4f20534146c09f2fd9c928d15a903b2 GIT binary patch literal 11600 zcmeG?2~<)?tG75|5OPOMcC{DsnWb(K|p-9Gz zCYX{WA(Jm;dIfQqiJ};SrLL}G(n&hl8zFy;j>apOj_;bS1<^27Oc^0Hz(7W(Czb%1 z@VUW90w!d%4!)s8@lWO`4L-o%@Fz33`3PxI|9bMyD%lrO3DBh`b_0^65V}%-gn|b^ zWm*RtcF<41tL^XP%x>1H-pWw-?KO@iBWB8={z?S^v{7pXzI!Jo%+8WXB|Jbhzz%$;+6FHiiU_~N3I z3EN^9UtHuj{7z%|8vGH<%)(m1Ea7^jMXH#Y>ya2$DiaMPF|c+I&NvSYVbqF9*~#r#ILj8dWjm251tb7C6J%*T7omHQ z|3QZ`M<(G55b{zd>0OBcT-q z$5D_+!Bh&aq+kUFn<&Vjy~Gre83lc5nD5M>aGT=)?fZgOM>nV`Kqv zI0bDf=!~2J||60WgZ0+&DGHhBHk2136`;HfS!lVrq~L;Qp?LLw4#2#K5zlOj)1BCy1d77#r{JpDO<77O@Xp{xhn!4xZ$h!p@= zFfDSIN{Pg1K}r~3)_Zst+KZ6#Bz!U1wTDViV=OmGAajRFq+hp^({qI>UpIiLVv=~h zxay+kDH5kh_;K;yXzG;G*Tj7I0^&~_{e-b1Ng|izo-6pOSGO>vq9h3^M-Ep;2n2i? z;VA;Ob9u6_h6EBx&>#pUI*0gkg>gyTxL$JaT8kGU;HGf+ao-Tzcp`=5x@Rq2jC5KA zDL81CbnCa%R49SU_|be|v6omoM|<(PaYE7-c~ay>L?^|?aX&MN4jh;n*m;M|z$BDt zLV?wpRH>I1yLLe*EkY6~5>Aj35>FW2!};IZ6RZg`l4U+2WpPr3Jg{aVFJ1yBKdala z!{Q|bH-_8;-f}`H`;N<(`ErFZ0s_H?nELq^^AiFst^h{IAPxchk}HJW2r40D)L?1| zN5+-NKyKu|BH5O9=>_$oO%{WM1RNkt$|LX>+U#yGW4SL{W#Dq<^-?pWTs_=s z+sMi))7<${{lWc@(;pS&e4xt(nf|K_4fiC?yA3+_%vvY*l!4@4iv}=BM|c$3*(8Ejv=a+B_=Ss*JEQXuIqpixQ3a_4(W> zyEKm#xtQrM)b=Fwn2Ghv>;fV#EMt&fQn_Nx)Omd`sf+@qw7IY%8d=~wU}z94&^xT# z?O1hMy$gBFV<=2Rx4X%UFBOAX2ZDn_3e*V(5c0klQtL7p%59=S80yz;986D8eMaINL%0wc8G%|*e$MEHmK74Q% z!Aa2qJ`Z*(ODar2$dFuS7_I+z60R6Fg7-`wLHR_mTT!wUQ^u&61Y`_zfv7uESG-PI zL=b$z5K9F^02Rvd;_$Xby>8#V-GB3vXN;}hekVw2b}%EC!sUQGG$K1h+L_tfM2e!P zOCtHUjw8EKEOAUULMMT4SGq-(nO(Kd^R74+p{XEA@0kR39#JP2L9k*3WE=-K98<(} zqe}k)-;w}E#jg-2r+wZ^?F0lS_7$G&N8TMKx*>Foia|&WS+)ZhjyMosg(Ghi3MD_V zlt8Ha0ra7)2BA8})Ao*tk&JOg@{U+nBp*Xj>4k4odB9b z6pKVuFB2+W3WHWIV5QK`MKb6of?7waV3?3D4|tM6FFxSozD0@ZgTuNz{_IdRDFbAO z)M2bA&`X3r0!GVV7PvbAj0da~>bA%RB0vJogpW-A5a@S}5mS7nfE2jYc(OeJxZnXV z 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 + + + + + + + + + + diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/bin/Debug/DynamicAssembly.dll b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/bin/Debug/DynamicAssembly.dll new file mode 100644 index 0000000000000000000000000000000000000000..2a6e2fc2df59b52b339492d7192fa2562c1097b2 GIT binary patch literal 2048 zcmeHH-Afcv6#vcaN9&fGB}5-k*WHBdVcgOeL1J9jzSu=+H6sMwkBd#rhs})9l!X;R zz4=y85&Z$-gOEf|z6(9{2T1f!mZT6{3gw_iCQPnNuG!SZZ1ASXN4_9iz7lkIlHwv|F`Uy=vQz&uW~xvoLwNn z1Ew^Wn@&BdK_|D!Nz&LNI#Ad`{|YW-WxA+MMFR5-_^bf*{FAijUprdy5pKg4a2qDyzZkCcs{qF)qTgsH1{Vj z8r*Ea3ZyLuBd#;UT|YoEu&b6)AMiYG)y#lC9v1HMB+-56<(J1pAHUvsUYc83L+btg ziR;ID*IvY#qGTv5qb4)46a-XM@p>^Q+Y-)yEien=FRFR>wg)B$9k*zj<*H%J^Kh;; gOmPqB57h~#hiFgjQU{p)w=ACDrSh($ literal 0 HcmV?d00001 diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/bin/Debug/DynamicAssemblyExample.dll b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/bin/Debug/DynamicAssemblyExample.dll new file mode 100644 index 0000000000000000000000000000000000000000..7de866f128793e024133b900d97a0f25e2e2e3bc GIT binary patch literal 2048 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%0A)5sSPo*6 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 z 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 <3ES_@LUO4pszK3wv+w_4`O7g`uUad#& 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 LTNwENI|lx5xSF=* literal 0 HcmV?d00001 diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/bin/Debug/OSMeteorAssemblyDB.dll b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/bin/Debug/OSMeteorAssemblyDB.dll new file mode 100644 index 0000000000000000000000000000000000000000..60e56c98085e298645cffd9e9558ed72442d0405 GIT binary patch literal 2048 zcmeHH&ubGw6#jOT#x&ZcC8AYCCy9mH!RTk+4ufPl4YbCsTdd;iix^~v@Dj1 zkY7j$+Dl;2`#LtDehM~|fF9tUMgxxZ4E)2%06IZiqQqy~3{YME*d@LzYNeQWfS_(- zo-klpb+~DlgBmn)i<}5)muNt?iyjE>B>i+zn~XkeFe-)ikPfs;Cpn&$afB$%ACgCD zjEy0l4nx`JlS9ua6dnV`q)z@*-s5pWIMk%Y+Lva!@BSzZiVVUSqz-01V$4SgHav(B%k@6%|+Dsv~ z?z8A+#EJDowRkitxo6atDIQ9@BN;`-oo z(wpiH-vnkI-i=!Kx8qxyw4I!3=8J~qpNMm{Vv0LMf4C7a%|nMn&;jQETYg?T?8yJv Ffj{X)fH?pF literal 0 HcmV?d00001 diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/config/tempADO_Code.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/config/tempADO_Code.cs new file mode 100644 index 0000000..ebb3ad4 --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/config/tempADO_Code.cs @@ -0,0 +1,13 @@ +public DataTable Table_1Select_Custom666(System.String column1,System.Int32 column2,System.DateTime column3,System.Guid id) +{ + string sql="use test select column1,column2,column3,id from [test].[dbo].[Table_1] where column1=@column1,column2=@column2,column3=@column3,id=@id" + + SqlParameter[] spms = { + new SqlParameter("@column1", SqlDbType.VarChar , -1 ) { Value =column1 }, + new SqlParameter("@column2", SqlDbType.Int ) { Value =column2 }, + new SqlParameter("@column3", SqlDbType.DateTime ) { Value =column3 }, + new SqlParameter("@id", SqlDbType.UniqueIdentifier ) { Value =id } + }; + return SqlHelper.ExecuteDataTable(SqlHelper.ConnectionString, CommandType.Text, sql, spms); +} + diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/config/tempado.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/config/tempado.cs new file mode 100644 index 0000000..fc81e21 --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/config/tempado.cs @@ -0,0 +1,26 @@ +/************SqlParameter****************/ + + using (SqlConnection conn = new SqlConnection(connectionString)) + { + conn.Open(); + SqlCommand comm = new SqlCommand(); + comm.Connection = conn; + string strql_insert="insert into tb_module_type(id,pid,mtype_name,mtype_code,loop,pic_name,memo,stauts) values(@id,@pid,@mtype_name,@mtype_code,@loop,@pic_name,@memo,@stauts)"; + string strql_select=" select id,pid,mtype_name,mtype_code,loop,pic_name,memo,stauts from tb_module_type where 1=1 "; + string sql_update=" update tb_module_type set id= @id,pid= @pid,mtype_name= @mtype_name,mtype_code= @mtype_code,loop= @loop,pic_name= @pic_name,memo= @memo,stauts= @stauts where 1=1 "; + comm.CommandText = ""; + comm.Parameters.Add(new SqlParameter("@id", SqlDbType.UniqueIdentifier ) { Value = "v_id" }); + comm.Parameters.Add(new SqlParameter("@pid", SqlDbType.UniqueIdentifier ) { Value = "v_pid" }); + comm.Parameters.Add(new SqlParameter("@mtype_name", SqlDbType.VarChar , -1 ) { Value = "v_mtype_name" }); + comm.Parameters.Add(new SqlParameter("@mtype_code", SqlDbType.VarChar , -1 ) { Value = "v_mtype_code" }); + comm.Parameters.Add(new SqlParameter("@loop", SqlDbType.Int ) { Value = "v_loop" }); + comm.Parameters.Add(new SqlParameter("@pic_name", SqlDbType.VarChar , -1 ) { Value = "v_pic_name" }); + comm.Parameters.Add(new SqlParameter("@memo", SqlDbType.VarChar , -1 ) { Value = "v_memo" }); + comm.Parameters.Add(new SqlParameter("@stauts", SqlDbType.Int ) { Value = "v_stauts" }); + comm.ExecuteNonQuery(); + //SqlDataAdapter adp = new SqlDataAdapter(comm); + //DataSet result =adp.Fill(result); + conn.Close(); + } +/****************************/ + diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/config/tempentity.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/config/tempentity.cs new file mode 100644 index 0000000..48c88e7 --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/config/tempentity.cs @@ -0,0 +1,42 @@ + +/*************EntityClass***************/ + public class tb_module_type + { + + public string id { get; set ; } + public string pid { get; set ; } + public string mtype_name { get; set ; } + public string mtype_code { get; set ; } + public int loop { get; set ; } + public string pic_name { get; set ; } + public string memo { get; set ; } + public int stauts { get; set ; } + + } +/***************Entity*************/ + + tb_module_type newojb = new tb_module_type(); + newojb.id=(uniqueidentifier); + newojb.pid=(uniqueidentifier); + newojb.mtype_name=(varchar); + newojb.mtype_code=(varchar); + newojb.loop=(int); + newojb.pic_name=(varchar); + newojb.memo=(varchar); + newojb.stauts=(int); +/***********Entity*****************/ + + tb_module_type newojb = new tb_module_type() + { + id=(uniqueidentifier), + pid=(uniqueidentifier), + mtype_name=(varchar), + mtype_code=(varchar), + loop=(int), + pic_name=(varchar), + memo=(varchar), + stauts=(int) + }; +/*************JSON***************/ +{ "id": v_id(uniqueidentifier), "pid": v_pid(uniqueidentifier), "mtype_name": v_mtype_name(varchar), "mtype_code": v_mtype_code(varchar), "loop": v_loop(int), "pic_name": v_pic_name(varchar), "memo": v_memo(varchar), "stauts": v_stauts(int)} +/****************************/ diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/config/templinq.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/config/templinq.cs new file mode 100644 index 0000000..b993fa9 --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/config/templinq.cs @@ -0,0 +1,137 @@ +// +/************linqselect****************/ +public static List getALLuserlist() +{ + List rslist=new List(); + using (DataObjectDataContext db = new DataObjectDataContext()) + { + var querylist = from s in db.tb_module_type orderby s.id select s ; + if(querylist==null) + { + return rslist; + } + foreach (var obj in querylist) + { + Entity.tb_module_type query=new Entity.tb_module_type (); + query.id=(Object)obj.id; + query.pid=(Object)obj.pid; + query.mtype_name=(String)obj.mtype_name; + query.mtype_code=(String)obj.mtype_code; + query.loop=(Int32)obj.loop; + query.pic_name=(String)obj.pic_name; + query.memo=(String)obj.memo; + query.stauts=(Int32)obj.stauts; + + rslist.Add(query); + } + } + return rslist; + } +/****************************/ +// +/************linqselectToIEnumerable****************/ +public static IEnumerable getALLtb_module_typeToIEnumerable(?Expression> expression,int isall) +{ + using (DataObjectDataContext db = new DataObjectDataContext()) + { + if (isall == 1) + { + return db.tb_module_type.Rows.Cast(); + } + else + { + return db.tb_module_type.Rows.Cast().AsQueryable().Where(expression); + } + } +} +/****************************/ + +/************linqAdd****************/ +public static int tb_module_typeAdd(Entity.tb_module_type obj) +{ + int rs = 0;//0 >>add failure + //1 >>Has been in existence can't repeat to add + //2 >>add success + using (DataObjectDataContext dt = new DataObjectDataContext()) + { + var query = from s in dt.tb_module_type + where (your conditions) + select s ; + if (query.ToList().Count > 0) + { + rs = 1; + } + else + { + tb_module_type newojb = new tb_module_type() + { + id=(Object)obj.id, + pid=(Object)obj.pid, + mtype_name=(String)obj.mtype_name, + mtype_code=(String)obj.mtype_code, + loop=(Int32)obj.loop, + pic_name=(String)obj.pic_name, + memo=(String)obj.memo, + stauts=(Int32)obj.stauts + }; + dt.tb_module_type.InsertOnSubmit(newojb); + dt.SubmitChanges(); + rs = 2; + } + } + return rs; +} +/****************************/ + +/************linqDelete****************/ +public static int tb_module_typeDelete(string objid) +{ + int rs = 0; // 0 failure + //1 Delete the object does not exist + //2 success + using (DataObjectDataContext db = new DataObjectDataContext()) + { + var query = db.tb_module_type.SingleOrDefault(s => s.id == System.Guid.Parse(objid)); + if (query == null) + { + rs = 1; + return rs; + } + db.tb_module_type.DeleteOnSubmit(query); + db.SubmitChanges(); + rs=2; + } + return rs; +} +/****************************/ + +/************linqUpdate****************/ + public static int tb_module_typeUpdate(Entity.tb_module_type obj) + { + int rs = 0;// 0 failure + //1 update the object does not exist + //2 success + using (DataObjectDataContext db = new DataObjectDataContext()) + { + var query = db.tb_module_type.SingleOrDefault(s => s.id == System.Guid.Parse(obj.id)); + if (query == null) + { + rs = 1; + return rs; + } + query.id=(Object)obj.id; + query.pid=(Object)obj.pid; + query.mtype_name=(String)obj.mtype_name; + query.mtype_code=(String)obj.mtype_code; + query.loop=(Int32)obj.loop; + query.pic_name=(String)obj.pic_name; + query.memo=(String)obj.memo; + query.stauts=(Int32)obj.stauts; + + db.SubmitChanges(); + rs = 2; + + } + return rs; + } +/****************************/ diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/config/tempsql.cs b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/config/tempsql.cs new file mode 100644 index 0000000..84d0aa9 --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/config/tempsql.cs @@ -0,0 +1,11 @@ + +/************Select****************/ +select id,pid,mtype_name,mtype_code,loop,pic_name,memo,stauts from tb_module_type where 1=1 +/************Insert****************/ +insert into tb_module_type(id,pid,mtype_name,mtype_code,loop,pic_name,memo,stauts) values(v_id(string),v_pid(string),v_mtype_name(string),v_mtype_code(string),v_loop(int),v_pic_name(string),v_memo(string),v_stauts(int)) +/************Update****************/ +update tb_module_type set id=(uniqueidentifier),pid=(uniqueidentifier),mtype_name=(varchar),mtype_code=(varchar),loop=(int),pic_name=(varchar),memo=(varchar),stauts=(int)where 1=1 +/************Delete****************/ +delete from tb_module_type where 1=1 +/****************************/ + diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/CsharpOSMeteorCodeGenerator.F_ADO_CodeGenerator.resources b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/CsharpOSMeteorCodeGenerator.F_ADO_CodeGenerator.resources new file mode 100644 index 0000000000000000000000000000000000000000..24c1a3c9983de8dc40a64a847740cec7f3d28cec GIT binary patch literal 4301 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 Myi$J;yleRWH=*B=RsaA1 literal 0 HcmV?d00001 diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/CsharpOSMeteorCodeGenerator.F_login.resources b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/CsharpOSMeteorCodeGenerator.F_login.resources new file mode 100644 index 0000000000000000000000000000000000000000..79b28c85672ccebfbed20ea85d63098841376807 GIT binary patch literal 29597 zcmce-1ymiu(k_a7f|CS?1Wf{jge16z5J>PqaQEQu8r%sG+}+(R*v28aySqF6hMaru z`p^H)ee2%0&U*v3XL_dheAU&})zwwK`@8oW;o;!m!XWxCV{d7tW6UJ2V`*w_p`~N_ zKd+>9G_-XrUQilaYMEMmH_&`RDW_v$X<%x?{f3F<{_h2)p!IhvYYQE26CGDbGf8tIsDYrcD@!KTIb_7(f1PrW< zHO&4$0FvYvy8jn2jEh}YAbYpsy{Q7V5{?g|ClDb*Z6mj#{~BYP7BTy z&IEb{2S;rN-PD2}TEkhu>A(p<5A5Jx{jFpSrvax2-D|@AUsPlLmuer(?ji3L06@q6 z`ToGV7r4~FO5#5tTjcxqT{)K(MV22y@Vf<;Dan-hcQ1iB3;XiJ|tP{R`lKD|A#BDAp7udKTn_jTU8w zf~w3&P?q)!q$mFZsfkgbAR!c##0G-GXdjRl;R&*XT|ic_^H|PLFVFbgU`2_Mpr#}qGz=Di{-tKHwKfV?S64ve;x4G0+XOSylVE3Z0BnzTgUz8fu-@AU2Fo)* znx7qT{GqikUZOMbx>u*^-x2?SdA{L9h*$7Z-nabKCi;IThq|m7&|aAdriNSoVxMd; zf|I>1u)ens=2uq1^k6p_Z>t5P%@yEJeF+$-&Ib*dzd*tdE8y*@IiM4(W%{aLhxgwR zXRnd=Jr5GYj@kD-{5v@`7bL-YYYIje`+py9-?wvi1Z>YwfUWsSusG5O`WwqZYjHYg z&QAvQ*>RvIJsK4L3OI`Qu^9_@Fo+6q&}IF1a=pKI&(pnJ`1(!zJ?B!5E-x>iLp(hE zuk{C7Dir&h$~*@filMGA0)2Ibpt~j?bXMeomclepogM{B;)6kcv@ggG_k_lV3rG!e z9?OFCFE2hwurNB{ez^VH~HU&f&|Fv=#r2oB;{`Y5vkM^Ypfu2-< z088=#ZE>EUIocJ}hdYAGARAEPYYy@}zk^H{J&^8dFqRkW=vk5W^FvE<78&$Tw0}n* z2F-=v^yvQnC;s{QIrYK80q%dTTbmjQ>qzt+or*L+Tn*O;_p}nG2bMx~zgMY@|S$wd_%vllEA=r+LCX5BKBz-;vt5j|_XSQO7^!e|2^B>Yj)H zTDLYO0(8cCf#ncga2)UroCYg`Gl))u6u=Qw-t(0M8(uPC(M=LeI(!C$)*_(MN*tuw zseu?*6If|dsN(#{2uo8%-skGv6vcb0$ck4iPKr=;%(C~CF4Z5CD>a<)&HwSUBK4P1 zepH}Zda#FL5=8M3HD>$*y-9vxBf=0|hAM;WpX%TyN(0X<=TldrAs$fknBP!F-)`#%$fyk8Ir3PJY;F&IFlh z_6HcLbo&@8!rUQp(N~1ESELywaz$ac~Maqgyn+h1Lfu9z0?14|G02KjLzpdcm?WCl8e6v%cbdRl-4cQcUS zY62qM^nt6lGO%&|3T%yJfSrakXoqxsI6EBd$D0EXs|!FfbWXDdAk_kZBol}a18^Iy z^_PeH{<-gqK{t7j=c)}7Jk4RHDG`d*1z8Y&04zT~0i_(aRE6@lX7pL9mjvcre=a8?24>gSDPUu+~upHacs-CPW*Z z)u3xA3k0tE0Mj00VCA6zY*ZycZ*?J5fplp*9zI0#M=yK;e&n@Nv(>y&Ryv zxYvh!ot*Sm0wtdMAj#VrR*@d1SY4c}m=+ZRH6;a15BGunEsx3>=Mh zfs?UrurbyG`bG;uVRb0*chv*7nlfOZp&U$Crh?-vHvrNhx#zn>*j@nSLFG&baF=2M zZsLrxEHpJ~asT`ddL?aTdu`r;m0V}l@=(b$A-fy3o^mn)EGF~T?c2Y)8Kq@ z45D#x0r7IZJPFQchr!NJJLoIT1iw72fQz9L7=tyz7MhDjcS|DoUP1&^VL~!xi$w*7bn2ZSkK=%EWy_ic$sN}*^yqwIaq_|JrDDBIbfzT z4NOA%Fb?VD{kRxNgKTn=FX)K%0xeOlpaHVSwGqx^b@Be5_t^6z11xo=#fn*RQGfAg zAo(BcY=EP!RdBqy{14iI&JZ20&VilTQ83(61=7R3K%ku=xVME%%8nbXOOG0?N{$$;NsCPFs>=U(c6LSz*;C4U z{7eYHJTDVW4EKZ0m3gqSFb&pc$HCgn7+9Si1uIh{U}h-w^xwY9bv*n3lv&FFiv-#mZv)Q3;v#Gugvx)9DvoTnU*>Fdb*>GC}M2&Kj z-QCoCdwbaTJXAyY>9J9;lI&FQr@IZzkM@JHu4XXwyBZ8OS3+}m8R)4i0iBh3prt4k zlqH9Q1V0B54&mR=g%A(-{@J~c#PYvMfBh+_F512P{?Yzlu(I3?FxKA%mZyfnR9`z7 z?PvhQZFLYIHDI8*>Msv%<=LPz{TE0IbOk@%EdGg)1ikB?2b}*+`s+{rPyC8f#q6Xw zSWRgmSe}P;?)U&4?{0y^t+l^&u(<~IA=+JAg8F3&{ON20d62D)@^<=*|6l!q|C8%~ z;x|^8D(0jn!0O72{^FlQ_@@UufBm>)Xe=D1=80%>RMJdrBF2Mai zhMx!FR~6=f@qQSjZzEuSq!-K#c7mz?b}-TN8;rsreQ2u({g6JilxBha*kF(n^q<17 zP|QzDf>jsgLin9vd1466LfDht&0xH<9*neBgP|s9PO2@0=9?_g0Qr#xzXCu;sKiSWA5^SYKTRm#4?z^uFKM7r_xU7acB)gG0#n?n1V2 zt-Aq?K>lrYY81$g3iyxUceJ)BR+bdP+FKgI`q~OOKRp4*2YcWU8Uy#TINDqRhY&CO zOVeO`>JOOeYy=H?DWEVu>_39v)zPY0TUiQgZK?;8SBGL_O$Dr>x*RmsR)L1<3Q$>G2ukyFKuKN} zbj}79MfsqrxByfa<${JY{1+=XEg7W7L2IMs&4>WF!Gn7~?#UH8@!k`3?=StMd`AHX*9<-W zUy~brGh8!bGi1yE&j^$M|JU#h;eQL?{3AXF4>b+xK6rzQ@ION{e*-MbP*4lOPg4Bj z0}SH(W!r;KB0|#8Eo|so=5IVE`lqENRDidX{wM%f*iX87|0+HHFZ^(DB_WtM8pu!? z-AqKm5)STR<2}J|36wNLH&HajJ_pVQ2a%$MYE3Hw1r#$f)O%Tb^b|CjeK zdP3z+SP>UpBU{HLu1lnbmowXBm$Tbg&RTZ2q_cKS6Frp%p2XPSHgsX3eE9SQIl~uc zwb>7$s3{JEL8rq_Q}#W1Z)h?ez5v6ifpm#ZO1memrFb^$%`mGLUy8JnYgfkG+dth{ zi0wVSS7J;R&e2u9fp*e5$cWbdi?z^|tE=Lq-^5v*!z$I_4Vx(z_$M zoaSa$Ekq$ZH>}WXI_hpnX5_jtCHxE(r_suWSOhe$>zdxhT;6eu7$2TLmEnT1mhC_< z;etsEBCsMht7Ne5xyoUPpt&;p`FnUR2oY=r`Ud+21xSd0>g(;6OX49^!e)3WAYkos z$1h$;ZuiyL0ZwOa3j7+$R1?T~(#(2%!WtISGoObQI<+cB{ThYf>Fcb!M;W?^VnL`; zPZ0g(?NM;TPvbHKwO2C`Jo8fzn!Oe<(DBgyatxj*OtMe1*BETZp!=bCTN#@|SG`rp9 zr``Q?26XIp+~2)>`~13ZZ%scvK#7XQV2lY%mi%NFs-wBI#%KmopB*QgeG+E=s^g@D zku#axjQC71Ag~5cA~ab90Z0%3S;h}X!~6Nt+YsluZkF+nF+qMz;I?2nW~0}yVqtOG zTuUoUXDaX=_a=ErfH_TIx1Ugm@i{YZj>_Gg^*ixj>~{@ay+z~s=Y4bx{(lKuQ*=r?^?M3ulc zeAWla;Rrpk8Adlr5b}APs`Cpx z@YGDt6i8u3^b|FO9=y#???4nYSY6FpqH@PtgyE3kM~C`~Ab2&4Nn2oKyBCBF$){>* z22p*m(*FE{6^|~JCP!kzV-6OVE$^pv@ywk19&D;U;>srnnX3MhDw5eu-|{er^l`t! z5iWY82@0jlWfi7`iyA}PC!46cCOz$(lTOQj$fzX3$M}w!F6Ti*ytX&0!u>!i!7ORs zs{RkQ29c1aCF1QbF8lj=nGSf(p2?=2{vnBX!!YG#z)r{ z{qn)juKxb6uL<>p%GefSvY`=iw{BtUpvZj}lWdpR#>`>$WpoIwU7s>e`MNrc;kmJ5 zEDz_qkyg$(&rU?|Mt@bmw+qVk?#@Q_$2Y_yV5~TO#LV{iCu`XSYgqSS&nLs@%%(B? z2$1|}*r>kIhPq+Am*S8maO02aMZs^mMTh(2aJbZ+(YSqrW#+MGBKkSCgQl>>*X!4} zHVktZLzd(N0>i;?^=;|eOM>Di;^L}u4^NHVo|vQi z5jC#<(beB#u$IrxX}gP_Qu+RL%vI)G6ro~2T1dB2)mvJ@p8eDA0&o-kff_}Oolkwx z%-X{DO4_YuWOZLgnO9CI03R9QN$NgvzZx838qO;>d;*Eb0U!ODFmR~3xn)?WnVFd> zw$c3DLM+nYI;#`&9t(E`(hC^Glu#)qnv!pj?}leL1!tph2o!dt{u zBVY5#&@r zX00iJ&$rzlS}v%XvoW`p*QGBQxiiYtq7%2-9V>7+-QvA_!%dGwGxFpPInw)q;V^SS zZ+ye&uep=wds2p|pi@>6G7BPn?G^~Ei~Lg3W~ra0T24Qz`F;5;%8%rxPR&45(Y%CA z@=V;Af7ME-B4Y?9@1~Q}2YY_$-$5)%M4bp+2?z1P+z+F?HkCH7bcwtX$RkCONJ7C>1AE zmxXth8iP5O-5C4)J<&x@D`6k6nl3X#ikjl}jf}9pD4jP;SMBNyPh)RUAI`1o^H<=; z8C(s#CT26a*{&pm=Wmf)XR5zFXCW2yI+;Faw!Zi4 z)TP3{l;JXyDMK@**cT5?Sw#UpS{8cQOfPy=5%nK?=Bb<-uVw!H(KHxjvlf8uiXm^O zQcw%O;dZB?zJnoAHT#v9W8n%u6NN{m#3R9eMV?H*{5+k*{&_Vyh9V#FyMaLo9_&0h zCEf**CDcVfutY4}P6%YG09I=H$NDDYExZZrjC&oeY_j0)Q-kW;#r_r%FqQWUL zd-qP8J399PS)8@Cvupf7CRuK*Shh}&oNSJChH#J`?q`_a@f!0*6S(G0XI7~FEdEo+ zXx;2!5I3&JhL!gQ(c>Wn`_|^Fr?n)iQV2OWInFm0d%w84&beFE{C>5c&Xd#Qrss3c zS^eKG7t{QHqN_P66sdCedwxmawAE1jerv6C{g7;`$`n`(BxVgLny;0P^YWpI>~8AN zqhpKa#5a7;I6GvOH~3^G9~p%oicW|TiGZi$k5S0WK^yGhckKJyfk#ly5%_)3c;gv8&hv00T}U0RDXw3@Nu%`EJEW8mZy zEH4~P&7$9GRk&C3^y7!`Q!jKdG0@eD=~Gpo8qdR1X*HoGvb@?DS8>75s;S)3xVA&w zrXxwro9%Gfv4xK&%ebK#_V^KyXulQ{^-`(vxSvn_@a)jBKq5)5K=Esy+=B@|(IR=( zC%ku-#Vym*RccLlA>3yZX(2rR@^pIg+8c8Xj=NLVp`}{uOl{O`Mq_OpQNlqu^xr=o zeu=B%y1Q5w$$`EzrdHJ&+jO_4B+gI6?NGn6P4V7#?greQH~H#@{>e0+77il5UFQY- z-YtUO;z_UYQzTlwgNR-z*6Yo?41O?fA(S%|Y|_hl)hs<}YcICDcFr(-!51~Pw6CTc zD*3cUnU;$s`Uw>!in zlCvqSwvBSgWys3Lcn(ckE$F(4m<*{@m`XIVzCVRnkR~TE7z4;@6}`4j^2TZ8T;Eo7 zl$p2s7~LX+)kaQP^HwOtNFO_sx0q5${nIQ zLbEZ0Lcy`tWzpi?V;dW3K?5hmTNV3{jiq<9S^8qRvn<#9c|Tv5e2SojjI3~X>Ibpd zx5ihSSz6m;1)O?&T=LC8wnYD)Ws+<2f>@J5TQJt`q94(8u)2;+1itzt5GPcF`rpbK8#tMo6yz| zaft!GZ@5qJ18y~+hr+e2h6M$~hvI}G^^wIz#KlC!MMcGgiliOThm?q4@K~t$Ni39x zzVh}B`XVBrn~ALNWhc-qNF3yTT!NP)I@T(P>DDsDzBub1!I#2 zeh=R^zt%d8d96pKd2n!&d8$x``wE61^-UoGmCKEYB~!J*q3(PK5d}v$koZ<3Pp&{m zE8*@qkeJPIVv^J4oxSL6?WuTDg}_q3iX(^hUcGUrcz>DwHZy+X#Sv_1IXg;*F?2*# zt)3AB(LZ`>d!O<3HnZPIzp6LmODamX$J&JaXfQAM_5eZDr;lav>@}CO^$_Ak#J@y% zpo^G!#D%;^HpLGQ&%u03M<+9LjFBz*SR+3u2M(7`NTkIy2LHvwr*<#MDc!5yT%wLG zFD*xeWQ0p*5*9*Uboq{D)w%$L z$_lkV-ngTg;GHe@qNjSrfE?AAg2?IyZ%0D4r|=u2@~GVHNsI!6!KN=tC_O6y4z-6S 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 literal 0 HcmV?d00001 diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/CsharpOSMeteorCodeGenerator.Properties.Resources.resources b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/CsharpOSMeteorCodeGenerator.Properties.Resources.resources new file mode 100644 index 0000000000000000000000000000000000000000..6c05a9776bd7cbae976fdcec7e3a254e93018279 GIT binary patch literal 180 zcmX?i>is@O1_p+SK%5g?SzMBus~417oL^d$oLUTL1*ImYq!#HYR*8GxXUf^%t3Noi54ZC+|=Nl{{sjzU0bQch;FcWPxwes*e}ZIZcpqG__J onW3ezNveT`r81^vrFkWpxv4PQgHubGfR2KJ07n-P+5+SQ04Y>DD*ylh literal 0 HcmV?d00001 diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/CsharpOSMeteorCodeGenerator.about.resources b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/CsharpOSMeteorCodeGenerator.about.resources new file mode 100644 index 0000000000000000000000000000000000000000..6923c61fa101c9defed3fcae59497b64b83cd53c GIT binary patch literal 17496 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 K68`00!v6rL58HzP literal 0 HcmV?d00001 diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/CsharpOSMeteorCodeGenerator.csproj.FileListAbsolute.txt b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/CsharpOSMeteorCodeGenerator.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..3f45ac6 --- /dev/null +++ b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/CsharpOSMeteorCodeGenerator.csproj.FileListAbsolute.txt @@ -0,0 +1,62 @@ +D:\我的文档\VS2010\Projects\CsharpOSMeteorCodeGenerator\CsharpOSMeteorCodeGenerator\bin\Debug\CsharpOSMeteorCodeGenerator.exe +D:\我的文档\VS2010\Projects\CsharpOSMeteorCodeGenerator\CsharpOSMeteorCodeGenerator\bin\Debug\CsharpOSMeteorCodeGenerator.pdb +D:\我的文档\VS2010\Projects\CsharpOSMeteorCodeGenerator\CsharpOSMeteorCodeGenerator\obj\x86\Debug\ResolveAssemblyReference.cache +D:\我的文档\VS2010\Projects\CsharpOSMeteorCodeGenerator\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.about.resources +D:\我的文档\VS2010\Projects\CsharpOSMeteorCodeGenerator\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.F_login.resources +D:\我的文档\VS2010\Projects\CsharpOSMeteorCodeGenerator\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.F_Main.resources +D:\我的文档\VS2010\Projects\CsharpOSMeteorCodeGenerator\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.Properties.Resources.resources +D:\我的文档\VS2010\Projects\CsharpOSMeteorCodeGenerator\CsharpOSMeteorCodeGenerator\obj\x86\Debug\GenerateResource.read.1.tlog +D:\我的文档\VS2010\Projects\CsharpOSMeteorCodeGenerator\CsharpOSMeteorCodeGenerator\obj\x86\Debug\GenerateResource.write.1.tlog +D:\我的文档\VS2010\Projects\CsharpOSMeteorCodeGenerator\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.exe +D:\我的文档\VS2010\Projects\CsharpOSMeteorCodeGenerator\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.pdb +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv2.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.exe +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv2.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.pdb +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv2.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\ResolveAssemblyReference.cache +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv2.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.about.resources +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv2.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.F_login.resources +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv2.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.F_Main.resources +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv2.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.Properties.Resources.resources +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv2.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\GenerateResource.read.1.tlog +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv2.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\GenerateResource.write.1.tlog +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv2.0\CsharpOSMeteorCodeGenerator\bin\Debug\CsharpOSMeteorCodeGenerator.exe +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv2.0\CsharpOSMeteorCodeGenerator\bin\Debug\CsharpOSMeteorCodeGenerator.pdb +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv2.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.F_CodeGenerator.resources +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv2.01\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.exe +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv2.01\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.pdb +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv2.01\CsharpOSMeteorCodeGenerator\obj\x86\Debug\ResolveAssemblyReference.cache +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv2.01\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.about.resources +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv2.01\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.F_CodeGenerator.resources +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv2.01\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.F_login.resources +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv2.01\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.F_Main.resources +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv2.01\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.Properties.Resources.resources +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv2.01\CsharpOSMeteorCodeGenerator\obj\x86\Debug\GenerateResource.read.1.tlog +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv2.01\CsharpOSMeteorCodeGenerator\obj\x86\Debug\GenerateResource.write.1.tlog +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv2.01\CsharpOSMeteorCodeGenerator\bin\Debug\CsharpOSMeteorCodeGenerator.exe +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv2.01\CsharpOSMeteorCodeGenerator\bin\Debug\CsharpOSMeteorCodeGenerator.pdb +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv3.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\ResolveAssemblyReference.cache +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv3.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.about.resources +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv3.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.F_CodeGenerator.resources +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv3.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.F_login.resources +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv3.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.F_Main.resources +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv3.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.Properties.Resources.resources +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv3.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\GenerateResource.read.1.tlog +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv3.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\GenerateResource.write.1.tlog +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv3.0\CsharpOSMeteorCodeGenerator\bin\Debug\CsharpOSMeteorCodeGenerator.exe +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv3.0\CsharpOSMeteorCodeGenerator\bin\Debug\CsharpOSMeteorCodeGenerator.pdb +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv3.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.exe +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv3.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.pdb +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv3.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.F_ADO_CodeGenerator.resources +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv4.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\ResolveAssemblyReference.cache +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv4.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.about.resources +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv4.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.Form1Test.resources +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv4.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.F_ADO_CodeGenerator.resources +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv4.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.F_CodeGenerator.resources +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv4.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.F_login.resources +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv4.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.F_Main.resources +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv4.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.Properties.Resources.resources +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv4.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\GenerateResource.read.1.tlog +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv4.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\GenerateResource.write.1.tlog +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv4.0\CsharpOSMeteorCodeGenerator\bin\Debug\CsharpOSMeteorCodeGenerator.exe +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv4.0\CsharpOSMeteorCodeGenerator\bin\Debug\CsharpOSMeteorCodeGenerator.pdb +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv4.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.exe +D:\我的文档\VS2010\Projects\Meteor代码生成器\CsharpOSMeteorCodeGeneratorv4.0\CsharpOSMeteorCodeGenerator\obj\x86\Debug\CsharpOSMeteorCodeGenerator.pdb diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/CsharpOSMeteorCodeGenerator.exe b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/CsharpOSMeteorCodeGenerator.exe new file mode 100644 index 0000000000000000000000000000000000000000..e72244f5bb7c19ae03dd824bc0c38ada5e04a29d GIT binary patch literal 244736 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

      C%kPbByCeZ5n=aKp?<1#1-S{_G+ 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 GivNEtBdgp1 literal 0 HcmV?d00001 diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/CsharpOSMeteorCodeGenerator.pdb b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/CsharpOSMeteorCodeGenerator.pdb new file mode 100644 index 0000000000000000000000000000000000000000..2b06aa1bf58870aa34f3e722a9fd742b32d6417a GIT binary patch literal 202240 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�Hc2jL3% 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

      +Ili%mGY*da*VU9tSgFGdKx$ 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 Q2Hfxu+oTNhck=6h0BG2bAOHXW literal 0 HcmV?d00001 diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/DesignTimeResolveAssemblyReferences.cache b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/DesignTimeResolveAssemblyReferences.cache new file mode 100644 index 0000000000000000000000000000000000000000..a0b1708f7d68d88cc9f1c3f529881e4f5658592f GIT binary patch literal 4440 zcmd5hPoa{su+l)WPy&fr+)Q`xwga;>b!N7; z#Kg#NK`_Ynis0cj6n1nx2dAQtkbAe5^Cx7K`p?maUma z4;1=~MUzF{DO#+@U`5AL^;mSEIHYUYt!!eKxt|$5Lv0=TuKenJdwZ^{P3=&9gwI(@A+*g@ zb160Jm{vg02`0_LsA@5*g`6hM92>CAF)hceAbl~Y9bjHCvi-YNy~u1yYG{yrzQ$lZ ztiFn`rFCNNyT$+29cwoDDXI{~rg%yCAX;cd13y`fWOo`N4O?m-6ia>v zFbOLNtdYBkRj{+BrE5c+nF6%J-9+onW|?hkLz=ER6C5%GNat=siUr)G898&@j;Bnk zU=wl+?H_uTMiOBXO(dF0L?C=*SW(?Ju7WRn<@L9M_8cFPx3I3-PQRJc@*2y9)$;b6 z*p3Ys&aqKuoL*_&w{M(0`q>tx1>;aCBoi&7Q8mmG2BPXR%oYZs?=s9021<#`Ft=>*5!Szo zma4Z|wQHFKReR8}P+?)s9@Gk>I-`^=9Z_x6BkdW}>b0^Xnu7+1j@oCWio}~HHJ}|X z7ORZH7cJ10Ct2oga2{~|_dx7$SM?p}+>#_yW+@fQy#zBKqOS}y9rvqOt6kZyRqbm# zI$7JAwQx`C!`&|+_xC|;t<>(F0ibo}0QVEXLWluZxlRY=rt=LnXwz_%MTD{#Vvkr1 zSA|Xo?3SE)X~F+tYfypsGPI9End<2rnHutgI-C(Fd7qItl?cgg`IU|MnZWS#jX&R1Y>a#Q0Rl8P)yA8sUJVki zi$a1f3gn6WCdwCugdkgUQBalu+j|99$m!*nu6cnmx>RK{QqWsM^?VIyu3^&KX+{9P~;InDQ4Q zbKVk^i$Z|`VPAkosU%AB=NM29%8aPjaz^bK1S|bkSqV+)fZ&`uF&Lc*P8EE*z9?Nl zl|MzKv>&`BD4z%g2C(`VT9wsDP^MT>gXgTeF=%o%d1W2GQr1IoYCRYfXM&n52+r?O zK+ER@C2tAJSr@+#pjG+34`qrU9W9(+5`(#-FkQ!svI!PtGX$rZ!r+;ipjj^#&h{}x zAipOFdP`8w2n7bL=DW3Q->GFAiDJSDydG&O>bE3GN1^!X!UKKhU~jvG`<9Hqz=i93 z&Y!;g+iUUXPeo4OX!?2b#=fhEUihP7On+|MvBQhsUiZ`S%a^X4`{ww?RdZTBFE?82 ze=ogq@cj4VEr&h~j6c47a%J=3Uwl`8m~1_J^4H00x%9U1k#nyfTef#7c8bLoUH`Jj z*=s)Xd^2+X)t-kIzBD_@=0^)>k977waq&o`6*192G@iFMWDd@{6zcX;hphB( zaS9+<$)D+0_n8(xG=o0)zuHP>CmYk~)`uBV5D!hQeInFr=yJiY!ept;h)@IK&}R;$ zcQ5Gt?nRlp0&mbXujYwRao2Z374LRJMOfDfmC*^j|NljyT6ZmqOqExc)Fv3}XND@t Mof+ED^_(>R1zC=Vs{jB1 literal 0 HcmV?d00001 diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000000000000000000000000000000000000..23089ab260bd8060b0304413e6d8c7d2c306a6c0 GIT binary patch literal 6598 zcmeHM-A@}w5VyfxFoZUyDM_G7oHnhR)IHe&!iU5|Vnd4xDZ&=1#38cwjm^UO*4f>| zxYQ4oDm714D^-!&m$b@D`cU-`=)cp#pV7{ojSYm*K46Cj4tZGb*KcNaZs)^+U?33q z2Os)R&-o4{_B_u?p+sJrOI&%(No&vM!c2-{QMj|I=~#3Lq~gMzO2ke7FBVODj`k!> zx!`HZoLF?h%Q`&w8B{W21Kg=>d^kUvAIm2a_Gp|9vo3-he+ANgk2^Nu&AJ+-C_R*{ zR03%(GCAv(Jgo+B@fGGcq73#urJ$H~D$`pUT;fXg;q0Vv^Sm&_9T> z)llAZoEgcAP!@7yZz#jEICk;C*o<&&l=m8SW|%C1ZY)cCSq1t5ZlZ4Tf-5AXAkR=0 zv#!#}Uz5Aq#oj7?_U*lP)?-}v6O#rZOs0X!+}Z-u zYpS;-MIIGGLi9^0aHVCXIUYtiG?2yyaov8|_iZ|GXlP!zd;{c-qq|dFl^j+fz{3mc zb~RL6xFAIiloIkDGRrlJfEHF?0`{WkYF>o;lEXXIl%k9dqth?~fexg>V30mYpLL}x zN<$G%49_U1$!N?^zy-;3<{WC^QDS-dm?>!0OU&_LfpPihPGf3XOYRn8(W1%;>F{jx zJsJ7mugTaL8_kX0O-u}rKzw{+C3YMirV&)@7k{dVWq=hjmCPCOB} z(0#1q<*uxG&>-Yre?H&+z#VyTb`TM(ghB#j!EkbL(V)QZwzn5QvJvC^P5I#Xq0eC0Qc%gEHz*T7Vk zyY+LPO{U3Y$W+V>Z0Tv6qp|o(yn@V?l9Oa}1&k@9eu!x`&OchWU6QP64Nv}}sW2|Bw zp{Tl675@^tS2t^QEFAeG)bKtpmjur8eX8KSvNX{OyFca0)bdJqclah6)ZP=J)Q4)C z#`{R-PVxedP(tNz{Q)*YGgyWUQf}pETnBidWQ(4NpKxKr_z=nE?c|Xa(5i6@NBg%w z<*ueu;EcqAE5037<2LpWZfB0J_f@LKM>u{G>01o<>DyjpWeS(69#}O##;&j0pU^df z{0QY}zP3$lET7~-Qg%R@T|K6cP)0`2IsXs|lb+7s&#t2X`Z3|`DryvnS9<>iZ0Xve literal 0 HcmV?d00001 diff --git a/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/GenerateResource.read.1.tlog b/CsharpOSMeteorCodeGeneratorv4.0/CsharpOSMeteorCodeGenerator/obj/x86/Debug/GenerateResource.read.1.tlog new file mode 100644 index 0000000000000000000000000000000000000000..b4839167c5ce647453d39885dbe557f081811eda GIT binary patch literal 1954 zcmd^=UrNJ35XL`W1wl{X4N7Ab#kVGDYc**?lBNoafr`)zC>}uYpx#6M&Dw&s^g-W@ zER$?@X1@8mllQk<#X6VM!TkC0<^FErRIAjHx(XntT!k`SYM@9J9H*3h1!ZtvCp%Av z5Bu{)?ckTXP@mHrUb!Y0aT235f+kRbT;&mJ9joIl{Z8M36oNDbuLJG?%h%e|F8)|t zGmWtrBQf*d_j#5`rD!F(@exkho6iZpoPiR1@3v#4U`E)oC^HScWs9l;Z4-aQS)>Mw zC3=a^;HG{^1jdcAUwM=(C58v@nL3^E7iGLI>U@&C5kjqPhDk1j6(i1EF$tY zJa{^tA5UkwA)e|+ZM-qD^w+vB9-ln{HpCLvWkrTu7xIdecH3{r)FIP7`8@LWIC-S! zy+_qA*a@kEP2c+caEdkB^JKoPo~v z8}rpmZD&n*qt^FR%Of4`eTR+EjR81Ey3!?It4|%!2K?`)MP7v#E%WDCtC|2jt=Bro zUO8uN(#Sp