[英]C# String literal with concatenation
我有一个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')";
我收到一个错误,指出常量中的换行符。 在仍使用@字符串文字的情况下如何避免这种情况?
将@放在第二个字符串文字的前面,或使用String.Format()
1)不要串联字符串来构建SQL命令,这确实是危险和错误的消息(请参阅SQL Injection: 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}')";
这将为您工作!
dbCommand.CommandText = @"INSERT INTO MYTABLE" + Session["table_extension"].ToString() + "(COLUMN, COLUMN2)
VALUES('data','data')";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.