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
c76caf61
Commit
c76caf61
authored
Jan 07, 2021
by
tr
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1、代码优化:将Insert语句生成,提升为工具类方法
parent
43222620
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
82 additions
and
60 deletions
+82
-60
Utils.cs
Tools/MyUtils/Utils.cs
+79
-0
wModuleManager.cs
Tools/UI/wModuleManager.cs
+3
-60
No files found.
Tools/MyUtils/Utils.cs
View file @
c76caf61
...
...
@@ -382,10 +382,25 @@ namespace Tools.MyUtils
#
endregion
#
region
生成
SQL
#
region
生成创建表的语句
/// <summary>
/// 生成SQL头部
/// </summary>
/// <param name="tableName"></param>
/// <returns></returns>
public
static
string
GenSqlHead
(
string
tableName
)
{
return
$"IF NOT EXISTS(SELECT 1 FROM sys.tables WHERE name = '
{
tableName
}
')\r\nBEGIN\r\nCREATE TABLE
{
tableName
}
\r\n("
;
}
/// <summary>
/// 生成SQL主体
/// </summary>
/// <param name="dt"></param>
/// <param name="tableName"></param>
/// <param name="tableDescription"></param>
/// <param name="descriptionList">Out:列描述信息通过存储过程创建,此处生成语句并以输出参数形式返回</param>
/// <returns></returns>
public
static
string
GenSqlBody
(
DataTable
dt
,
string
tableName
,
string
tableDescription
,
out
List
<
string
>
descriptionList
)
{
//描述信息
...
...
@@ -420,11 +435,75 @@ namespace Tools.MyUtils
return
string
.
Join
(
",\r\n"
,
columnInfoList
);
}
/// <summary>
/// 生成SQL尾部
/// </summary>
/// <returns></returns>
public
static
string
GenSqlTail
()
{
return
$");\r\nEND;"
;
}
#
endregion
#
region
生成
Insert
语句
/// <summary>
/// 生成表格Insert语句
/// </summary>
/// <param name="rows"></param>
/// <returns></returns>
public
static
string
GenInsertSQL
(
params
DataRow
[]
rows
)
{
if
(
rows
==
null
||
rows
.
Length
==
0
)
return
""
;
//
var
dt
=
rows
[
0
].
Table
;
var
colist
=
Utils
.
GetTableColumns
(
dt
);
var
values
=
rows
.
Select
(
r
=>
Utils
.
GenValues
(
r
,
colist
));
var
result
=
$"INSERT INTO
{
dt
.
TableName
}
\r\n\t
{
Utils
.
GenColumns
(
colist
)}
\r\nVALUES\r\n\t
{
string
.
Join
(
",\r\n\t"
,
values
)}
"
;
return
result
;
}
/// <summary>
/// 生成列集合
/// </summary>
/// <param name="colist"></param>
/// <returns></returns>
private
static
string
GenColumns
(
List
<
string
>
colist
)
{
return
$"([
{
string
.
Join
(
"], ["
,
colist
)}
])"
;
}
/// <summary>
/// 生成值集合(此处将所有值转为字符串处理,后续可细化按类型转换)
/// </summary>
/// <param name="dr"></param>
/// <param name="colist"></param>
/// <returns></returns>
private
static
string
GenValues
(
DataRow
dr
,
List
<
string
>
colist
)
{
var
valist
=
colist
.
Select
(
col
=>
col
.
ToLower
().
Equals
(
"modelid"
)
?
"@ModelID"
:
$"'
{
dr
[
col
].
ToString
()}
'"
);
return
$"(
{
string
.
Join
(
", "
,
valist
)}
)"
;
}
/// <summary>
/// 获取有效列(只取非自增列)
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
private
static
List
<
string
>
GetTableColumns
(
DataTable
dt
)
{
var
result
=
new
List
<
string
>();
dt
.
Columns
.
Cast
<
DataColumn
>().
ToList
()
.
ForEach
(
c
=>
{
if
(!
c
.
AutoIncrement
)
{
result
.
Add
(
c
.
ColumnName
);
}
});
return
result
;
}
#
endregion
#
endregion
#
region
汉字拼音缩写
...
...
Tools/UI/wModuleManager.cs
View file @
c76caf61
...
...
@@ -132,10 +132,10 @@ namespace Tools.UI
{
//模块表
DataRow
drMaster
=
this
.
GetCurrentNodeRow
();
var
model
=
thi
s
.
GenInsertSQL
(
drMaster
);
var
model
=
Util
s
.
GenInsertSQL
(
drMaster
);
//功能表
var
rows
=
this
.
_dtDetail
.
DefaultView
.
Cast
<
DataRowView
>().
Select
(
r
=>
r
.
Row
);
var
detail
=
thi
s
.
GenInsertSQL
(
rows
.
ToArray
());
var
detail
=
Util
s
.
GenInsertSQL
(
rows
.
ToArray
());
//生成结果
var
result
=
$"IF NOT EXISTS(SELECT 1 FROM SysBusinessModel WHERE Name = '
{
this
.
tbName
.
Text
}
')\r\nBEGIN\r\n
{
model
}
\r\nDECLARE @ModelID INT;\r\nSET @ModelID=SCOPE_IDENTITY();\r\n
{
detail
}
\r\nEND"
;
//显示结果
...
...
@@ -169,7 +169,7 @@ namespace Tools.UI
}
#
endregion
#
region
树结构处理
#
region
树结构处理
:此处处理具有通用性,可为后续树控件提取做参考
/// <summary>
/// 树形图-初始化
...
...
@@ -389,63 +389,6 @@ namespace Tools.UI
}
}
#
endregion
#
region
SQL
生成相关
/// <summary>
/// 生成表格Insert语句
/// </summary>
/// <param name="rows"></param>
/// <returns></returns>
private
string
GenInsertSQL
(
params
DataRow
[]
rows
)
{
if
(
rows
==
null
||
rows
.
Length
==
0
)
return
""
;
//
var
dt
=
rows
[
0
].
Table
;
var
colist
=
this
.
GetTableColumns
(
dt
);
var
values
=
rows
.
Select
(
r
=>
this
.
GenValues
(
r
,
colist
));
var
result
=
$"INSERT INTO
{
dt
.
TableName
}
\r\n\t
{
this
.
GenColumns
(
colist
)}
\r\nVALUES\r\n\t
{
string
.
Join
(
",\r\n\t"
,
values
)}
"
;
return
result
;
}
/// <summary>
/// 生成列集合
/// </summary>
/// <param name="colist"></param>
/// <returns></returns>
private
string
GenColumns
(
List
<
string
>
colist
)
{
return
$"([
{
string
.
Join
(
"], ["
,
colist
)}
])"
;
}
/// <summary>
/// 生成值集合
/// </summary>
/// <param name="dr"></param>
/// <param name="colist"></param>
/// <returns></returns>
private
string
GenValues
(
DataRow
dr
,
List
<
string
>
colist
)
{
var
valist
=
colist
.
Select
(
col
=>
col
.
ToLower
().
Equals
(
"modelid"
)
?
"@ModelID"
:
$"'
{
dr
[
col
].
ToString
()}
'"
);
return
$"(
{
string
.
Join
(
", "
,
valist
)}
)"
;
}
/// <summary>
/// 获取有效列(非自增列)
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
private
List
<
string
>
GetTableColumns
(
DataTable
dt
)
{
var
result
=
new
List
<
string
>();
dt
.
Columns
.
Cast
<
DataColumn
>().
ToList
()
.
ForEach
(
c
=>
{
if
(!
c
.
AutoIncrement
)
{
result
.
Add
(
c
.
ColumnName
);
}
});
return
result
;
}
#
endregion
#
region
便捷操作:字符串
ID
-
自动生成
...
...
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