带串联的C#字符串文字

时间:2016-02-16 21:53:37

标签: c# asp.net

我有一个ASP.NET C#应用程序,我经常使用逐字字符串文字,例如

dbCommand.CommandText = @"INSERT INTO MYTABLE (COLUMN, COLUMN2)
                          VALUES ('data', 'data)";

这一切都很棒,但是当我尝试将字符串与诸如

之类的变量连接起来时
dbCommand.CommandText = @"INSERT INTO MYTABLE" + Session["table_extension"] + "(COLUMN, COLUMN2)
                          VALUES('data','data')";

我收到错误,说明Newline不变。如何在使用@ string literal时避免这种情况?

3 个答案:

答案 0 :(得分:3)

将@放在第二个字符串文字的前面或使用String.Format()

答案 1 :(得分:2)

1)不要连接字符串来构建SQL命令,这是非常危险的错误和错误(参见SQL注入:http://www.w3schools.com/sql/sql_injection.asp)。

您应该使用ADO.NET参数(http://www.csharp-station.com/Tutorial/AdoDotNet/Lesson06

2)如果要连接字符串,请使用string.Format,如:

var sql = string.Format("INSERT INTO MyTable ('col1') VALUES ({0})", col1Value);

或者使用具有更好编译时间检查的新简化语法:

var sql = $"INSERT INTO MyTable (col1) VALUES ('{col1Value}')";

答案 2 :(得分:0)

这对你有用!

dbCommand.CommandText = @"INSERT INTO MYTABLE" + Session["table_extension"].ToString() + "(COLUMN, COLUMN2)
                      VALUES('data','data')";