try (InputStream inputStream = ClassLoader.getSystemResourceAsStream("config.properties"))..
这让我错误地说明了“。
附近的错误符号
然而,
string table = "City";
string query = "Select * from '"+table+"'";
提供正确的输出。
答案 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注入攻击。