插入语句组合逻辑

时间:2011-06-23 18:17:42

标签: c# sql-server sql-server-2005

好的,我正在使用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结束。我希望这是有道理的。想法?

2 个答案:

答案 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而不是使用+进行字符串连接。