簡體   English   中英

帶串聯的C#字符串文字

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM