有人可以改进我在C#中位于同一服务器内的2个数据库中创建联合选择视图的方法,以下是该方法的代码:
public override DataSet GetDynamicReportData(string strSQL) {
var sbSQL = new StringBuilder(strSQL);
var finalQueryStr = new StringBuilder(strSQL);
sbSQL.Replace("SELECT DISTINCT ", "");
var iamNEAS3 =
new StringBuilder(" UNION SELECT DISTINCT ");
var queryColumns = sbSQL.ToString().Split(',');
for (var i = 0; i <= queryColumns.Length - 1; i++) {
iamNEAS3.Append(queryColumns[i]);
if (i < queryColumns.Length - 1) {
iamNEAS3.Append(", ");
} else if (i == queryColumns.Length - 1) {
var appendMagic =
queryColumns[i].Replace(
"From [dbo].[vw_Classified_ApplicationsFiles]",
"FROM [project_phoenix].[dbo].[vw_Classified_ApplicationFiles]")
iamNEAS3.Append(appendMagic);
// Systematic removal; thank you!
iamNEAS3.Replace(queryColumns[i], "");
}
}
finalQueryStr.Append(iamNEAS3);
return DALDynamicReport.GetData(finalQueryStr.ToString());
}
现在它收到一个字符串参数
strSQL = "Select Distinct [Row1], [Row2], [Row3], [Row4] From [project_mongoose].[dbo].[vw_Classified_ApplicationsFiles] where [Row2] <= 200".
我知道我的编程技巧有限,但有没有办法像我一样不用手工编写代码呢?
答案 0 :(得分:0)
烨。不要这样做。甚至不要这么想。你能想象组装这样的应用程序代码,在字符串文字中漂浮的片段,从其他地方吸入的一部分,在最后一分钟添加一点,一点Replace(),然后执行以查看什么得到吐口水出来,如果它运行?恶梦
我敢肯定,如果你认真对待这个要求,你可以想出一个更好的方法。