C# 从表中选择字符串[]列数组
我想要实现的是,从这一点:C# 从表中选择字符串[]列数组,c#,sql,sql-server,dynamic,C#,Sql,Sql Server,Dynamic,我想要实现的是,从这一点: string[] QueryString = new string[]{ "Column1", "Column2" }; 创建以下内容: SELECT Column1,Column2 FROM SomeTable 我知道我可以做一个concat,但这不是一个非常干净的方法 我知道我可以做海螺,但这不是一个很干净的方式 我觉得很干净: string sql = "SELECT " + string.Join(", ",
string[] QueryString = new string[]{
"Column1",
"Column2"
};
创建以下内容:
SELECT Column1,Column2
FROM SomeTable
我知道我可以做一个concat
,但这不是一个非常干净的方法
我知道我可以做海螺,但这不是一个很干净的方式
我觉得很干净:
string sql = "SELECT " + string.Join(", ", QueryString) + " FROM SomeTable";
尽管您容易受到SQL注入攻击:
string[] QueryString = new string[]{
" * FROM SomeTable; DROP TABLE SomeTable; --"
};
因此,只有在完全控制可以使用的列名(例如,从表元数据填充)的情况下才能执行此操作。您可以使用
String.Format
尽管在构造sql查询时,始终要注意sql注入攻击。当存在两个以上的sql查询时,这将不起作用columns@PranayRana是正确的,它是动态数组,因此标记
dynamic
:DI完全控制列名。@skmasq另外,您可能希望安全地引用标识符,例如选择[Column1],[SomeTable]
中的[Column2],否则类似于my column
的列名将导致错误。
Declare @qtext varchar(max) = 'select '+column1+ ' , '+column2+ ' from sometable '
Exec(@qtext)
String query =
String.Format("SELECT {0}, {1} FROM SomeTable", QueryString[0], QueryString[1]);