如何在Select语句中插入变量

时间:2015-11-24 05:56:37

标签: c#

try (InputStream inputStream = ClassLoader.getSystemResourceAsStream("config.properties"))..
  

这让我错误地说明了“。

附近的错误符号

然而,

string table = "City";
string query = "Select * from '"+table+"'";

提供正确的输出。

7 个答案:

答案 0 :(得分:5)

你就是这个

string query = "Select * from '"+table+"'";

替换为

string query = "Select * from " + table;

因为查询字符串在"Select * from City";

形成时不是"Select * from 'City'";

因此你得到错误

答案 1 :(得分:3)

最佳做法是使用string.format

string table = "City";
string query = string.format("Select * from {0}", table);

答案 2 :(得分:2)

您需要像下面一样形成您的查询。

string table = "City";

//You don't need to have single quote...

string query = " Select * From " + table; 

为了使用Where条件,请执行以下操作。

//Where clause only needs single quotes, to define the SQL parameter value in between...

string query = " Select * From " + table + " Where CityId = '" + cityId + "'"; 

希望这会有所帮助。

答案 3 :(得分:1)

最佳实践应不要这样做,因为它容易受到恶意SQL注入。

无论如何,如果你可以控制table变量,你应该像@ madcow69建议的那样,但是我建议添加分隔符,所以你总是有一个有效的分隔标识符(例如你的表名)是“订单”或任何其他SQL保留字。)

string table = "City";
string query = string.format("Select * from [{0}]", table);

但如果table如下,那该怎么办?:

string table = "City]; DROP DATABASE [YourDB";

答案 4 :(得分:0)

你可以让它像这样工作:

string table ="City"
string query = "Select * from "+table;

答案 5 :(得分:0)

希望这会有所帮助。

string table = "City";

//You don't need to have single quote...

string query = " Select * From " + table; 

答案 6 :(得分:0)

如果您正在使用.NET4.6,则可以使用新的"复合字符串格式设置" C# 6.0 (read about it here)引入的功能 这使您能够编写如下语句:

string query = $"Select * from {table}";

但是,强烈建议不要编写类似的查询并使用sql parameters。这将有助于您避免 SQL注入攻击