SELECT string []列FROM表的数组

时间:2014-02-04 17:59:29

标签: c# sql sql-server dynamic

我想要实现的目标是:

string[] QueryString = new string[]{
        "Column1",
        "Column2"
    };

创建:

SELECT  Column1,Column2
FROM    SomeTable

我知道我可以做concat,但这不是一个非常干净的方法。

3 个答案:

答案 0 :(得分:2)

  

我知道我可以做一个concat,但这不是一个非常干净的方法。

对我来说似乎很干净:

string sql = "SELECT " + string.Join(", ", QueryString) + " FROM SomeTable";

虽然你很容易受到SQL注入攻击:

string[] QueryString = new string[]{
        " * FROM SomeTable; DROP TABLE SomeTable; --"
    };

只有在完全控制可以使用的列名(例如,从表元数据中填充)时才这样做。

答案 1 :(得分:0)

Declare @qtext varchar(max) = 'select '+column1+ ' , '+column2+ ' from sometable ' 
Exec(@qtext)

答案 2 :(得分:0)

您可以使用String.Format

http://msdn.microsoft.com/en-us/library/system.string.format(v=vs.110).aspx

String query =
String.Format("SELECT {0}, {1} FROM SomeTable", QueryString[0], QueryString[1]);

尽管像构建SQL查询一样,但要注意sql注入攻击。