[英]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.