带串联的C#字符串文字

带串联的C#字符串文字,c#,asp.net,C#,Asp.net,我有一个ASP.NET C#应用程序,我经常使用逐字字符串文字,例如 dbCommand.CommandText = @"INSERT INTO MYTABLE (COLUMN, COLUMN2) VALUES ('data', 'data)"; 这很好,但是当我尝试用一个变量连接字符串时,比如 dbCommand.CommandText = @"INSERT INTO MYTABLE" + Session["table_extension"

我有一个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文本时,如何避免这种情况?

将@放在第二个字符串文本之前,或者使用string.Format()

将@放在第二个字符串文本之前,或者使用string.Format()

这对您很有用

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

这对你有用

dbCommand.CommandText = @"INSERT INTO MYTABLE" + Session["table_extension"].ToString() + "(COLUMN, COLUMN2)
                      VALUES('data','data')";
1) 不要连接字符串来生成SQL命令,这非常危险,而且会出错(请参阅SQL注入:)

您应该使用ADO.NET参数()

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

var sql = string.Format("INSERT INTO MyTable ('col1') VALUES ({0})", col1Value);
或者使用具有更好编译时检查功能的新简化语法:

var sql = $"INSERT INTO MyTable (col1) VALUES ('{col1Value}')";
1) 不要连接字符串来生成SQL命令,这非常危险,而且会出错(请参阅SQL注入:)

您应该使用ADO.NET参数()

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

var sql = string.Format("INSERT INTO MyTable ('col1') VALUES ({0})", col1Value);
或者使用具有更好编译时检查功能的新简化语法:

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

您是否缺少第二个
@
符号
dbCommand.CommandText=@“插入MYTABLE”+会话[“table_extension”]+@(列,列2)值('data','data')”您是否缺少第二个
@
符号
dbCommand.CommandText=@“插入MYTABLE”+会话[“table_extension”]+@(列,列2)值('data','data')”