Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
F
Ftt_Common
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Ftt_Common
Commits
26f8a48f
Commit
26f8a48f
authored
Oct 05, 2020
by
tr
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1、数据库开发工具:增加对已存在表支持,方便相应导出操作
parent
ef527f7e
Changes
11
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
226 additions
and
102 deletions
+226
-102
.gitignore
.gitignore
+1
-0
Tools.exe
AppHome/Tools.exe
+0
-0
Tools.pdb
AppHome/Tools.pdb
+0
-0
help.txt
AppHome/config/help.txt
+5
-2
links.xml
AppHome/config/links.xml
+6
-0
Resources.Designer.cs
Tools/Properties/Resources.Designer.cs
+10
-0
Resources.resx
Tools/Properties/Resources.resx
+3
-0
加载.png
Tools/Resources/加载.png
+0
-0
Tools.csproj
Tools/Tools.csproj
+3
-0
wDBTools.Designer.cs
Tools/UI/wDBTools.Designer.cs
+106
-88
wDBTools.cs
Tools/UI/wDBTools.cs
+92
-12
No files found.
.gitignore
View file @
26f8a48f
...
...
@@ -17,3 +17,4 @@ bin
/.vs/Ftt_Common
.vs
/AppHome/save
/AppHome/temp
AppHome/Tools.exe
View file @
26f8a48f
No preview for this file type
AppHome/Tools.pdb
View file @
26f8a48f
No preview for this file type
AppHome/config/help.txt
View file @
26f8a48f
...
...
@@ -3,5 +3,8 @@
2、操作说明:支持右键増行/删行,以及按键Insert与Delete
3、导出文件:以表名命名,即每表导出一个相应类型文件。默认导出路径为temp,可自定义。
4、暂存与恢复:暂存时,每表每天只暂存一个文件。暂存路径根目录save文件夹。
5、数据库设置:快速设置数据库链接并记录历史设置。程序启动时读取配置文件的默认数据库链接
6、日志功能:暂不开发
5、数据库设置:快速设置数据库链接并记录历史设置。程序启动时读取配置文件的默认数据库链接。
6、加载表信息:表创建后,可以输入表名,通过该按钮加载相应信息。使用该功能时,有几点需要注意:
a.加载信息后,通过导出SQL按钮,会更新数据库的描述信息,除描述信息之外的任何修改不会更新到数据库。
b.由于类型是下拉选择框,对于非本工具创建的表,存在类型风险,即无法找到匹配的下拉项。
AppHome/config/links.xml
View file @
26f8a48f
...
...
@@ -12,4 +12,10 @@
<UserId>
sa
</UserId>
<Pwd>
sa
</Pwd>
</links>
<links>
<Link>
.
</Link>
<DbName>
Temp
</DbName>
<UserId>
sa
</UserId>
<Pwd>
sa
</Pwd>
</links>
</DocumentElement>
\ No newline at end of file
Tools/Properties/Resources.Designer.cs
View file @
26f8a48f
...
...
@@ -110,6 +110,16 @@ namespace Tools.Properties {
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
internal
static
System
.
Drawing
.
Bitmap
加载
{
get
{
object
obj
=
ResourceManager
.
GetObject
(
"加载"
,
resourceCulture
);
return
((
System
.
Drawing
.
Bitmap
)(
obj
));
}
}
/// <summary>
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
/// </summary>
...
...
Tools/Properties/Resources.resx
View file @
26f8a48f
...
...
@@ -133,6 +133,9 @@
<data
name=
"分析"
type=
"System.Resources.ResXFileRef, System.Windows.Forms"
>
<value>
..\Resources\分析.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
</value>
</data>
<data
name=
"加载"
type=
"System.Resources.ResXFileRef, System.Windows.Forms"
>
<value>
..\Resources\加载.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
</value>
</data>
<data
name=
"实体类"
type=
"System.Resources.ResXFileRef, System.Windows.Forms"
>
<value>
..\Resources\实体类.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
</value>
</data>
...
...
Tools/Resources/加载.png
0 → 100644
View file @
26f8a48f
527 Bytes
Tools/Tools.csproj
View file @
26f8a48f
...
...
@@ -198,5 +198,8 @@
<ItemGroup>
<None
Include=
"Resources\分析.png"
/>
</ItemGroup>
<ItemGroup>
<None
Include=
"Resources\加载.png"
/>
</ItemGroup>
<Import
Project=
"$(MSBuildToolsPath)\Microsoft.CSharp.targets"
/>
</Project>
\ No newline at end of file
Tools/UI/wDBTools.Designer.cs
View file @
26f8a48f
This diff is collapsed.
Click to expand it.
Tools/UI/wDBTools.cs
View file @
26f8a48f
...
...
@@ -123,18 +123,9 @@ namespace Tools.UI
{
"IsAutoIncrement"
,
typeof
(
bool
)
},
{
"DefaultValue"
,
typeof
(
string
)
},
},
//Rows = {
// { "ID", "主键", "VARCHAR(50)", DBNull.Value, DBNull.Value, DBNull.Value, "" },
//},
});
//设置主键
this
.
_ds
.
Tables
[
infoTable
].
PrimaryKey
=
new
DataColumn
[]
{
this
.
_ds
.
Tables
[
infoTable
].
Columns
[
0
]
};
//生成数据结构配置文件
//var cfg = $@"{Utils.ConfigPath}\data_struct_cfg.xml";
//if (!File.Exists(cfg))
//{
// this._ds.WriteXml(cfg, XmlWriteMode.WriteSchema);
//}
#
endregion
}
...
...
@@ -159,6 +150,7 @@ namespace Tools.UI
this
.
tsmiExportSql
.
Click
+=
TsmiExportSql_Click
;
this
.
tsmiExportExcel
.
Click
+=
TsmiExportExcel_Click
;
this
.
tsmiExportWord
.
Click
+=
TsmiExportWord_Click
;
this
.
tsbLoadTable
.
Click
+=
TsbLoadTable_Click
;
this
.
tsbTempSave
.
Click
+=
TsbTempSave_Click
;
this
.
tsbResume
.
Click
+=
TsbResume_Click
;
this
.
tsbDbLink
.
Click
+=
TsbDbLink_Click
;
...
...
@@ -168,6 +160,7 @@ namespace Tools.UI
this
.
tsmiDelRow
.
Click
+=
TsmiDelRow_Click
;
}
private
void
BindBaseInfo
()
{
this
.
tbTableName
.
DataBindings
.
Clear
();
...
...
@@ -289,6 +282,22 @@ namespace Tools.UI
new
NPOIWordHelper
().
Export
(
this
.
TableName
,
this
.
TableDescription
,
this
.
_ds
.
Tables
[
infoTable
],
$@"
{
this
.
GetExportPath
()}
\
{
this
.
TableName
}
.docx"
);
}
private
void
TsbLoadTable_Click
(
object
sender
,
EventArgs
e
)
{
if
(
this
.
TableName
.
Equals
(
""
))
{
Utils
.
Tip
(
"请输入表名!"
);
return
;
}
if
(!
this
.
IsExistTable
(
this
.
TableName
))
{
Utils
.
Tip
(
"该表尚未创建!"
);
return
;
}
//初始化表列信息
this
.
InitTableColumnInfo
(
this
.
TableName
);
}
private
void
TsbTempSave_Click
(
object
sender
,
EventArgs
e
)
{
if
(!
this
.
CheckDetail
())
...
...
@@ -332,7 +341,7 @@ namespace Tools.UI
{
using
(
var
sr
=
new
StreamReader
(
helpFileName
))
{
Utils
.
Tip
(
sr
.
ReadToEnd
(),
45
0
,
300
);
Utils
.
Tip
(
sr
.
ReadToEnd
(),
70
0
,
300
);
}
}
...
...
@@ -363,12 +372,13 @@ namespace Tools.UI
/// <returns></returns>
private
bool
CheckDetail
()
{
//检查
基本信息
//检查
表名
if
(
this
.
TableName
.
Equals
(
""
))
{
Utils
.
Tip
(
"请输入表名!"
);
return
false
;
}
//检查表描述
if
(
this
.
TableDescription
.
Equals
(
""
))
{
Utils
.
Tip
(
"请输入表的描述信息!"
);
...
...
@@ -473,12 +483,82 @@ namespace Tools.UI
Directory
.
CreateDirectory
(
path
);
}
}
/// <summary>
/// 是否存在表
/// </summary>
/// <param name="tableName"></param>
/// <returns></returns>
private
bool
IsExistTable
(
string
tableName
)
{
return
this
.
_db
.
IsExist
(
this
.
_link
,
$"SELECT COUNT(*) FROM sys.tables WHERE [name] = '
{
tableName
}
'"
);
}
/// <summary>
/// 初始化表列信息(针对已存在的表)
/// </summary>
/// <param name="tableName"></param>
private
void
InitTableColumnInfo
(
string
tableName
)
{
//清空当前表格
this
.
_ds
.
Tables
[
infoTable
].
Rows
.
Clear
();
var
sqlist
=
new
List
<
TQuery
>
{
//取表结构
new
TQuery
(
tableName
,
$"SELECT TOP 0 * FROM
{
tableName
}
"
),
//取表描述
new
TQuery
(
"TableDescInfo"
,
$@"
SELECT
TableName=a.name,
TableDescription=b.value
FROM sysobjects a
LEFT JOIN sys.extended_properties b ON a.id = b.major_id AND b.minor_id = 0
WHERE a.name = '
{
tableName
}
'"
),
//取列描述、非空、默认值
new
TQuery
(
"ColumnDescInfo"
,
$@"
SELECT
FieldName = CONVERT(VARCHAR(100), a.name),
[Description] = CONVERT(VARCHAR (50), isnull(d.[value],'')),
IsNotNull = CASE WHEN a.isnullable=1 THEN 0 ELSE 1 END,
DefaultValue = REPLACE(REPLACE(c.text, '(', ''), ')', ''),
ColumnType = CASE WHEN CHARINDEX('varchar',e.name,0) > 0 THEN e.name+'('+CAST(a.length AS VARCHAR(50)) +')' ELSE e.name END
FROM dbo.syscolumns a
INNER JOIN dbo.sysobjects b ON b.id = a.id AND b.xtype = 'U' AND b.name <> 'dtproperties'
LEFT JOIN sys.syscomments c ON c.id = a.cdefault
LEFT JOIN sys.extended_properties d ON d.major_id = b.id AND d.minor_id = a.colid
LEFT JOIN dbo.systypes e ON e.xusertype = a.xusertype
WHERE b.name = '
{
tableName
}
'"
),
};
try
{
var
ds
=
this
.
_db
.
GetData
(
this
.
_link
,
sqlist
,
true
);
//先添加表描述
this
.
tbTableDescription
.
Text
=
ds
.
Tables
[
"TableDescInfo"
].
DefaultView
[
0
][
"TableDescription"
].
ToString
();
//初始化列信息
foreach
(
DataColumn
dc
in
ds
.
Tables
[
tableName
].
Columns
)
{
var
drNew
=
this
.
_ds
.
Tables
[
infoTable
].
NewRow
();
var
rows
=
ds
.
Tables
[
"ColumnDescInfo"
].
Select
(
$"FieldName='
{
dc
.
ColumnName
}
'"
);
drNew
[
"FieldName"
]
=
dc
.
ColumnName
;
drNew
[
"Description"
]
=
rows
[
0
][
"Description"
];
drNew
[
"ColumnType"
]
=
rows
[
0
][
"ColumnType"
].
ToString
().
ToUpper
();
drNew
[
"IsNotNull"
]
=
rows
[
0
][
"IsNotNull"
];
drNew
[
"IsPrimaryKey"
]
=
ds
.
Tables
[
tableName
].
PrimaryKey
.
Contains
(
dc
);
drNew
[
"IsAutoIncrement"
]
=
dc
.
AutoIncrement
;
drNew
[
"DefaultValue"
]
=
rows
[
0
][
"DefaultValue"
];
drNew
.
EndEdit
();
this
.
_ds
.
Tables
[
infoTable
].
Rows
.
Add
(
drNew
);
}
}
catch
(
Exception
ex
)
{
Utils
.
Tip
(
"初始化列信息出错!\r\n"
+
ex
.
Message
);
}
}
#
region
待开发:查询指定表的列与描述信息
private
void
SearchColumn
(
string
tableName
)
private
void
SearchColumn
(
string
tableName
)
{
string
sql
=
$@"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment