在c#中:我需要像这样创建oracle查询字符串:
string orQr = @"
SELECT ""Date"", ""Key""
FROM TBL
";
我需要动态地做。但逃避双重报价存在问题。
怎么做?这有点疯狂;-)并且不起作用:
string quotes = @"""""";
string subSlct = quotes + "Date" + quotes + ", " + quotes + "Key" + quotes;
string orQrB = @"
SELECT " + subSlct + @"
FROM TBL
";
(结果是:SELECT \“\”Date \“\”,\“\”Key \“\”\ FROM TBL)
答案 0 :(得分:4)
您的quotes
变量正在添加两个双引号,而不是一个。改变这个:
string quotes = @"""""";
到此:
string quotes = @"""";
此外:
string.Format("SELECT \"{0}\", \"{1}\" FROM TBL", a, b);
您的代码易受SQL injection的影响。
通常,您需要使用参数化查询,但由于这些查询不允许参数化列名,因此您至少需要自己清理输入并检查非法字符(例如{{1} },;
)。
答案 1 :(得分:2)
这是否有效:
string quotes = "\"\"";
答案 2 :(得分:2)
不要通过字符串连接构造查询。你打开自己的SQL注入攻击。使用参数化查询,您还可以更轻松地添加引号。
答案 3 :(得分:1)
您可以使用正常转义,例如:string quotes = "\"\"";