【发布时间】:2018-01-01 17:32:00
【问题描述】:
我的逐字字符串包含一些变量,我的问题总是从编译器得到这个错误:
; expected
那么我该如何正确地逃避它呢?
int teacherId = sqlStatus = (int)sqlCmd.LastInsertedId;
sqlCmd.CommandText = @"INSERT INTO report (report_type, report_date, semester, report_details, teacher_id)
VALUES (0, ""2018-01-01"", 1, '{
""teacherId"": "" " + teacherId.ToString() + " "", <=== error here (; expected)
""mahderDate"": """",
""teacherShool"": """",
""baladia"": """",
""wilaya"": """",
""moufatecheReport"": """"
}'," + teacherId + ");";
【问题讨论】:
-
想过使用string.Format吗?还是插值字符串?无论如何,简而言之,您可以使用 '\' 转义字符
-
正确的方法是使用参数化查询来避免 SQL 注入的可能性。
-
无论如何,这里的问题是你在
teacherId.ToString()之后开始一个新的字符串。但该字符串不是多行字符串:您需要再次将@放在开头引号的前面。 -
@Dave 我试过 '\' 但仍然有同样的错误。
-
参数化查询更好,不仅因为它们可以防止 sql 注入,所以我仍然会在这里使用它们。
标签: c# escaping verbatim-string