我有一个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时避免这种情况?
答案 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')";