添加模板填充功能
This commit is contained in:
parent
6c6de70415
commit
a17573e844
@ -1,13 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace WindowsFormsApp1
|
|
||||||
{
|
|
||||||
internal class Class1
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -6,8 +6,8 @@
|
|||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
<ProjectGuid>{7D7B530A-23A4-4024-B263-A942AA53DCC5}</ProjectGuid>
|
<ProjectGuid>{7D7B530A-23A4-4024-B263-A942AA53DCC5}</ProjectGuid>
|
||||||
<OutputType>WinExe</OutputType>
|
<OutputType>WinExe</OutputType>
|
||||||
<RootNamespace>WindowsFormsApp1</RootNamespace>
|
<RootNamespace>GenerateClass</RootNamespace>
|
||||||
<AssemblyName>WindowsFormsApp1</AssemblyName>
|
<AssemblyName>GenerateClass</AssemblyName>
|
||||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
@ -39,6 +39,9 @@
|
|||||||
<Reference Include="Google.Protobuf, Version=3.21.9.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
|
<Reference Include="Google.Protobuf, Version=3.21.9.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Google.Protobuf.3.21.9\lib\net45\Google.Protobuf.dll</HintPath>
|
<HintPath>..\packages\Google.Protobuf.3.21.9\lib\net45\Google.Protobuf.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="JinianNet.JNTemplate, Version=2.3.3.0, Culture=neutral, PublicKeyToken=2b90a65531efdba4, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\JinianNet.JNTemplate.2.3.3\lib\net46\JinianNet.JNTemplate.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="K4os.Compression.LZ4, Version=1.3.5.0, Culture=neutral, PublicKeyToken=2186fa9121ef231d, processorArchitecture=MSIL">
|
<Reference Include="K4os.Compression.LZ4, Version=1.3.5.0, Culture=neutral, PublicKeyToken=2186fa9121ef231d, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\K4os.Compression.LZ4.1.3.5\lib\net462\K4os.Compression.LZ4.dll</HintPath>
|
<HintPath>..\packages\K4os.Compression.LZ4.1.3.5\lib\net462\K4os.Compression.LZ4.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
@ -86,8 +89,8 @@
|
|||||||
<Reference Include="System.Xml" />
|
<Reference Include="System.Xml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="Class1.cs" />
|
<Compile Include="Util\Config.cs" />
|
||||||
<Compile Include="DbHelper.cs" />
|
<Compile Include="Util\DbHelper.cs" />
|
||||||
<Compile Include="Form1.cs">
|
<Compile Include="Form1.cs">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
@ -96,6 +99,8 @@
|
|||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="Program.cs" />
|
<Compile Include="Program.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<Compile Include="Util\DbUtil.cs" />
|
||||||
|
<Compile Include="Util\OldInfo.cs" />
|
||||||
<EmbeddedResource Include="Form1.resx">
|
<EmbeddedResource Include="Form1.resx">
|
||||||
<DependentUpon>Form1.cs</DependentUpon>
|
<DependentUpon>Form1.cs</DependentUpon>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
@ -107,6 +112,7 @@
|
|||||||
<Compile Include="Properties\Resources.Designer.cs">
|
<Compile Include="Properties\Resources.Designer.cs">
|
||||||
<AutoGen>True</AutoGen>
|
<AutoGen>True</AutoGen>
|
||||||
<DependentUpon>Resources.resx</DependentUpon>
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
</Compile>
|
</Compile>
|
||||||
<None Include="packages.config" />
|
<None Include="packages.config" />
|
||||||
<None Include="Properties\Settings.settings">
|
<None Include="Properties\Settings.settings">
|
||||||
@ -118,6 +124,18 @@
|
|||||||
<DependentUpon>Settings.settings</DependentUpon>
|
<DependentUpon>Settings.settings</DependentUpon>
|
||||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<None Include="Template\DataGridView_2.template">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Include="Template\DataGridView_1.template">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Include="Template\DataGridView_3.template">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Include="Template\ModelFile.template">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="App.config" />
|
<None Include="App.config" />
|
||||||
|
89
DatabasetoEntityclass/Form1.Designer.cs
generated
89
DatabasetoEntityclass/Form1.Designer.cs
generated
@ -1,4 +1,4 @@
|
|||||||
namespace WindowsFormsApp1
|
namespace GenerateClass
|
||||||
{
|
{
|
||||||
partial class Form1
|
partial class Form1
|
||||||
{
|
{
|
||||||
@ -28,7 +28,7 @@
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
this.button1 = new System.Windows.Forms.Button();
|
this.modelGen = new System.Windows.Forms.Button();
|
||||||
this.label2 = new System.Windows.Forms.Label();
|
this.label2 = new System.Windows.Forms.Label();
|
||||||
this.txt_ret = new System.Windows.Forms.TextBox();
|
this.txt_ret = new System.Windows.Forms.TextBox();
|
||||||
this.label3 = new System.Windows.Forms.Label();
|
this.label3 = new System.Windows.Forms.Label();
|
||||||
@ -44,22 +44,24 @@
|
|||||||
this.button4 = new System.Windows.Forms.Button();
|
this.button4 = new System.Windows.Forms.Button();
|
||||||
this.textBox3 = new System.Windows.Forms.TextBox();
|
this.textBox3 = new System.Windows.Forms.TextBox();
|
||||||
this.label5 = new System.Windows.Forms.Label();
|
this.label5 = new System.Windows.Forms.Label();
|
||||||
|
this.isGenOperationColumn = new System.Windows.Forms.CheckBox();
|
||||||
|
this.label6 = new System.Windows.Forms.Label();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// button1
|
// modelGen
|
||||||
//
|
//
|
||||||
this.button1.Location = new System.Drawing.Point(81, 322);
|
this.modelGen.Location = new System.Drawing.Point(105, 322);
|
||||||
this.button1.Name = "button1";
|
this.modelGen.Name = "modelGen";
|
||||||
this.button1.Size = new System.Drawing.Size(75, 23);
|
this.modelGen.Size = new System.Drawing.Size(75, 23);
|
||||||
this.button1.TabIndex = 0;
|
this.modelGen.TabIndex = 0;
|
||||||
this.button1.Text = "开始";
|
this.modelGen.Text = "开始";
|
||||||
this.button1.UseVisualStyleBackColor = true;
|
this.modelGen.UseVisualStyleBackColor = true;
|
||||||
this.button1.Click += new System.EventHandler(this.button1_Click);
|
this.modelGen.Click += new System.EventHandler(this.modelGen_Click);
|
||||||
//
|
//
|
||||||
// label2
|
// label2
|
||||||
//
|
//
|
||||||
this.label2.AutoSize = true;
|
this.label2.AutoSize = true;
|
||||||
this.label2.Location = new System.Drawing.Point(296, 16);
|
this.label2.Location = new System.Drawing.Point(357, 16);
|
||||||
this.label2.Name = "label2";
|
this.label2.Name = "label2";
|
||||||
this.label2.Size = new System.Drawing.Size(41, 12);
|
this.label2.Size = new System.Drawing.Size(41, 12);
|
||||||
this.label2.TabIndex = 4;
|
this.label2.TabIndex = 4;
|
||||||
@ -68,16 +70,17 @@
|
|||||||
// txt_ret
|
// txt_ret
|
||||||
//
|
//
|
||||||
this.txt_ret.Font = new System.Drawing.Font("宋体", 11F);
|
this.txt_ret.Font = new System.Drawing.Font("宋体", 11F);
|
||||||
this.txt_ret.Location = new System.Drawing.Point(453, 61);
|
this.txt_ret.Location = new System.Drawing.Point(518, 61);
|
||||||
this.txt_ret.Multiline = true;
|
this.txt_ret.Multiline = true;
|
||||||
this.txt_ret.Name = "txt_ret";
|
this.txt_ret.Name = "txt_ret";
|
||||||
|
this.txt_ret.ScrollBars = System.Windows.Forms.ScrollBars.Both;
|
||||||
this.txt_ret.Size = new System.Drawing.Size(335, 341);
|
this.txt_ret.Size = new System.Drawing.Size(335, 341);
|
||||||
this.txt_ret.TabIndex = 68;
|
this.txt_ret.TabIndex = 68;
|
||||||
//
|
//
|
||||||
// label3
|
// label3
|
||||||
//
|
//
|
||||||
this.label3.AutoSize = true;
|
this.label3.AutoSize = true;
|
||||||
this.label3.Location = new System.Drawing.Point(453, 43);
|
this.label3.Location = new System.Drawing.Point(515, 43);
|
||||||
this.label3.Name = "label3";
|
this.label3.Name = "label3";
|
||||||
this.label3.Size = new System.Drawing.Size(53, 12);
|
this.label3.Size = new System.Drawing.Size(53, 12);
|
||||||
this.label3.TabIndex = 69;
|
this.label3.TabIndex = 69;
|
||||||
@ -85,16 +88,16 @@
|
|||||||
//
|
//
|
||||||
// namespace_name
|
// namespace_name
|
||||||
//
|
//
|
||||||
this.namespace_name.Location = new System.Drawing.Point(131, 86);
|
this.namespace_name.Location = new System.Drawing.Point(118, 86);
|
||||||
this.namespace_name.Name = "namespace_name";
|
this.namespace_name.Name = "namespace_name";
|
||||||
this.namespace_name.Size = new System.Drawing.Size(218, 21);
|
this.namespace_name.Size = new System.Drawing.Size(353, 21);
|
||||||
this.namespace_name.TabIndex = 70;
|
this.namespace_name.TabIndex = 70;
|
||||||
this.namespace_name.Text = "default_namespace";
|
this.namespace_name.Text = "default_namespace";
|
||||||
//
|
//
|
||||||
// lable2
|
// lable2
|
||||||
//
|
//
|
||||||
this.lable2.AutoSize = true;
|
this.lable2.AutoSize = true;
|
||||||
this.lable2.Location = new System.Drawing.Point(67, 91);
|
this.lable2.Location = new System.Drawing.Point(54, 91);
|
||||||
this.lable2.Name = "lable2";
|
this.lable2.Name = "lable2";
|
||||||
this.lable2.Size = new System.Drawing.Size(59, 12);
|
this.lable2.Size = new System.Drawing.Size(59, 12);
|
||||||
this.lable2.TabIndex = 71;
|
this.lable2.TabIndex = 71;
|
||||||
@ -103,25 +106,25 @@
|
|||||||
// txt_tablename
|
// txt_tablename
|
||||||
//
|
//
|
||||||
this.txt_tablename.FormattingEnabled = true;
|
this.txt_tablename.FormattingEnabled = true;
|
||||||
this.txt_tablename.Location = new System.Drawing.Point(343, 12);
|
this.txt_tablename.Location = new System.Drawing.Point(404, 12);
|
||||||
this.txt_tablename.Name = "txt_tablename";
|
this.txt_tablename.Name = "txt_tablename";
|
||||||
this.txt_tablename.Size = new System.Drawing.Size(218, 20);
|
this.txt_tablename.Size = new System.Drawing.Size(218, 20);
|
||||||
this.txt_tablename.TabIndex = 72;
|
this.txt_tablename.TabIndex = 72;
|
||||||
this.txt_tablename.Text = "请选择";
|
this.txt_tablename.Text = "请选择";
|
||||||
this.txt_tablename.TextUpdate += new System.EventHandler(this.orderId_TextUpdate);
|
|
||||||
//
|
//
|
||||||
// textBox1
|
// textBox1
|
||||||
//
|
//
|
||||||
this.textBox1.Font = new System.Drawing.Font("宋体", 11F);
|
this.textBox1.Font = new System.Drawing.Font("宋体", 11F);
|
||||||
this.textBox1.Location = new System.Drawing.Point(455, 425);
|
this.textBox1.Location = new System.Drawing.Point(517, 425);
|
||||||
this.textBox1.Multiline = true;
|
this.textBox1.Multiline = true;
|
||||||
this.textBox1.Name = "textBox1";
|
this.textBox1.Name = "textBox1";
|
||||||
|
this.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Both;
|
||||||
this.textBox1.Size = new System.Drawing.Size(335, 341);
|
this.textBox1.Size = new System.Drawing.Size(335, 341);
|
||||||
this.textBox1.TabIndex = 73;
|
this.textBox1.TabIndex = 73;
|
||||||
//
|
//
|
||||||
// textBox2
|
// textBox2
|
||||||
//
|
//
|
||||||
this.textBox2.Location = new System.Drawing.Point(142, 469);
|
this.textBox2.Location = new System.Drawing.Point(164, 469);
|
||||||
this.textBox2.Name = "textBox2";
|
this.textBox2.Name = "textBox2";
|
||||||
this.textBox2.Size = new System.Drawing.Size(218, 21);
|
this.textBox2.Size = new System.Drawing.Size(218, 21);
|
||||||
this.textBox2.TabIndex = 74;
|
this.textBox2.TabIndex = 74;
|
||||||
@ -130,7 +133,7 @@
|
|||||||
// label1
|
// label1
|
||||||
//
|
//
|
||||||
this.label1.AutoSize = true;
|
this.label1.AutoSize = true;
|
||||||
this.label1.Location = new System.Drawing.Point(70, 472);
|
this.label1.Location = new System.Drawing.Point(92, 472);
|
||||||
this.label1.Name = "label1";
|
this.label1.Name = "label1";
|
||||||
this.label1.Size = new System.Drawing.Size(65, 12);
|
this.label1.Size = new System.Drawing.Size(65, 12);
|
||||||
this.label1.TabIndex = 75;
|
this.label1.TabIndex = 75;
|
||||||
@ -138,18 +141,18 @@
|
|||||||
//
|
//
|
||||||
// button2
|
// button2
|
||||||
//
|
//
|
||||||
this.button2.Location = new System.Drawing.Point(69, 630);
|
this.button2.Location = new System.Drawing.Point(91, 630);
|
||||||
this.button2.Name = "button2";
|
this.button2.Name = "button2";
|
||||||
this.button2.Size = new System.Drawing.Size(75, 23);
|
this.button2.Size = new System.Drawing.Size(75, 23);
|
||||||
this.button2.TabIndex = 76;
|
this.button2.TabIndex = 76;
|
||||||
this.button2.Text = "生成1";
|
this.button2.Text = "生成1";
|
||||||
this.button2.UseVisualStyleBackColor = true;
|
this.button2.UseVisualStyleBackColor = true;
|
||||||
this.button2.Click += new System.EventHandler(this.button2_Click);
|
this.button2.Click += new System.EventHandler(this.dgvGen1_Click);
|
||||||
//
|
//
|
||||||
// label4
|
// label4
|
||||||
//
|
//
|
||||||
this.label4.AutoSize = true;
|
this.label4.AutoSize = true;
|
||||||
this.label4.Location = new System.Drawing.Point(25, 405);
|
this.label4.Location = new System.Drawing.Point(87, 405);
|
||||||
this.label4.Name = "label4";
|
this.label4.Name = "label4";
|
||||||
this.label4.Size = new System.Drawing.Size(827, 12);
|
this.label4.Size = new System.Drawing.Size(827, 12);
|
||||||
this.label4.TabIndex = 77;
|
this.label4.TabIndex = 77;
|
||||||
@ -158,27 +161,27 @@
|
|||||||
//
|
//
|
||||||
// button3
|
// button3
|
||||||
//
|
//
|
||||||
this.button3.Location = new System.Drawing.Point(176, 630);
|
this.button3.Location = new System.Drawing.Point(198, 630);
|
||||||
this.button3.Name = "button3";
|
this.button3.Name = "button3";
|
||||||
this.button3.Size = new System.Drawing.Size(75, 23);
|
this.button3.Size = new System.Drawing.Size(75, 23);
|
||||||
this.button3.TabIndex = 78;
|
this.button3.TabIndex = 78;
|
||||||
this.button3.Text = "生成2";
|
this.button3.Text = "生成2";
|
||||||
this.button3.UseVisualStyleBackColor = true;
|
this.button3.UseVisualStyleBackColor = true;
|
||||||
this.button3.Click += new System.EventHandler(this.button3_Click);
|
this.button3.Click += new System.EventHandler(this.dgvGen2_Click);
|
||||||
//
|
//
|
||||||
// button4
|
// button4
|
||||||
//
|
//
|
||||||
this.button4.Location = new System.Drawing.Point(285, 630);
|
this.button4.Location = new System.Drawing.Point(307, 630);
|
||||||
this.button4.Name = "button4";
|
this.button4.Name = "button4";
|
||||||
this.button4.Size = new System.Drawing.Size(75, 23);
|
this.button4.Size = new System.Drawing.Size(75, 23);
|
||||||
this.button4.TabIndex = 79;
|
this.button4.TabIndex = 79;
|
||||||
this.button4.Text = "生成3";
|
this.button4.Text = "生成3";
|
||||||
this.button4.UseVisualStyleBackColor = true;
|
this.button4.UseVisualStyleBackColor = true;
|
||||||
this.button4.Click += new System.EventHandler(this.button4_Click);
|
this.button4.Click += new System.EventHandler(this.dgvGen3_Click);
|
||||||
//
|
//
|
||||||
// textBox3
|
// textBox3
|
||||||
//
|
//
|
||||||
this.textBox3.Location = new System.Drawing.Point(858, 344);
|
this.textBox3.Location = new System.Drawing.Point(920, 344);
|
||||||
this.textBox3.Multiline = true;
|
this.textBox3.Multiline = true;
|
||||||
this.textBox3.Name = "textBox3";
|
this.textBox3.Name = "textBox3";
|
||||||
this.textBox3.Size = new System.Drawing.Size(98, 131);
|
this.textBox3.Size = new System.Drawing.Size(98, 131);
|
||||||
@ -187,17 +190,37 @@
|
|||||||
// label5
|
// label5
|
||||||
//
|
//
|
||||||
this.label5.AutoSize = true;
|
this.label5.AutoSize = true;
|
||||||
this.label5.Location = new System.Drawing.Point(840, 322);
|
this.label5.Location = new System.Drawing.Point(902, 322);
|
||||||
this.label5.Name = "label5";
|
this.label5.Name = "label5";
|
||||||
this.label5.Size = new System.Drawing.Size(137, 12);
|
this.label5.Size = new System.Drawing.Size(137, 12);
|
||||||
this.label5.TabIndex = 81;
|
this.label5.TabIndex = 81;
|
||||||
this.label5.Text = "查询字段sql自定义,可空";
|
this.label5.Text = "查询字段sql自定义,可空";
|
||||||
//
|
//
|
||||||
|
// isGenOperationColumn
|
||||||
|
//
|
||||||
|
this.isGenOperationColumn.AutoSize = true;
|
||||||
|
this.isGenOperationColumn.Location = new System.Drawing.Point(256, 538);
|
||||||
|
this.isGenOperationColumn.Name = "isGenOperationColumn";
|
||||||
|
this.isGenOperationColumn.Size = new System.Drawing.Size(15, 14);
|
||||||
|
this.isGenOperationColumn.TabIndex = 82;
|
||||||
|
this.isGenOperationColumn.UseVisualStyleBackColor = true;
|
||||||
|
//
|
||||||
|
// label6
|
||||||
|
//
|
||||||
|
this.label6.AutoSize = true;
|
||||||
|
this.label6.Location = new System.Drawing.Point(89, 538);
|
||||||
|
this.label6.Name = "label6";
|
||||||
|
this.label6.Size = new System.Drawing.Size(161, 12);
|
||||||
|
this.label6.TabIndex = 83;
|
||||||
|
this.label6.Text = "是否生成操作列(生成2和3):";
|
||||||
|
//
|
||||||
// Form1
|
// Form1
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.ClientSize = new System.Drawing.Size(1084, 778);
|
this.ClientSize = new System.Drawing.Size(1084, 778);
|
||||||
|
this.Controls.Add(this.label6);
|
||||||
|
this.Controls.Add(this.isGenOperationColumn);
|
||||||
this.Controls.Add(this.label5);
|
this.Controls.Add(this.label5);
|
||||||
this.Controls.Add(this.textBox3);
|
this.Controls.Add(this.textBox3);
|
||||||
this.Controls.Add(this.button4);
|
this.Controls.Add(this.button4);
|
||||||
@ -213,7 +236,7 @@
|
|||||||
this.Controls.Add(this.label3);
|
this.Controls.Add(this.label3);
|
||||||
this.Controls.Add(this.txt_ret);
|
this.Controls.Add(this.txt_ret);
|
||||||
this.Controls.Add(this.label2);
|
this.Controls.Add(this.label2);
|
||||||
this.Controls.Add(this.button1);
|
this.Controls.Add(this.modelGen);
|
||||||
this.Name = "Form1";
|
this.Name = "Form1";
|
||||||
this.Text = "Form1";
|
this.Text = "Form1";
|
||||||
this.Load += new System.EventHandler(this.Form1_Load);
|
this.Load += new System.EventHandler(this.Form1_Load);
|
||||||
@ -224,7 +247,7 @@
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private System.Windows.Forms.Button button1;
|
private System.Windows.Forms.Button modelGen;
|
||||||
private System.Windows.Forms.Label label2;
|
private System.Windows.Forms.Label label2;
|
||||||
private System.Windows.Forms.TextBox txt_ret;
|
private System.Windows.Forms.TextBox txt_ret;
|
||||||
private System.Windows.Forms.Label label3;
|
private System.Windows.Forms.Label label3;
|
||||||
@ -240,6 +263,8 @@
|
|||||||
private System.Windows.Forms.Button button4;
|
private System.Windows.Forms.Button button4;
|
||||||
private System.Windows.Forms.TextBox textBox3;
|
private System.Windows.Forms.TextBox textBox3;
|
||||||
private System.Windows.Forms.Label label5;
|
private System.Windows.Forms.Label label5;
|
||||||
|
private System.Windows.Forms.CheckBox isGenOperationColumn;
|
||||||
|
private System.Windows.Forms.Label label6;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,19 +1,11 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel;
|
|
||||||
using System.Data;
|
|
||||||
using System.Data.SqlTypes;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.Globalization;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
|
using GenerateClass.Util;
|
||||||
|
using JinianNet.JNTemplate;
|
||||||
|
|
||||||
namespace WindowsFormsApp1
|
namespace GenerateClass
|
||||||
{
|
{
|
||||||
public partial class Form1 : Form
|
public partial class Form1 : Form
|
||||||
{
|
{
|
||||||
@ -21,402 +13,121 @@ namespace WindowsFormsApp1
|
|||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
}
|
}
|
||||||
string folderName = "GenFolder"; // 文件夹名称
|
|
||||||
private void Form1_Load(object sender, EventArgs e)
|
private void Form1_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
this.txt_tablename.Items.AddRange(GetTableName().ToArray());
|
this.txt_tablename.Items.AddRange(DbUtil.GetTableName().ToArray());
|
||||||
}
|
this.txt_tablename.TextUpdate += (childSender, childE) => {
|
||||||
/// <summary>
|
string str = this.txt_tablename.Text; //获取输入内容
|
||||||
/// 将数据库字段转换为驼峰命名
|
List<string> sList = DbUtil.GetTableName(str); //存放数据库查询结果
|
||||||
/// </summary>
|
//提前下拉,以显示搜索结果(必须要在添加项之前下拉,否则会将第一项自动添加到编辑框内 覆盖掉输入的内容)
|
||||||
/// <param name="dbField"></param>
|
this.txt_tablename.DroppedDown = true; //显示下拉列表,但是显示后鼠标指针就不见了
|
||||||
/// <returns></returns>
|
Cursor.Current = Cursors.Default; //将指针显示出来
|
||||||
public static string ToCamelCase(string dbField)
|
//在表中已录入名字中寻找包含输入内容的项 有则添加到comboBox项中
|
||||||
{
|
this.txt_tablename.Items.Clear();
|
||||||
string[] words = dbField.Split('_');
|
this.txt_tablename.Items.AddRange(sList.ToArray());
|
||||||
for (int i = 1; i < words.Length; i++)
|
this.txt_tablename.Select(this.txt_tablename.Text.Length, 0);
|
||||||
{
|
|
||||||
words[i] = char.ToUpper(words[i][0]) + words[i].Substring(1);
|
|
||||||
}
|
|
||||||
return string.Join("", words);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 根据数据库表名生成实体类名称
|
|
||||||
static string GenerateClassName(string tableName)
|
|
||||||
{
|
|
||||||
string[] words = tableName.Split('_');
|
|
||||||
|
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
foreach (string word in words)
|
|
||||||
{
|
|
||||||
sb.Append(CultureInfo.CurrentCulture.TextInfo.ToTitleCase(word.ToLower()));
|
|
||||||
}
|
|
||||||
|
|
||||||
return sb.ToString();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void button1_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
//string constr = txt_constr.Text.Trim();//数据库链接字符串
|
|
||||||
txt_ret.Text = "";
|
|
||||||
string tbname = txt_tablename.Text.Trim();//要生成的表名
|
|
||||||
if (tbname.Equals("请选择") || tbname.Equals("")) {
|
|
||||||
MessageBox.Show("请选择表");
|
|
||||||
return;
|
|
||||||
};
|
|
||||||
string namespaceName = namespace_name.Text.Trim();
|
|
||||||
DataTable dt = null;
|
|
||||||
if (textBox3.Text.Trim() == "")
|
|
||||||
{
|
|
||||||
dt = GetDbTableInfo(tbname);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
dt = DbHelperMySQL.Query(textBox3.Text.Trim());
|
|
||||||
}
|
|
||||||
var list = new List<string>();
|
|
||||||
txt_ret.Text += "using System;\n" +
|
|
||||||
"using NCA_MES_Models.CommonUtils.DB.DBAttribute;\n\n";
|
|
||||||
txt_ret.Text += $"namespace {namespaceName} {{\n\n";
|
|
||||||
txt_ret.Text += "/// <summary>" + "\n" +
|
|
||||||
$"/// {GetTableComment(tbname)}\n" +
|
|
||||||
"/// </summary>" + "\n" +
|
|
||||||
$"[TableName(\"{tbname}\")]\n" +
|
|
||||||
$"public class {GenerateClassName(tbname)}: DBBaseModel<{GenerateClassName(tbname)}>{{";
|
|
||||||
for (int i = 0; i < dt.Rows.Count; i++)
|
|
||||||
{
|
|
||||||
var Name = dt.Rows[i]["Name"].ToString();
|
|
||||||
var Type = dt.Rows[i]["Type"].ToString();
|
|
||||||
var IsNullable = dt.Rows[i]["COMMENT"].ToString();
|
|
||||||
var KeyType = dt.Rows[i]["KeyType"].ToString();
|
|
||||||
Type type = DbTypeStr_To_CsharpType(Type);
|
|
||||||
txt_ret.Text += "\n\n\t" + "/// <summary>" +
|
|
||||||
"\n\t" + $"///{IsNullable}" +
|
|
||||||
"\n\t" + "/// </summary>" +
|
|
||||||
(String.IsNullOrEmpty(KeyType)?"":"\n\t[TableId]") +
|
|
||||||
"\n\t" + $"[TableField(\"{Name}\",\"{IsNullable}\")]" +
|
|
||||||
"\n\t" + $"public {type.Name} {ToCamelCase(Name)} {{ get; set; }}";
|
|
||||||
//加注释记得引用using
|
|
||||||
}
|
|
||||||
txt_ret.Text += "\n}\n}";
|
|
||||||
// 创建文件夹
|
|
||||||
string folderPath = Path.Combine(Environment.CurrentDirectory, folderName);
|
|
||||||
Directory.CreateDirectory(folderPath);
|
|
||||||
|
|
||||||
// 创建文件并写入内容
|
|
||||||
string filePath = Path.Combine(folderPath, GenerateClassName(tbname)+".cs");
|
|
||||||
File.WriteAllText(filePath, txt_ret.Text);
|
|
||||||
|
|
||||||
// 打开文件夹
|
|
||||||
System.Diagnostics.Process.Start(folderPath);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void button2_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
string tbname = txt_tablename.Text.Trim();//要生成的表名
|
|
||||||
if (tbname.Equals("请选择") || tbname.Equals(""))
|
|
||||||
{
|
|
||||||
MessageBox.Show("请选择表");
|
|
||||||
return;
|
|
||||||
};
|
|
||||||
DataTable dt = null;
|
|
||||||
if (textBox3.Text.Trim() == "")
|
|
||||||
{
|
|
||||||
dt = GetDbTableInfo(tbname);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
dt = DbHelperMySQL.Query(textBox3.Text.Trim());
|
|
||||||
}
|
|
||||||
string uidatagridview = textBox2.Text.Trim();
|
|
||||||
textBox1.Text = "";
|
|
||||||
textBox1.Text += $"DataTable data = DbHelperMySQL.Query(\"select * from {tbname}\");\n";
|
|
||||||
textBox1.Text += "this."+ uidatagridview + ".DataSource = new BindingSource {DataSource = data};\n";
|
|
||||||
for (int i = 0; i < dt.Rows.Count; i++)
|
|
||||||
{
|
|
||||||
var Name = dt.Rows[i]["Name"].ToString();
|
|
||||||
textBox1.Text += $"var {Name}Column = {uidatagridview}.Columns[\"{Name}\"];\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < dt.Rows.Count; i++)
|
|
||||||
{
|
|
||||||
var Name = dt.Rows[i]["Name"].ToString();
|
|
||||||
var IsNullable = dt.Rows[i]["COMMENT"].ToString();
|
|
||||||
textBox1.Text += $"{Name}Column.HeaderText = \"{IsNullable}\";\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
textBox1.Text += $" {uidatagridview}.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader;\n";
|
|
||||||
textBox1.Text += $" {uidatagridview}.AutoGenerateColumns = true;\n";
|
|
||||||
// textBox1.Text += $" {uidatagridview}.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
private void button3_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
string tbname = txt_tablename.Text.Trim();//要生成的表名
|
|
||||||
if (tbname.Equals("请选择") || tbname.Equals(""))
|
|
||||||
{
|
|
||||||
MessageBox.Show("请选择表");
|
|
||||||
return;
|
|
||||||
};
|
|
||||||
DataTable dt = null;
|
|
||||||
if (textBox3.Text.Trim() == "")
|
|
||||||
{
|
|
||||||
dt = GetDbTableInfo(tbname);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
dt = DbHelperMySQL.Query(textBox3.Text.Trim());
|
|
||||||
}
|
|
||||||
|
|
||||||
string uidatagridview = textBox2.Text.Trim();
|
|
||||||
textBox1.Text = $"this.{uidatagridview}.AutoGenerateColumns = false;";
|
|
||||||
textBox1.Text += $" string sql = $\"SELECT column_name, column_comment from information_schema.COLUMNS where table_name = '{tbname}' ORDER BY ORDINAL_POSITION; \";\r\n" +
|
|
||||||
$" DataTable dt = DbHelperMySQL.Query(sql);\n";
|
|
||||||
textBox1.Text += "List<DataGridViewColumn> cols = new List<DataGridViewColumn>();\n";
|
|
||||||
textBox1.Text += "for (int i = 0; i < dt.Rows.Count; i++){\n" +
|
|
||||||
" DataGridViewTextBoxColumn temp = new DataGridViewTextBoxColumn();\n" +
|
|
||||||
"temp.Name = dt.Rows[i][0].ToString();\n" +
|
|
||||||
"temp.HeaderText = dt.Rows[i][1].ToString();\n" +
|
|
||||||
"temp.DataPropertyName= dt.Rows[i][0].ToString();\n" +
|
|
||||||
"cols.Add(temp);" +
|
|
||||||
"}\n";
|
|
||||||
textBox1.Text += "DataGridViewButtonColumn editBtn = new DataGridViewButtonColumn();\r\n" +
|
|
||||||
"editBtn.HeaderText = \"编辑\";\r\n" +
|
|
||||||
"editBtn.Name = \"editBtn\";\r\n" +
|
|
||||||
"editBtn.Text = \"编辑\";\r\n" +
|
|
||||||
"editBtn.UseColumnTextForButtonValue = true;\r\n" +
|
|
||||||
"editBtn.Frozen = true;\n";
|
|
||||||
textBox1.Text += " DataGridViewButtonColumn addBtn = new DataGridViewButtonColumn();\r\n" +
|
|
||||||
"addBtn.HeaderText = \"新增\";\r\n" +
|
|
||||||
"addBtn.Name = \"addBtn\";\r\n" +
|
|
||||||
"addBtn.Text = \"新增\";\r\n" +
|
|
||||||
"addBtn.UseColumnTextForButtonValue = true;\r\n" +
|
|
||||||
"addBtn.Frozen = true;\n ";
|
|
||||||
textBox1.Text += "cols.Add(editBtn);\n cols.Add(addBtn);\n";
|
|
||||||
textBox1.Text += "if (cols.Last().Frozen)\r\n" +
|
|
||||||
"{\r\n " +
|
|
||||||
$"this.{uidatagridview}.RightToLeft = RightToLeft.Yes;\r\n" +
|
|
||||||
"cols.Reverse();\r\n" +
|
|
||||||
"}\r\n" +
|
|
||||||
$"this.{uidatagridview}.Columns.AddRange(cols.ToArray());\r\n\r\n" +
|
|
||||||
$"if (this.{uidatagridview}.Columns.Count > 0)\r\n" +
|
|
||||||
$"this.{uidatagridview}.FirstDisplayedScrollingColumnIndex = this.{uidatagridview}.Columns.Count - 2;\n";
|
|
||||||
textBox1.Text += $" {uidatagridview}.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader;\n";
|
|
||||||
textBox1.Text += $"DataTable data = DbHelperMySQL.Query(\"select * from {tbname}\");\n";
|
|
||||||
textBox1.Text += $"this.{uidatagridview}.DataSource = data;\n";
|
|
||||||
|
|
||||||
}
|
|
||||||
private void button4_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
string tbname = txt_tablename.Text.Trim();//要生成的表名
|
|
||||||
if (tbname.Equals("请选择") || tbname.Equals(""))
|
|
||||||
{
|
|
||||||
MessageBox.Show("请选择表");
|
|
||||||
return;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
}
|
||||||
DataTable dt = null;
|
private void modelGen_Click(object sender, EventArgs e)
|
||||||
if (textBox3.Text.Trim() == "")
|
{
|
||||||
|
fillModelTemplate();
|
||||||
|
}
|
||||||
|
private void dgvGen1_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
fillDgv1Template();
|
||||||
|
}
|
||||||
|
private void dgvGen2_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
fillDgv2Template();
|
||||||
|
}
|
||||||
|
private void dgvGen3_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
fillDgv3Template();
|
||||||
|
}
|
||||||
|
private void fillModelTemplate()
|
||||||
|
{
|
||||||
|
string tbname = txt_tablename.Text.Trim();//要生成的表名
|
||||||
|
string namespaceName = namespace_name.Text.Trim();//名称空间名称
|
||||||
|
List<Dictionary<string, string>> filedInfos = DbUtil.getTableInfo(tbname, textBox3.Text.Trim());
|
||||||
|
using (StreamReader reader = new StreamReader(@".\Template\ModelFile.template"))
|
||||||
{
|
{
|
||||||
dt = GetDbTableInfo(tbname);
|
string fileContent = reader.ReadToEnd();
|
||||||
|
var template = Engine.CreateTemplate(fileContent);
|
||||||
|
template.Set("namespace_name", namespaceName);
|
||||||
|
template.Set("table_comment", DbUtil.GetTableComment(tbname));
|
||||||
|
template.Set("sql_table_name", tbname);
|
||||||
|
template.Set("table_name", DbUtil.GenerateClassName(tbname));
|
||||||
|
template.Set("filedInfos", filedInfos);
|
||||||
|
template.SetStaticType("string", typeof(string));
|
||||||
|
var result = template.Render();
|
||||||
|
this.txt_ret.Text = result;
|
||||||
|
DbUtil.openFile(tbname, result);
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
dt = DbHelperMySQL.Query(textBox3.Text.Trim());
|
}
|
||||||
}
|
private void fillDgv1Template()
|
||||||
string uidatagridview = textBox2.Text.Trim();
|
{
|
||||||
textBox1.Text = $"this.{uidatagridview}.AutoGenerateColumns = false;";
|
string tbname = txt_tablename.Text.Trim();//要生成的表名
|
||||||
textBox1.Text += "List<DataGridViewColumn> cols = new List<DataGridViewColumn>();\n\n";
|
string dgvName = textBox2.Text.Trim(); //dgv空间名称
|
||||||
for (int i = 0; i < dt.Rows.Count; i++)
|
List<Dictionary<string, string>> filedInfos = DbUtil.getTableInfo(tbname, textBox3.Text.Trim());
|
||||||
|
List<string> timeFileds = DbUtil.getTimeFields(filedInfos);
|
||||||
|
using (StreamReader reader = new StreamReader(@".\Template\DataGridView_1.template"))
|
||||||
{
|
{
|
||||||
var Name = dt.Rows[i]["Name"].ToString();
|
string fileContent = reader.ReadToEnd();
|
||||||
var IsNullable = dt.Rows[i]["COMMENT"].ToString();
|
var template = Engine.CreateTemplate(fileContent);
|
||||||
textBox1.Text += $"DataGridViewTextBoxColumn {Name}Cloumn = new DataGridViewTextBoxColumn();\n";
|
template.Set("table_comment", DbUtil.GetTableComment(tbname));
|
||||||
textBox1.Text += $"{Name}Cloumn.Name = \"{Name}\";" +
|
template.Set("sql_table_name", tbname);
|
||||||
$"{Name}Cloumn.HeaderText =\"{IsNullable}\";" +
|
template.Set("table_name", DbUtil.GenerateClassName(tbname));
|
||||||
$"{Name}Cloumn.DataPropertyName = \"{Name}\";" +
|
template.Set("dgv_name", dgvName);
|
||||||
$"cols.Add({Name}Cloumn);\n\n";
|
template.Set("filedInfos", filedInfos);
|
||||||
|
template.Set("timeFiledStr", DbUtil.joinList(timeFileds));
|
||||||
|
template.SetStaticType("string", typeof(string));
|
||||||
|
var result = template.Render();
|
||||||
|
this.textBox1.Text = result;
|
||||||
}
|
}
|
||||||
textBox1.Text += "DataGridViewButtonColumn editBtn = new DataGridViewButtonColumn();\r\n" +
|
|
||||||
"editBtn.HeaderText = \"编辑\";\r\n" +
|
|
||||||
"editBtn.Name = \"editBtn\";\r\n" +
|
|
||||||
"editBtn.Text = \"编辑\";\r\n" +
|
|
||||||
"editBtn.UseColumnTextForButtonValue = true;\r\n" +
|
|
||||||
"editBtn.Frozen = true;\n";
|
|
||||||
textBox1.Text += " DataGridViewButtonColumn addBtn = new DataGridViewButtonColumn();\r\n" +
|
|
||||||
"addBtn.HeaderText = \"新增\";\r\n" +
|
|
||||||
"addBtn.Name = \"addBtn\";\r\n" +
|
|
||||||
"addBtn.Text = \"新增\";\r\n" +
|
|
||||||
"addBtn.UseColumnTextForButtonValue = true;\r\n" +
|
|
||||||
"addBtn.Frozen = true;\n ";
|
|
||||||
textBox1.Text += "cols.Add(editBtn);\n cols.Add(addBtn);\n";
|
|
||||||
textBox1.Text += "if (cols.Last().Frozen)\r\n" +
|
|
||||||
"{\r\n " +
|
|
||||||
$"this.{uidatagridview}.RightToLeft = RightToLeft.Yes;\r\n" +
|
|
||||||
"cols.Reverse();\r\n" +
|
|
||||||
"}\r\n" +
|
|
||||||
$"this.{uidatagridview}.Columns.AddRange(cols.ToArray());\r\n\r\n" +
|
|
||||||
$"if (this.{uidatagridview}.Columns.Count > 0)\r\n" +
|
|
||||||
$"this.{uidatagridview}.FirstDisplayedScrollingColumnIndex = this.{uidatagridview}.Columns.Count - 2;\n";
|
|
||||||
textBox1.Text += $" {uidatagridview}.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader;\n";
|
|
||||||
textBox1.Text += $"DataTable data = DbHelperMySQL.Query(\"select * from {tbname}\");\n";
|
|
||||||
textBox1.Text += $"this.{uidatagridview}.DataSource = data;\n";
|
|
||||||
/* textBox1.Text += $"this.{uidatagridview}.Rows.AddRange(data.AsEnumerable().Select(row => {{\r\n" +
|
|
||||||
"DataGridViewRow dataGridViewRow = new DataGridViewRow();\r\n " +
|
|
||||||
"DataGridViewButtonCell addCell = new DataGridViewButtonCell();\r\n" +
|
|
||||||
"addCell.Value = \"新增\";\r\n " +
|
|
||||||
"dataGridViewRow.Cells.Add(addCell);\r\n " +
|
|
||||||
"DataGridViewButtonCell editCell = new DataGridViewButtonCell();\r\n" +
|
|
||||||
"editCell.Value = \"修改\";\r\n " +
|
|
||||||
"dataGridViewRow.Cells.Add(editCell);\r\n " +
|
|
||||||
"foreach (var item in row.ItemArray.Reverse())\r\n " +
|
|
||||||
"{\r\n" +
|
|
||||||
"DataGridViewTextBoxCell cell = new DataGridViewTextBoxCell();\r\n" +
|
|
||||||
"cell.Value = item;\r\n " +
|
|
||||||
"dataGridViewRow.Cells.Add(cell);\r\n" +
|
|
||||||
"}\r\n" +
|
|
||||||
"dataGridViewRow.Height = 40;\r\n" +
|
|
||||||
"return dataGridViewRow;\r\n" +
|
|
||||||
"}).ToArray());";*/
|
|
||||||
|
|
||||||
}
|
}
|
||||||
//订单下拉模糊搜索
|
private void fillDgv2Template()
|
||||||
private void orderId_TextUpdate(object sender, EventArgs e) //不要用TextChanged
|
|
||||||
{
|
{
|
||||||
string s = this.txt_tablename.Text; //获取输入内容
|
string tbname = txt_tablename.Text.Trim();//要生成的表名
|
||||||
List<string> sList = GetTableName(s); //存放数据库查询结果
|
string dgvName = textBox2.Text.Trim(); //dgv空间名称
|
||||||
//提前下拉,以显示搜索结果(必须要在添加项之前下拉,否则会将第一项自动添加到编辑框内 覆盖掉输入的内容)
|
List<string> timeFileds = DbUtil.getTimeFields(DbUtil.getTableInfo(tbname, textBox3.Text.Trim()));
|
||||||
this.txt_tablename.DroppedDown = true; //显示下拉列表,但是显示后鼠标指针就不见了
|
using (StreamReader reader = new StreamReader(@".\Template\DataGridView_2.template"))
|
||||||
Cursor.Current = Cursors.Default; //将指针显示出来
|
|
||||||
|
|
||||||
//在表中已录入名字中寻找包含输入内容的项 有则添加到comboBox项中
|
|
||||||
this.txt_tablename.Items.Clear();
|
|
||||||
this.txt_tablename.Items.AddRange(sList.ToArray());
|
|
||||||
this.txt_tablename.Select(this.txt_tablename.Text.Length, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 根据参数,获取数据表信息
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="tabname"></param>
|
|
||||||
public static DataTable GetDbTableInfo(string tabname)
|
|
||||||
{
|
|
||||||
string sql = @"SELECT
|
|
||||||
c.COLUMN_NAME AS Name,
|
|
||||||
c.COLUMN_TYPE AS Type,
|
|
||||||
c.COLUMN_COMMENT AS Comment,
|
|
||||||
CASE WHEN CONSTRAINT_NAME = 'PRIMARY' THEN 'PRIMARY KEY' ELSE '' END AS KeyType
|
|
||||||
FROM
|
|
||||||
INFORMATION_SCHEMA.COLUMNS c
|
|
||||||
LEFT JOIN
|
|
||||||
INFORMATION_SCHEMA.KEY_COLUMN_USAGE k
|
|
||||||
ON
|
|
||||||
c.TABLE_SCHEMA = k.TABLE_SCHEMA
|
|
||||||
AND c.TABLE_NAME = k.TABLE_NAME
|
|
||||||
AND c.COLUMN_NAME = k.COLUMN_NAME
|
|
||||||
WHERE
|
|
||||||
c.TABLE_NAME = '{0}'
|
|
||||||
ORDER BY
|
|
||||||
c.ORDINAL_POSITION;";
|
|
||||||
//string str = $"SELECT COLUMN_NAME AS Name, COLUMN_TYPE AS Type,COLUMN_COMMENT AS COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '{tabname}' ORDER BY ORDINAL_POSITION;";
|
|
||||||
var dt = DbHelperMySQL.Query(String.Format(sql, tabname));
|
|
||||||
return dt;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static List<string> GetTableName(string tableName)
|
|
||||||
{
|
|
||||||
string sql = $"SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{DbHelperMySQL.DbName}' AND TABLE_NAME LIKE '{tableName}%' limit 20;";
|
|
||||||
var dt = DbHelperMySQL.Query(sql);
|
|
||||||
//查询数据库表中所有已录入人员
|
|
||||||
List<string> sList = new List<string>(); //存放数据库查询结果
|
|
||||||
for (int i = 0; i < dt.Rows.Count; i++)
|
|
||||||
{
|
{
|
||||||
sList.Add(dt.Rows[i]["TABLE_NAME"].ToString());
|
string fileContent = reader.ReadToEnd();
|
||||||
|
var template = Engine.CreateTemplate(fileContent);
|
||||||
|
template.Set("table_comment", DbUtil.GetTableComment(tbname));
|
||||||
|
template.Set("sql_table_name", tbname);
|
||||||
|
template.Set("table_name", DbUtil.GenerateClassName(tbname));
|
||||||
|
template.Set("dgv_name", dgvName);
|
||||||
|
template.Set("isGenOperationColumn", isGenOperationColumn.Checked);
|
||||||
|
template.Set("timeFiledStr", DbUtil.joinList(timeFileds));
|
||||||
|
template.SetStaticType("string", typeof(string));
|
||||||
|
var result = template.Render();
|
||||||
|
this.textBox1.Text = result;
|
||||||
}
|
}
|
||||||
return sList;
|
|
||||||
//return dt;
|
|
||||||
}
|
}
|
||||||
public static string GetTableComment(string tableName)
|
private void fillDgv3Template()
|
||||||
{
|
{
|
||||||
string sql = $"SELECT TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{DbHelperMySQL.DbName}' AND TABLE_NAME ='{tableName}';";
|
string tbname = txt_tablename.Text.Trim();//要生成的表名
|
||||||
var dt = DbHelperMySQL.Query(sql);
|
string dgvName = textBox2.Text.Trim(); //dgv空间名称
|
||||||
|
List<Dictionary<string, string>> filedInfos = DbUtil.getTableInfo(tbname, textBox3.Text.Trim());
|
||||||
if(dt.Rows.Count<1) return tableName;
|
List<string> timeFileds = DbUtil.getTimeFields(filedInfos);
|
||||||
return dt.Rows[0]["TABLE_COMMENT"].ToString();
|
using (StreamReader reader = new StreamReader(@".\Template\DataGridView_3.template"))
|
||||||
}
|
|
||||||
|
|
||||||
public static List<string> GetTableName()
|
|
||||||
{
|
|
||||||
string sql = $"SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{DbHelperMySQL.DbName}';";
|
|
||||||
var dt = DbHelperMySQL.Query(sql);
|
|
||||||
//查询数据库表中所有已录入人员
|
|
||||||
List<string> sList = new List<string>(); //存放数据库查询结果
|
|
||||||
for (int i = 0; i < dt.Rows.Count; i++)
|
|
||||||
{
|
{
|
||||||
sList.Add(dt.Rows[i]["TABLE_NAME"].ToString());
|
string fileContent = reader.ReadToEnd();
|
||||||
|
var template = Engine.CreateTemplate(fileContent);
|
||||||
|
template.Set("table_comment", DbUtil.GetTableComment(tbname));
|
||||||
|
template.Set("sql_table_name", tbname);
|
||||||
|
template.Set("table_name", DbUtil.GenerateClassName(tbname));
|
||||||
|
template.Set("dgv_name", dgvName);
|
||||||
|
template.Set("filedInfos", filedInfos);
|
||||||
|
template.Set("isGenOperationColumn", isGenOperationColumn.Checked);
|
||||||
|
template.Set("timeFiledStr", DbUtil.joinList(timeFileds));
|
||||||
|
template.SetStaticType("string", typeof(string));
|
||||||
|
var result = template.Render();
|
||||||
|
this.textBox1.Text = result;
|
||||||
}
|
}
|
||||||
return sList;
|
|
||||||
//return dt;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 类型转换枚举
|
|
||||||
/// </summary>
|
|
||||||
protected Dictionary<string, Type> DbTypeDic { get; } = new Dictionary<string, Type>()
|
|
||||||
{
|
|
||||||
{ "int", typeof(Int32) },
|
|
||||||
{ "text", typeof(string) },
|
|
||||||
{ "enum", typeof(string) },
|
|
||||||
{ "bigint", typeof(Int64) },
|
|
||||||
{ "binary", typeof(byte[]) },
|
|
||||||
{ "bit", typeof(bool) },
|
|
||||||
{ "char", typeof(string) },
|
|
||||||
{ "date", typeof(DateTime) },
|
|
||||||
{ "datetime", typeof(DateTime) },
|
|
||||||
{ "datetime2", typeof(DateTime) },
|
|
||||||
{ "decimal", typeof(decimal) },
|
|
||||||
{ "float", typeof(double) },
|
|
||||||
{ "image", typeof(byte[]) },
|
|
||||||
{ "money", typeof(decimal) },
|
|
||||||
{ "nchar", typeof(string) },
|
|
||||||
{ "ntext", typeof(string) },
|
|
||||||
{ "numeric", typeof(decimal) },
|
|
||||||
{ "nvarchar", typeof(string) },
|
|
||||||
{ "real", typeof(Single) },
|
|
||||||
{ "smalldatetime", typeof(DateTime) },
|
|
||||||
{ "smallint", typeof(Int16) },
|
|
||||||
{ "smallmoney", typeof(decimal) },
|
|
||||||
{ "timestamp", typeof(DateTime) },
|
|
||||||
{ "tinyint", typeof(string) },
|
|
||||||
{ "varbinary", typeof(byte[]) },
|
|
||||||
{ "varchar", typeof(string) },
|
|
||||||
{ "variant", typeof(object) },
|
|
||||||
{ "uniqueidentifier", typeof(Guid) },
|
|
||||||
};
|
|
||||||
/// <summary>
|
|
||||||
/// 获取字段类型
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="dbTypeStr"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public virtual Type DbTypeStr_To_CsharpType(string dbTypeStr)
|
|
||||||
{
|
|
||||||
if (dbTypeStr.Contains('('))
|
|
||||||
{
|
|
||||||
string[] strings = dbTypeStr.Split('(');
|
|
||||||
dbTypeStr = strings[0];
|
|
||||||
}
|
|
||||||
string _dbTypeStr = dbTypeStr.ToLower();
|
|
||||||
Type type = null;
|
|
||||||
if (DbTypeDic.ContainsKey(_dbTypeStr))
|
|
||||||
type = DbTypeDic[_dbTypeStr];
|
|
||||||
else
|
|
||||||
type = typeof(string);
|
|
||||||
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
using System;
|
using GenerateClass.Util;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
|
||||||
namespace WindowsFormsApp1
|
namespace GenerateClass
|
||||||
{
|
{
|
||||||
internal static class Program
|
internal static class Program
|
||||||
{
|
{
|
||||||
@ -14,6 +15,7 @@ namespace WindowsFormsApp1
|
|||||||
[STAThread]
|
[STAThread]
|
||||||
static void Main()
|
static void Main()
|
||||||
{
|
{
|
||||||
|
Config.GlobalInit();
|
||||||
Application.EnableVisualStyles();
|
Application.EnableVisualStyles();
|
||||||
Application.SetCompatibleTextRenderingDefault(false);
|
Application.SetCompatibleTextRenderingDefault(false);
|
||||||
Application.Run(new Form1());
|
Application.Run(new Form1());
|
||||||
|
@ -1,50 +1,45 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// 此代码由工具生成。
|
// 此代码由工具生成。
|
||||||
// 运行时版本: 4.0.30319.42000
|
// 运行时版本:4.0.30319.42000
|
||||||
//
|
//
|
||||||
// 对此文件的更改可能导致不正确的行为,如果
|
// 对此文件的更改可能会导致不正确的行为,并且如果
|
||||||
// 重新生成代码,则所做更改将丢失。
|
// 重新生成代码,这些更改将会丢失。
|
||||||
// </auto-generated>
|
// </auto-generated>
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
namespace WindowsFormsApp1.Properties
|
namespace GenerateClass.Properties {
|
||||||
{
|
using System;
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 强类型资源类,用于查找本地化字符串等。
|
/// 一个强类型的资源类,用于查找本地化的字符串等。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
// 此类是由 StronglyTypedResourceBuilder
|
// 此类是由 StronglyTypedResourceBuilder
|
||||||
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
|
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
|
||||||
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
|
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
|
||||||
// (以 /str 作为命令选项),或重新生成 VS 项目。
|
// (以 /str 作为命令选项),或重新生成 VS 项目。
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
internal class Resources
|
internal class Resources {
|
||||||
{
|
|
||||||
|
|
||||||
private static global::System.Resources.ResourceManager resourceMan;
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
internal Resources()
|
internal Resources() {
|
||||||
{
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 返回此类使用的缓存 ResourceManager 实例。
|
/// 返回此类使用的缓存的 ResourceManager 实例。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
internal static global::System.Resources.ResourceManager ResourceManager
|
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||||
{
|
get {
|
||||||
get
|
if (object.ReferenceEquals(resourceMan, null)) {
|
||||||
{
|
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("GenerateClass.Properties.Resources", typeof(Resources).Assembly);
|
||||||
if ((resourceMan == null))
|
|
||||||
{
|
|
||||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WindowsFormsApp1.Properties.Resources", typeof(Resources).Assembly);
|
|
||||||
resourceMan = temp;
|
resourceMan = temp;
|
||||||
}
|
}
|
||||||
return resourceMan;
|
return resourceMan;
|
||||||
@ -56,14 +51,11 @@ namespace WindowsFormsApp1.Properties
|
|||||||
/// 使用此强类型资源类的所有资源查找执行重写。
|
/// 使用此强类型资源类的所有资源查找执行重写。
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
internal static global::System.Globalization.CultureInfo Culture
|
internal static global::System.Globalization.CultureInfo Culture {
|
||||||
{
|
get {
|
||||||
get
|
|
||||||
{
|
|
||||||
return resourceCulture;
|
return resourceCulture;
|
||||||
}
|
}
|
||||||
set
|
set {
|
||||||
{
|
|
||||||
resourceCulture = value;
|
resourceCulture = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,28 +1,24 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// 此代码由工具生成。
|
||||||
// Runtime Version:4.0.30319.42000
|
// 运行时版本:4.0.30319.42000
|
||||||
//
|
//
|
||||||
// Changes to this file may cause incorrect behavior and will be lost if
|
// 对此文件的更改可能会导致不正确的行为,并且如果
|
||||||
// the code is regenerated.
|
// 重新生成代码,这些更改将会丢失。
|
||||||
// </auto-generated>
|
// </auto-generated>
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
namespace WindowsFormsApp1.Properties
|
namespace GenerateClass.Properties {
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0")]
|
||||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
|
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||||
{
|
|
||||||
|
|
||||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||||
|
|
||||||
public static Settings Default
|
public static Settings Default {
|
||||||
{
|
get {
|
||||||
get
|
|
||||||
{
|
|
||||||
return defaultInstance;
|
return defaultInstance;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
35
DatabasetoEntityclass/Template/DataGridView_1.template
Normal file
35
DatabasetoEntityclass/Template/DataGridView_1.template
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
DataTable data = DbHelperMySQL.Query("select * from `${sql_table_name}`");
|
||||||
|
this.${dgv_name}.DataSource = new BindingSource {DataSource = data};
|
||||||
|
$foreach(filedInfo in filedInfos)
|
||||||
|
var ${filedInfo["field_name"]}Column = ${dgv_name}.Columns["${filedInfo["sql_field_name"]}"];
|
||||||
|
$end
|
||||||
|
|
||||||
|
$foreach(filedInfo in filedInfos)
|
||||||
|
${filedInfo["field_name"]}Column.HeaderText = "${filedInfo["comment"]}";
|
||||||
|
$end
|
||||||
|
${dgv_name}.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader;
|
||||||
|
${dgv_name}.AutoGenerateColumns = true;
|
||||||
|
|
||||||
|
$if(timeFiledStr != "")
|
||||||
|
DateTimePicker dtp = new DateTimePicker();
|
||||||
|
${dgv_name}.Controls.Add(dtp);
|
||||||
|
dtp.Visible = false;
|
||||||
|
dtp.TextChanged += (sender, e) => ${dgv_name}.CurrentCell.Value = dtp.Value.ToString("yyyy-MM-dd");
|
||||||
|
dtp.CloseUp += (sender, e) => dtp.Visible = false;
|
||||||
|
${dgv_name}.CellClick += (sender, e) => {
|
||||||
|
if (e.ColumnIndex == -1 || e.RowIndex == -1) return;
|
||||||
|
DataGridView dgv = (sender as DataGridView);
|
||||||
|
if (new List<string>() {
|
||||||
|
${timeFiledStr}
|
||||||
|
}.Contains(dgv.Columns[e.ColumnIndex].Name))
|
||||||
|
{
|
||||||
|
var _Recatngle = dgv.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true);
|
||||||
|
dtp.Size = _Recatngle.Size;
|
||||||
|
dtp.Location = _Recatngle.Location;
|
||||||
|
dtp.Visible = true;
|
||||||
|
}
|
||||||
|
else dtp.Visible = false;
|
||||||
|
};
|
||||||
|
${dgv_name}.Scroll += (sender, e) => dtp.Visible = false;
|
||||||
|
${dgv_name}.SizeChanged += (sender, e) => { if (dtp.Visible) dtp.Visible = false; };
|
||||||
|
$end
|
65
DatabasetoEntityclass/Template/DataGridView_2.template
Normal file
65
DatabasetoEntityclass/Template/DataGridView_2.template
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
this.${dgv_name}.AutoGenerateColumns = false;
|
||||||
|
string sql = $"SELECT column_name, column_comment from information_schema.COLUMNS where table_name = '${sql_table_name}' ORDER BY ORDINAL_POSITION; ";
|
||||||
|
DataTable dt = DbHelperMySQL.Query(sql);
|
||||||
|
List<DataGridViewColumn> cols = new List<DataGridViewColumn>();
|
||||||
|
for (int i = 0; i < dt.Rows.Count; i++){
|
||||||
|
DataGridViewTextBoxColumn temp = new DataGridViewTextBoxColumn();
|
||||||
|
temp.Name = dt.Rows[i][0].ToString();
|
||||||
|
temp.HeaderText = dt.Rows[i][1].ToString();
|
||||||
|
temp.DataPropertyName= dt.Rows[i][0].ToString();
|
||||||
|
cols.Add(temp);
|
||||||
|
}
|
||||||
|
$if(isGenOperationColumn)
|
||||||
|
DataGridViewButtonColumn editBtn = new DataGridViewButtonColumn();
|
||||||
|
editBtn.HeaderText = "编辑";
|
||||||
|
editBtn.Name = "editBtn";
|
||||||
|
editBtn.Text = "编辑";
|
||||||
|
editBtn.UseColumnTextForButtonValue = true;
|
||||||
|
editBtn.Frozen = true;
|
||||||
|
|
||||||
|
DataGridViewButtonColumn addBtn = new DataGridViewButtonColumn();
|
||||||
|
addBtn.HeaderText = "新增";
|
||||||
|
addBtn.Name = "addBtn";
|
||||||
|
addBtn.Text = "新增";
|
||||||
|
addBtn.UseColumnTextForButtonValue = true;
|
||||||
|
addBtn.Frozen = true;
|
||||||
|
cols.Add(editBtn);
|
||||||
|
cols.Add(addBtn);
|
||||||
|
if (cols.Last().Frozen)
|
||||||
|
{
|
||||||
|
this.${dgv_name}.RightToLeft = RightToLeft.Yes;
|
||||||
|
cols.Reverse();
|
||||||
|
}
|
||||||
|
$end
|
||||||
|
this.${dgv_name}.Columns.AddRange(cols.ToArray());
|
||||||
|
$if(isGenOperationColumn)
|
||||||
|
if (cols.Count > 0)
|
||||||
|
this.${dgv_name}.FirstDisplayedScrollingColumnIndex = cols.Count - 2;
|
||||||
|
$end
|
||||||
|
${dgv_name}.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader;
|
||||||
|
DataTable data = DbHelperMySQL.Query("select * from ${sql_table_name}");
|
||||||
|
this.${dgv_name}.DataSource = data;
|
||||||
|
|
||||||
|
$if(timeFiledStr != "")
|
||||||
|
DateTimePicker dtp = new DateTimePicker();
|
||||||
|
${dgv_name}.Controls.Add(dtp);
|
||||||
|
dtp.Visible = false;
|
||||||
|
dtp.TextChanged += (sender, e) => ${dgv_name}.CurrentCell.Value = dtp.Value.ToString("yyyy-MM-dd");
|
||||||
|
dtp.CloseUp += (sender, e) => dtp.Visible = false;
|
||||||
|
${dgv_name}.CellClick += (sender, e) => {
|
||||||
|
if (e.ColumnIndex == -1 || e.RowIndex == -1) return;
|
||||||
|
DataGridView dgv = (sender as DataGridView);
|
||||||
|
if (new List<string>() {
|
||||||
|
${timeFiledStr}
|
||||||
|
}.Contains(dgv.Columns[e.ColumnIndex].Name))
|
||||||
|
{
|
||||||
|
var _Recatngle = dgv.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true);
|
||||||
|
dtp.Size = _Recatngle.Size;
|
||||||
|
dtp.Location = _Recatngle.Location;
|
||||||
|
dtp.Visible = true;
|
||||||
|
}
|
||||||
|
else dtp.Visible = false;
|
||||||
|
};
|
||||||
|
${dgv_name}.Scroll += (sender, e) => dtp.Visible = false;
|
||||||
|
${dgv_name}.SizeChanged += (sender, e) => { if (dtp.Visible) dtp.Visible = false; };
|
||||||
|
$end
|
66
DatabasetoEntityclass/Template/DataGridView_3.template
Normal file
66
DatabasetoEntityclass/Template/DataGridView_3.template
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
this.${dgv_name}.AutoGenerateColumns = false;
|
||||||
|
List<DataGridViewColumn> cols = new List<DataGridViewColumn>();
|
||||||
|
$foreach(filedInfo in filedInfos)
|
||||||
|
|
||||||
|
DataGridViewTextBoxColumn ${filedInfo["field_name"]}Cloumn = new DataGridViewTextBoxColumn();
|
||||||
|
$if(filedInfo["is_primary_key"]=="true")
|
||||||
|
${filedInfo["field_name"]}Cloumn.Visible= false;
|
||||||
|
$end
|
||||||
|
${filedInfo["field_name"]}Cloumn.Name = "${filedInfo["sql_field_name"]}"; ${filedInfo["field_name"]}Cloumn.HeaderText = "${filedInfo["comment"]}";
|
||||||
|
${filedInfo["field_name"]}Cloumn.DataPropertyName = "${filedInfo["sql_field_name"]}"; cols.Add(${filedInfo["field_name"]}Cloumn);
|
||||||
|
$end
|
||||||
|
|
||||||
|
$if(isGenOperationColumn)
|
||||||
|
DataGridViewButtonColumn editBtn = new DataGridViewButtonColumn();
|
||||||
|
editBtn.HeaderText = "编辑";
|
||||||
|
editBtn.Name = "editBtn";
|
||||||
|
editBtn.Text = "编辑";
|
||||||
|
editBtn.UseColumnTextForButtonValue = true;
|
||||||
|
editBtn.Frozen = true;
|
||||||
|
|
||||||
|
DataGridViewButtonColumn addBtn = new DataGridViewButtonColumn();
|
||||||
|
addBtn.HeaderText = "新增";
|
||||||
|
addBtn.Name = "addBtn";
|
||||||
|
addBtn.Text = "新增";
|
||||||
|
addBtn.UseColumnTextForButtonValue = true;
|
||||||
|
addBtn.Frozen = true;
|
||||||
|
cols.Add(editBtn);
|
||||||
|
cols.Add(addBtn);
|
||||||
|
if (cols.Last().Frozen)
|
||||||
|
{
|
||||||
|
this.${dgv_name}.RightToLeft = RightToLeft.Yes;
|
||||||
|
cols.Reverse();
|
||||||
|
}
|
||||||
|
$end
|
||||||
|
this.${dgv_name}.Columns.AddRange(cols.ToArray());
|
||||||
|
$if(isGenOperationColumn)
|
||||||
|
if (cols.Count > 0)
|
||||||
|
this.${dgv_name}.FirstDisplayedScrollingColumnIndex = cols.Count - 2;
|
||||||
|
$end
|
||||||
|
${dgv_name}.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader;
|
||||||
|
DataTable data = DbHelperMySQL.Query($"select * from ${sql_table_name}");
|
||||||
|
this.${dgv_name}.DataSource = data;
|
||||||
|
|
||||||
|
$if(timeFiledStr != "")
|
||||||
|
DateTimePicker dtp = new DateTimePicker();
|
||||||
|
${dgv_name}.Controls.Add(dtp);
|
||||||
|
dtp.Visible = false;
|
||||||
|
dtp.TextChanged += (sender, e) => ${dgv_name}.CurrentCell.Value = dtp.Value.ToString("yyyy-MM-dd");
|
||||||
|
dtp.CloseUp += (sender, e) => dtp.Visible = false;
|
||||||
|
${dgv_name}.CellClick += (sender, e) => {
|
||||||
|
if (e.ColumnIndex == -1 || e.RowIndex == -1) return;
|
||||||
|
DataGridView dgv = (sender as DataGridView);
|
||||||
|
if (new List<string>() {
|
||||||
|
${timeFiledStr}
|
||||||
|
}.Contains(dgv.Columns[e.ColumnIndex].Name))
|
||||||
|
{
|
||||||
|
var _Recatngle = dgv.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true);
|
||||||
|
dtp.Size = _Recatngle.Size;
|
||||||
|
dtp.Location = _Recatngle.Location;
|
||||||
|
dtp.Visible = true;
|
||||||
|
}
|
||||||
|
else dtp.Visible = false;
|
||||||
|
};
|
||||||
|
${dgv_name}.Scroll += (sender, e) => dtp.Visible = false;
|
||||||
|
${dgv_name}.SizeChanged += (sender, e) => { if (dtp.Visible) dtp.Visible = false; };
|
||||||
|
$end
|
28
DatabasetoEntityclass/Template/ModelFile.template
Normal file
28
DatabasetoEntityclass/Template/ModelFile.template
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
using System;
|
||||||
|
using NCA_MES_Models.CommonUtils.DB.DBAttribute;
|
||||||
|
|
||||||
|
namespace ${namespace_name}
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// ${table_comment}
|
||||||
|
/// </summary>
|
||||||
|
[TableName("${sql_table_name}")]
|
||||||
|
public class ${table_name} : DBBaseModel<${table_name}>
|
||||||
|
{
|
||||||
|
$foreach(filedInfo in filedInfos)
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ${filedInfo["comment"]}
|
||||||
|
/// </summary>
|
||||||
|
$if(filedInfo["is_primary_key"]=="true")
|
||||||
|
[TableId]
|
||||||
|
$end
|
||||||
|
$if(filedInfo["is_nullable"]=="true")
|
||||||
|
[NotEmpty]
|
||||||
|
$end
|
||||||
|
[TableField("${filedInfo["sql_field_name"]}", "${filedInfo["comment"]}")]
|
||||||
|
public ${filedInfo["type_name"]} ${filedInfo["field_name"]} { get; set; }
|
||||||
|
$end
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
14
DatabasetoEntityclass/Util/Config.cs
Normal file
14
DatabasetoEntityclass/Util/Config.cs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
using JinianNet.JNTemplate;
|
||||||
|
|
||||||
|
namespace GenerateClass.Util
|
||||||
|
{
|
||||||
|
public class Config
|
||||||
|
{
|
||||||
|
public static void GlobalInit()
|
||||||
|
{
|
||||||
|
Engine.Configure((options) => {
|
||||||
|
options.OutMode = OutMode.Auto;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -11,7 +11,7 @@ using System.Configuration;
|
|||||||
using System.Xml;
|
using System.Xml;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
namespace WindowsFormsApp1
|
namespace GenerateClass
|
||||||
{
|
{
|
||||||
public class DbHelperMySQL
|
public class DbHelperMySQL
|
||||||
{
|
{
|
277
DatabasetoEntityclass/Util/DbUtil.cs
Normal file
277
DatabasetoEntityclass/Util/DbUtil.cs
Normal file
@ -0,0 +1,277 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Data;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace GenerateClass.Util
|
||||||
|
{
|
||||||
|
public class DbUtil
|
||||||
|
{
|
||||||
|
public static string folderName = "GenFolder"; // 文件夹名称
|
||||||
|
|
||||||
|
public static void openFile(string tbname, string infoStr)
|
||||||
|
{
|
||||||
|
// 创建文件夹
|
||||||
|
string folderPath = Path.Combine(Environment.CurrentDirectory, folderName);
|
||||||
|
Directory.CreateDirectory(folderPath);
|
||||||
|
// 创建文件并写入内容
|
||||||
|
string filePath = Path.Combine(folderPath, DbUtil.GenerateClassName(tbname) + ".cs");
|
||||||
|
File.WriteAllText(filePath, infoStr);
|
||||||
|
// 打开文件夹
|
||||||
|
System.Diagnostics.Process.Start(folderPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string joinList(List<string> list)
|
||||||
|
{
|
||||||
|
string str = "";
|
||||||
|
foreach (var item in list)
|
||||||
|
{
|
||||||
|
str += (str == "" ? "" : ",") + "\"" + item + "\"";
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<Dictionary<string, string>> getTableInfo(string tbname, string sql = "")
|
||||||
|
{
|
||||||
|
DataTable dt = null;
|
||||||
|
if (sql == "")
|
||||||
|
dt = DbUtil.GetDbTableInfo(tbname);
|
||||||
|
else
|
||||||
|
dt = DbHelperMySQL.Query(sql);
|
||||||
|
List<Dictionary<string, string>> filedInfos = new List<Dictionary<string, string>>();
|
||||||
|
for (int i = 0; i < dt.Rows.Count; i++)
|
||||||
|
{
|
||||||
|
var dict = new Dictionary<string, string>();
|
||||||
|
var Name = dt.Rows[i]["Name"].ToString();
|
||||||
|
var COMMENT = dt.Rows[i]["COMMENT"].ToString();
|
||||||
|
var KeyType = dt.Rows[i]["KeyType"].ToString();
|
||||||
|
var Nullable = dt.Rows[i]["Nullable"].ToString();
|
||||||
|
Type type = DbUtil.DbTypeStr_To_CsharpType(dt.Rows[i]["Type"].ToString());
|
||||||
|
dict["sql_field_name"] = Name;
|
||||||
|
dict["field_name"] = DbUtil.ToCamelCase(Name);
|
||||||
|
dict["type_name"] = type.Name;
|
||||||
|
dict["comment"] = COMMENT;
|
||||||
|
dict["is_primary_key"] = (String.IsNullOrEmpty(KeyType) ? "false" : "true");
|
||||||
|
dict["is_nullable"] = (String.IsNullOrEmpty(KeyType) && !("NULL".Equals(Nullable)) ? "true" : "false");
|
||||||
|
filedInfos.Add(dict);
|
||||||
|
}
|
||||||
|
return filedInfos;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<string> getTimeFields(List<Dictionary<string, string>> filedInfos)
|
||||||
|
{
|
||||||
|
var list = new List<string>();
|
||||||
|
filedInfos.ForEach(info => {
|
||||||
|
if (info["type_name"] == "DateTime") list.Add(info["sql_field_name"]);
|
||||||
|
});
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 根据参数,获取数据表信息
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="tabname"></param>
|
||||||
|
public static DataTable GetDbTableInfo(string tabname)
|
||||||
|
{
|
||||||
|
string sql = @"SELECT
|
||||||
|
c.COLUMN_NAME AS Name,
|
||||||
|
c.COLUMN_TYPE AS Type,
|
||||||
|
c.COLUMN_COMMENT AS Comment,
|
||||||
|
CASE WHEN CONSTRAINT_NAME = 'PRIMARY' THEN 'PRIMARY KEY' ELSE '' END AS KeyType,
|
||||||
|
CASE WHEN c.IS_NULLABLE = 'NO' THEN 'NOT NULL' ELSE 'NULL' END AS Nullable
|
||||||
|
FROM
|
||||||
|
INFORMATION_SCHEMA.COLUMNS c
|
||||||
|
LEFT JOIN
|
||||||
|
INFORMATION_SCHEMA.KEY_COLUMN_USAGE k
|
||||||
|
ON
|
||||||
|
c.TABLE_SCHEMA = k.TABLE_SCHEMA
|
||||||
|
AND c.TABLE_NAME = k.TABLE_NAME
|
||||||
|
AND c.COLUMN_NAME = k.COLUMN_NAME
|
||||||
|
WHERE
|
||||||
|
c.TABLE_NAME = '{0}'
|
||||||
|
ORDER BY
|
||||||
|
c.ORDINAL_POSITION;";
|
||||||
|
//string str = $"SELECT COLUMN_NAME AS Name, COLUMN_TYPE AS Type,COLUMN_COMMENT AS COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '{tabname}' ORDER BY ORDINAL_POSITION;";
|
||||||
|
var dt = DbHelperMySQL.Query(String.Format(sql, tabname));
|
||||||
|
return dt;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static List<string> GetTableName(string tableName)
|
||||||
|
{
|
||||||
|
string sql = $"SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{DbHelperMySQL.DbName}' AND TABLE_NAME LIKE '{tableName}%' limit 20;";
|
||||||
|
var dt = DbHelperMySQL.Query(sql);
|
||||||
|
//查询数据库表中所有已录入人员
|
||||||
|
List<string> sList = new List<string>(); //存放数据库查询结果
|
||||||
|
for (int i = 0; i < dt.Rows.Count; i++)
|
||||||
|
{
|
||||||
|
sList.Add(dt.Rows[i]["TABLE_NAME"].ToString());
|
||||||
|
}
|
||||||
|
return sList;
|
||||||
|
//return dt;
|
||||||
|
}
|
||||||
|
public static string GetTableComment(string tableName)
|
||||||
|
{
|
||||||
|
string sql = $"SELECT TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{DbHelperMySQL.DbName}' AND TABLE_NAME ='{tableName}';";
|
||||||
|
var dt = DbHelperMySQL.Query(sql);
|
||||||
|
|
||||||
|
if (dt.Rows.Count < 1) return tableName;
|
||||||
|
return dt.Rows[0]["TABLE_COMMENT"].ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<string> GetTableName()
|
||||||
|
{
|
||||||
|
string sql = $"SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{DbHelperMySQL.DbName}';";
|
||||||
|
var dt = DbHelperMySQL.Query(sql);
|
||||||
|
//查询数据库表中所有已录入人员
|
||||||
|
List<string> sList = new List<string>(); //存放数据库查询结果
|
||||||
|
for (int i = 0; i < dt.Rows.Count; i++)
|
||||||
|
{
|
||||||
|
sList.Add(dt.Rows[i]["TABLE_NAME"].ToString());
|
||||||
|
}
|
||||||
|
return sList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Dictionary<string, Type> DbTypeDic { get; } = new Dictionary<string, Type>(StringComparer.OrdinalIgnoreCase)
|
||||||
|
{
|
||||||
|
{ "int", typeof(int) },
|
||||||
|
{ "integer", typeof(int) },
|
||||||
|
{ "tinyint", typeof(byte) },
|
||||||
|
{ "smallint", typeof(short) },
|
||||||
|
{ "mediumint", typeof(int) },
|
||||||
|
{ "bigint", typeof(long) },
|
||||||
|
{ "float", typeof(float) },
|
||||||
|
{ "double", typeof(double) },
|
||||||
|
{ "decimal", typeof(decimal) },
|
||||||
|
{ "char", typeof(string) },
|
||||||
|
{ "varchar", typeof(string) },
|
||||||
|
{ "text", typeof(string) },
|
||||||
|
{ "mediumtext", typeof(string) },
|
||||||
|
{ "longtext", typeof(string) },
|
||||||
|
{ "enum", typeof(string) },
|
||||||
|
{ "date", typeof(DateTime) },
|
||||||
|
{ "time", typeof(TimeSpan) },
|
||||||
|
{ "datetime", typeof(DateTime) },
|
||||||
|
{ "timestamp", typeof(DateTime) },
|
||||||
|
{ "year", typeof(int) },
|
||||||
|
{ "binary", typeof(byte[]) },
|
||||||
|
{ "varbinary", typeof(byte[]) },
|
||||||
|
{ "blob", typeof(byte[]) },
|
||||||
|
{ "mediumblob", typeof(byte[]) },
|
||||||
|
{ "longblob", typeof(byte[]) },
|
||||||
|
{ "bit", typeof(bool) },
|
||||||
|
{ "boolean", typeof(bool) },
|
||||||
|
{ "json", typeof(string) },
|
||||||
|
{ "geometry", typeof(object) }, // Geometry 数据类型的映射可能需要特殊处理
|
||||||
|
// 更多其他数据类型
|
||||||
|
};
|
||||||
|
/// <summary>
|
||||||
|
/// 获取字段类型
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="dbTypeStr"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static Type DbTypeStr_To_CsharpType(string dbTypeStr)
|
||||||
|
{
|
||||||
|
if (dbTypeStr.Contains('('))
|
||||||
|
{
|
||||||
|
string[] strings = dbTypeStr.Split('(');
|
||||||
|
dbTypeStr = strings[0];
|
||||||
|
}
|
||||||
|
string _dbTypeStr = dbTypeStr.ToLower();
|
||||||
|
Type type = null;
|
||||||
|
if (DbTypeDic.ContainsKey(_dbTypeStr))
|
||||||
|
type = DbTypeDic[_dbTypeStr];
|
||||||
|
else
|
||||||
|
type = typeof(string);
|
||||||
|
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 将数据库字段转换为驼峰命名
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="dbField"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static string ToCamelCase(string dbField)
|
||||||
|
{
|
||||||
|
string[] words = dbField.Split('_');
|
||||||
|
for (int i = 1; i < words.Length; i++)
|
||||||
|
{
|
||||||
|
words[i] = char.ToUpper(words[i][0]) + words[i].Substring(1);
|
||||||
|
}
|
||||||
|
return string.Join("", words);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据数据库表名生成实体类名称
|
||||||
|
public static string GenerateClassName(string tableName)
|
||||||
|
{
|
||||||
|
string[] words = tableName.Split('_');
|
||||||
|
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
foreach (string word in words)
|
||||||
|
{
|
||||||
|
sb.Append(CultureInfo.CurrentCulture.TextInfo.ToTitleCase(word.ToLower()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return sb.ToString();
|
||||||
|
}
|
||||||
|
/* /// <summary>
|
||||||
|
/// 类型转换枚举
|
||||||
|
/// </summary>
|
||||||
|
protected Dictionary<string, Type> DbTypeDic { get; } = new Dictionary<string, Type>()
|
||||||
|
{
|
||||||
|
{ "int", typeof(Int32) },
|
||||||
|
{ "text", typeof(string) },
|
||||||
|
{ "enum", typeof(string) },
|
||||||
|
{ "bigint", typeof(Int64) },
|
||||||
|
{ "binary", typeof(byte[]) },
|
||||||
|
{ "bit", typeof(bool) },
|
||||||
|
{ "char", typeof(string) },
|
||||||
|
{ "date", typeof(DateTime) },
|
||||||
|
{ "datetime", typeof(DateTime) },
|
||||||
|
{ "datetime2", typeof(DateTime) },
|
||||||
|
{ "decimal", typeof(decimal) },
|
||||||
|
{ "float", typeof(double) },
|
||||||
|
{ "image", typeof(byte[]) },
|
||||||
|
{ "money", typeof(decimal) },
|
||||||
|
{ "nchar", typeof(string) },
|
||||||
|
{ "ntext", typeof(string) },
|
||||||
|
{ "numeric", typeof(decimal) },
|
||||||
|
{ "nvarchar", typeof(string) },
|
||||||
|
{ "real", typeof(Single) },
|
||||||
|
{ "smalldatetime", typeof(DateTime) },
|
||||||
|
{ "smallint", typeof(Int16) },
|
||||||
|
{ "smallmoney", typeof(decimal) },
|
||||||
|
{ "timestamp", typeof(DateTime) },
|
||||||
|
{ "tinyint", typeof(bool) },
|
||||||
|
{ "varbinary", typeof(byte[]) },
|
||||||
|
{ "varchar", typeof(string) },
|
||||||
|
{ "variant", typeof(object) },
|
||||||
|
{ "uniqueidentifier", typeof(Guid) },
|
||||||
|
};
|
||||||
|
/// <summary>
|
||||||
|
/// 获取字段类型
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="dbTypeStr"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public virtual Type DbTypeStr_To_CsharpType(string dbTypeStr)
|
||||||
|
{
|
||||||
|
if (dbTypeStr.Contains('('))
|
||||||
|
{
|
||||||
|
string[] strings = dbTypeStr.Split('(');
|
||||||
|
dbTypeStr = strings[0];
|
||||||
|
}
|
||||||
|
string _dbTypeStr = dbTypeStr.ToLower();
|
||||||
|
Type type = null;
|
||||||
|
if (DbTypeDic.ContainsKey(_dbTypeStr))
|
||||||
|
type = DbTypeDic[_dbTypeStr];
|
||||||
|
else
|
||||||
|
type = typeof(string);
|
||||||
|
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
}
|
234
DatabasetoEntityclass/Util/OldInfo.cs
Normal file
234
DatabasetoEntityclass/Util/OldInfo.cs
Normal file
@ -0,0 +1,234 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace GenerateClass.Util
|
||||||
|
{
|
||||||
|
internal class OldInfo
|
||||||
|
{
|
||||||
|
/*private void fillDgv3Str()
|
||||||
|
{
|
||||||
|
string tbname = txt_tablename.Text.Trim();//要生成的表名
|
||||||
|
if (tbname.Equals("请选择") || tbname.Equals(""))
|
||||||
|
{
|
||||||
|
MessageBox.Show("请选择表");
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
DataTable dt = null;
|
||||||
|
if (textBox3.Text.Trim() == "") dt = DbUtil.GetDbTableInfo(tbname);
|
||||||
|
else dt = DbHelperMySQL.Query(textBox3.Text.Trim());
|
||||||
|
string uidatagridview = textBox2.Text.Trim();
|
||||||
|
textBox1.Text = $"this.{uidatagridview}.AutoGenerateColumns = false;";
|
||||||
|
textBox1.Text += "List<DataGridViewColumn> cols = new List<DataGridViewColumn>();\n\n";
|
||||||
|
var list = new List<string>();
|
||||||
|
for (int i = 0; i < dt.Rows.Count; i++)
|
||||||
|
{
|
||||||
|
var Name = dt.Rows[i]["Name"].ToString();
|
||||||
|
var IsNullable = dt.Rows[i]["COMMENT"].ToString();
|
||||||
|
Type type = DbUtil.DbTypeStr_To_CsharpType(dt.Rows[i]["Type"].ToString());
|
||||||
|
if (type.Name == "DateTime") list.Add(Name);
|
||||||
|
textBox1.Text += $"DataGridViewTextBoxColumn {Name}Cloumn = new DataGridViewTextBoxColumn();\n";
|
||||||
|
textBox1.Text += $"{Name}Cloumn.Name = \"{Name}\";" +
|
||||||
|
$"{Name}Cloumn.HeaderText =\"{IsNullable}\";" +
|
||||||
|
$"{Name}Cloumn.DataPropertyName = \"{Name}\";" +
|
||||||
|
$"cols.Add({Name}Cloumn);\n\n";
|
||||||
|
}
|
||||||
|
textBox1.Text += "DataGridViewButtonColumn editBtn = new DataGridViewButtonColumn();\r\n" +
|
||||||
|
"editBtn.HeaderText = \"编辑\";\r\n" +
|
||||||
|
"editBtn.Name = \"editBtn\";\r\n" +
|
||||||
|
"editBtn.Text = \"编辑\";\r\n" +
|
||||||
|
"editBtn.UseColumnTextForButtonValue = true;\r\n" +
|
||||||
|
"editBtn.Frozen = true;\n";
|
||||||
|
textBox1.Text += " DataGridViewButtonColumn addBtn = new DataGridViewButtonColumn();\r\n" +
|
||||||
|
"addBtn.HeaderText = \"新增\";\r\n" +
|
||||||
|
"addBtn.Name = \"addBtn\";\r\n" +
|
||||||
|
"addBtn.Text = \"新增\";\r\n" +
|
||||||
|
"addBtn.UseColumnTextForButtonValue = true;\r\n" +
|
||||||
|
"addBtn.Frozen = true;\n ";
|
||||||
|
textBox1.Text += "cols.Add(editBtn);\n cols.Add(addBtn);\n";
|
||||||
|
textBox1.Text += "if (cols.Last().Frozen)\r\n" +
|
||||||
|
"{\r\n " +
|
||||||
|
$"this.{uidatagridview}.RightToLeft = RightToLeft.Yes;\r\n" +
|
||||||
|
"cols.Reverse();\r\n" +
|
||||||
|
"}\r\n" +
|
||||||
|
$"this.{uidatagridview}.Columns.AddRange(cols.ToArray());\r\n\r\n" +
|
||||||
|
$"if (this.{uidatagridview}.Columns.Count > 0)\r\n" +
|
||||||
|
$"this.{uidatagridview}.FirstDisplayedScrollingColumnIndex = this.{uidatagridview}.Columns.Count - 2;\n";
|
||||||
|
textBox1.Text += $" {uidatagridview}.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader;\n";
|
||||||
|
textBox1.Text += $"DataTable data = DbHelperMySQL.Query(\"select * from {tbname}\");\n";
|
||||||
|
textBox1.Text += $"this.{uidatagridview}.DataSource = data;\n";
|
||||||
|
if (list.Count > 0)
|
||||||
|
{
|
||||||
|
textBox1.Text += $@"
|
||||||
|
DateTimePicker dtp = new DateTimePicker();
|
||||||
|
convertBeginDgv.Controls.Add(dtp);
|
||||||
|
dtp.Visible = false;
|
||||||
|
dtp.TextChanged += (sender, e) => convertBeginDgv.CurrentCell.Value = dtp.Value.ToString(""yyyy-MM-dd"");
|
||||||
|
dtp.CloseUp += (sender, e) => dtp.Visible = false;
|
||||||
|
convertBeginDgv.CellClick += (sender, e) => {{
|
||||||
|
if (e.ColumnIndex == -1 || e.RowIndex == -1) return;
|
||||||
|
DataGridView dgv = (sender as DataGridView);
|
||||||
|
if (new List<string>() {{
|
||||||
|
{DbUtil.joinList(list)}
|
||||||
|
}}.Contains(dgv.Columns[e.ColumnIndex].Name))
|
||||||
|
{{
|
||||||
|
var _Recatngle = dgv.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true);
|
||||||
|
dtp.Size = _Recatngle.Size;
|
||||||
|
dtp.Location = _Recatngle.Location;
|
||||||
|
dtp.Visible = true;
|
||||||
|
}}
|
||||||
|
else dtp.Visible = false;
|
||||||
|
}};
|
||||||
|
convertBeginDgv.Scroll += (sender, e) => dtp.Visible = false;
|
||||||
|
convertBeginDgv.SizeChanged += (sender, e) => {{ if (dtp.Visible) dtp.Visible = false; }};";
|
||||||
|
}
|
||||||
|
|
||||||
|
}*/
|
||||||
|
/* private void fillDgv2Str()
|
||||||
|
{
|
||||||
|
string tbname = txt_tablename.Text.Trim();//要生成的表名
|
||||||
|
if (tbname.Equals("请选择") || tbname.Equals(""))
|
||||||
|
{
|
||||||
|
MessageBox.Show("请选择表");
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
DataTable dt = null;
|
||||||
|
if (textBox3.Text.Trim() == "")
|
||||||
|
{
|
||||||
|
dt = DbUtil.GetDbTableInfo(tbname);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dt = DbHelperMySQL.Query(textBox3.Text.Trim());
|
||||||
|
}
|
||||||
|
string uidatagridview = textBox2.Text.Trim();
|
||||||
|
textBox1.Text = $"this.{uidatagridview}.AutoGenerateColumns = false;";
|
||||||
|
textBox1.Text += $" string sql = $\"SELECT column_name, column_comment from information_schema.COLUMNS where table_name = '{tbname}' ORDER BY ORDINAL_POSITION; \";\r\n" +
|
||||||
|
$" DataTable dt = DbHelperMySQL.Query(sql);\n";
|
||||||
|
textBox1.Text += "List<DataGridViewColumn> cols = new List<DataGridViewColumn>();\n";
|
||||||
|
textBox1.Text += "for (int i = 0; i < dt.Rows.Count; i++){\n" +
|
||||||
|
" DataGridViewTextBoxColumn temp = new DataGridViewTextBoxColumn();\n" +
|
||||||
|
"temp.Name = dt.Rows[i][0].ToString();\n" +
|
||||||
|
"temp.HeaderText = dt.Rows[i][1].ToString();\n" +
|
||||||
|
"temp.DataPropertyName= dt.Rows[i][0].ToString();\n" +
|
||||||
|
"cols.Add(temp);" +
|
||||||
|
"}\n";
|
||||||
|
textBox1.Text += "DataGridViewButtonColumn editBtn = new DataGridViewButtonColumn();\r\n" +
|
||||||
|
"editBtn.HeaderText = \"编辑\";\r\n" +
|
||||||
|
"editBtn.Name = \"editBtn\";\r\n" +
|
||||||
|
"editBtn.Text = \"编辑\";\r\n" +
|
||||||
|
"editBtn.UseColumnTextForButtonValue = true;\r\n" +
|
||||||
|
"editBtn.Frozen = true;\n";
|
||||||
|
textBox1.Text += " DataGridViewButtonColumn addBtn = new DataGridViewButtonColumn();\r\n" +
|
||||||
|
"addBtn.HeaderText = \"新增\";\r\n" +
|
||||||
|
"addBtn.Name = \"addBtn\";\r\n" +
|
||||||
|
"addBtn.Text = \"新增\";\r\n" +
|
||||||
|
"addBtn.UseColumnTextForButtonValue = true;\r\n" +
|
||||||
|
"addBtn.Frozen = true;\n ";
|
||||||
|
textBox1.Text += "cols.Add(editBtn);\n cols.Add(addBtn);\n";
|
||||||
|
textBox1.Text += "if (cols.Last().Frozen)\r\n" +
|
||||||
|
"{\r\n " +
|
||||||
|
$"this.{uidatagridview}.RightToLeft = RightToLeft.Yes;\r\n" +
|
||||||
|
"cols.Reverse();\r\n" +
|
||||||
|
"}\r\n" +
|
||||||
|
$"this.{uidatagridview}.Columns.AddRange(cols.ToArray());\r\n\r\n" +
|
||||||
|
$"if (this.{uidatagridview}.Columns.Count > 0)\r\n" +
|
||||||
|
$"this.{uidatagridview}.FirstDisplayedScrollingColumnIndex = this.{uidatagridview}.Columns.Count - 2;\n";
|
||||||
|
textBox1.Text += $" {uidatagridview}.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader;\n";
|
||||||
|
textBox1.Text += $"DataTable data = DbHelperMySQL.Query(\"select * from {tbname}\");\n";
|
||||||
|
textBox1.Text += $"this.{uidatagridview}.DataSource = data;\n";
|
||||||
|
}*/
|
||||||
|
|
||||||
|
/*private void fillDgv1Str()
|
||||||
|
{
|
||||||
|
string tbname = txt_tablename.Text.Trim();//要生成的表名
|
||||||
|
if (tbname.Equals("请选择") || tbname.Equals(""))
|
||||||
|
{
|
||||||
|
MessageBox.Show("请选择表");
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
DataTable dt = null;
|
||||||
|
if (textBox3.Text.Trim() == "")
|
||||||
|
{
|
||||||
|
dt = DbUtil.GetDbTableInfo(tbname);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dt = DbHelperMySQL.Query(textBox3.Text.Trim());
|
||||||
|
}
|
||||||
|
string uidatagridview = textBox2.Text.Trim();
|
||||||
|
textBox1.Text = "";
|
||||||
|
textBox1.Text += $"DataTable data = DbHelperMySQL.Query(\"select * from {tbname}\");\n";
|
||||||
|
textBox1.Text += "this." + uidatagridview + ".DataSource = new BindingSource {DataSource = data};\n";
|
||||||
|
for (int i = 0; i < dt.Rows.Count; i++)
|
||||||
|
{
|
||||||
|
var Name = dt.Rows[i]["Name"].ToString();
|
||||||
|
textBox1.Text += $"var {Name}Column = {uidatagridview}.Columns[\"{Name}\"];\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < dt.Rows.Count; i++)
|
||||||
|
{
|
||||||
|
var Name = dt.Rows[i]["Name"].ToString();
|
||||||
|
var IsNullable = dt.Rows[i]["COMMENT"].ToString();
|
||||||
|
textBox1.Text += $"{Name}Column.HeaderText = \"{IsNullable}\";\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
textBox1.Text += $" {uidatagridview}.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader;\n";
|
||||||
|
textBox1.Text += $" {uidatagridview}.AutoGenerateColumns = true;\n";
|
||||||
|
}*/
|
||||||
|
|
||||||
|
/* private void fillModelStr()
|
||||||
|
{
|
||||||
|
//string constr = txt_constr.Text.Trim();//数据库链接字符串
|
||||||
|
txt_ret.Text = "";
|
||||||
|
string tbname = txt_tablename.Text.Trim();//要生成的表名
|
||||||
|
if (tbname.Equals("请选择") || tbname.Equals(""))
|
||||||
|
{
|
||||||
|
MessageBox.Show("请选择表");
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
string namespaceName = namespace_name.Text.Trim();
|
||||||
|
DataTable dt = null;
|
||||||
|
if (textBox3.Text.Trim() == "")
|
||||||
|
{
|
||||||
|
dt = DbUtil.GetDbTableInfo(tbname);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dt = DbHelperMySQL.Query(textBox3.Text.Trim());
|
||||||
|
}
|
||||||
|
var infoStr = "";
|
||||||
|
infoStr += "using System;\n" +
|
||||||
|
"using NCA_MES_Models.CommonUtils.DB.DBAttribute;\n\n";
|
||||||
|
infoStr += $"namespace {namespaceName} \n{{\n\n";
|
||||||
|
infoStr += "\t/// <summary>" + "\n" +
|
||||||
|
$"\t/// {DbUtil.GetTableComment(tbname)}\n" +
|
||||||
|
"\t/// </summary>" + "\n" +
|
||||||
|
$"\t[TableName(\"{tbname}\")]\n" +
|
||||||
|
$"\tpublic class {DbUtil.GenerateClassName(tbname)}: DBBaseModel<{DbUtil.GenerateClassName(tbname)}>\n\t{{";
|
||||||
|
for (int i = 0; i < dt.Rows.Count; i++)
|
||||||
|
{
|
||||||
|
var Name = dt.Rows[i]["Name"].ToString();
|
||||||
|
var Type = dt.Rows[i]["Type"].ToString();
|
||||||
|
var IsNullable = dt.Rows[i]["COMMENT"].ToString();
|
||||||
|
var KeyType = dt.Rows[i]["KeyType"].ToString();
|
||||||
|
var Nullable = dt.Rows[i]["Nullable"].ToString();
|
||||||
|
Type type = DbUtil.DbTypeStr_To_CsharpType(Type);
|
||||||
|
infoStr += "\t\n\n\t" + "/// <summary>" +
|
||||||
|
"\t\n\t" + $"///{IsNullable}" +
|
||||||
|
"\t\n\t" + "/// </summary>" +
|
||||||
|
(String.IsNullOrEmpty(KeyType) ? "" : "\n\t[TableId]") +
|
||||||
|
(String.IsNullOrEmpty(KeyType) && !("NULL".Equals(Nullable)) ? "\n\t[NotEmpty]" : "") +
|
||||||
|
"\t\n\t" + $"[TableField(\"{Name}\",\"{IsNullable}\")]" +
|
||||||
|
"\t\n\t" + $"public {type.Name} {DbUtil.ToCamelCase(Name)} {{ get; set; }}";
|
||||||
|
//加注释记得引用using
|
||||||
|
}
|
||||||
|
infoStr += "\n\t}";
|
||||||
|
infoStr += "\n}";
|
||||||
|
this.txt_ret.Text = infoStr;
|
||||||
|
DbUtil.openFile(tbname, infoStr);
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
}
|
16
DatabasetoEntityclass/packages.config
Normal file
16
DatabasetoEntityclass/packages.config
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="Google.Protobuf" version="3.21.9" targetFramework="net472" />
|
||||||
|
<package id="JinianNet.JNTemplate" version="2.3.3" targetFramework="net472" />
|
||||||
|
<package id="K4os.Compression.LZ4" version="1.3.5" targetFramework="net472" />
|
||||||
|
<package id="K4os.Compression.LZ4.Streams" version="1.3.5" targetFramework="net472" />
|
||||||
|
<package id="K4os.Hash.xxHash" version="1.0.8" targetFramework="net472" />
|
||||||
|
<package id="MySql.Data" version="8.0.33" targetFramework="net472" />
|
||||||
|
<package id="Portable.BouncyCastle" version="1.9.0" targetFramework="net472" />
|
||||||
|
<package id="System.Buffers" version="4.5.1" targetFramework="net472" />
|
||||||
|
<package id="System.IO.Pipelines" version="5.0.2" targetFramework="net472" />
|
||||||
|
<package id="System.Memory" version="4.5.5" targetFramework="net472" />
|
||||||
|
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
|
||||||
|
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net472" />
|
||||||
|
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net472" />
|
||||||
|
</packages>
|
Loading…
x
Reference in New Issue
Block a user