好的,我正在使用C#将信息插入数据库服务器的表中。它根据添加到它的一堆if语句创建SQL命令。我有一个问题是要清楚地创建语句。我理解,要在SQL Server中组合Insert语句,我们使用:
INSERT INTO myTable
SELECT 'value1', 'value2'
UNION ALL
SELECT 'value3', 'value4'
UNION ALL
SELECT
etc
我的问题是对它们进行排序,以便无论它传递哪个if语句,该语句都能正常工作。例如,
function()
string sqltext = "INSERT INTO myTable"
if(cond1)
{ sqltext=sqltext + "SELECT 'v1', 'v2' UNION ALL" }
else if (cond2) {
sqltext = sqltext + "SELECT 'v3', 'v4' UNION ALL" }
在这种情况下,如果任一条件自身返回,则该语句将不起作用,因为该语句将以UNION ALL结束。我希望这是有道理的。想法?
答案 0 :(得分:6)
列出选择
string sqltext = "INSERT INTO myTable";
List<string> selectList = new List<string>();
和
if(cond1)
{
selectList.Add("SELECT 'v1', 'v2' UNION ALL");
...
最后
string selectStatement = string.Join(" UNION ALL ", selectList.ToArray());
sqltext = sqltext + " " + selectStatement;
答案 1 :(得分:1)
生成后从sqltext中删除“UNION ALL”。
if(sqltext .Trim().EndsWith("UNION ALL")) {
sqltext = sqltext.Remove(s.LastIndexOf("UNION ALL"));
}
另外,作为附注,我建议使用StingBuilder
而不是使用+
进行字符串连接。