C# 如何避开正斜杠?

C# 如何避开正斜杠?,c#,sql-server-2008,C#,Sql Server 2008,我通过代码执行了以下sql命令,因为在更新后计算sql行时,参数包含一个正斜杠,所以该列为空 sqlCommand.CommandText = String.Format("update {0} set {1}='{2}'where id = @Id", tableName, ColumnName, forwardSlashText); sqlCommand.Parameters.Add("@Id", SqlDbTy

我通过代码执行了以下sql命令,因为在更新后计算sql行时,参数包含一个正斜杠,所以该列为空

sqlCommand.CommandText = String.Format("update {0} set {1}='{2}'where id = @Id",
                                        tableName, ColumnName, forwardSlashText);
sqlCommand.Parameters.Add("@Id", SqlDbType.UniqueIdentifier).Value = rowId;
numRowsAffected = sqlCommand.ExecuteNonQuery();
将log.debug添加到此命令后,我将获得以下输出

更新我的\u表\u名称集 mime_type='application/pdf'其中id= @身份证


因此,我假设该命令是正确的,但是查看行mime类型列是空的。

斜杠不是问题所在。但是,在主题中,为什么不将forwardSlashText作为参数提交,就像您对
@Id
所做的那样?

斜线不是问题所在。但是,在这个主题上,为什么不将forwardSlashText作为参数提交,就像您对
@Id
所做的那样?

如果您将该SQL复制并粘贴到SQL Server Management Studio中并执行它,会影响多少行?您需要排除WHERE子句的问题,因为这听起来像问题所在。您还应该记录.debug ID的值,以检查它是否执行了正确的操作


很可能是-1或其他原因导致了问题。

如果将该SQL复制并粘贴到SQL Server Management Studio中并执行,会影响多少行?您需要排除WHERE子句的问题,因为这听起来像问题所在。您还应该记录.debug ID的值,以检查它是否执行了正确的操作


很可能是-1或其他问题,因为问题在别处。

首先,使用String.Format()合成查询,注意不要让自己受到SQL注入攻击。(确保tableName和ColumnName来自受信任的源

第二,这就是我要做的。请注意表和列名周围的括号(这将转义表或列名中可能包含的任何古怪字符)。但更重要的是,请注意forwardSlashText现在是一个参数:

sqlCommand.CommandText = String.Format("update [{0}] set [{1}] = @val where id = @Id",
                                    tableName, ColumnName);
sqlCommand.Parameters.AddWithValue("@Id", rowId);
sqlCommand.Parameters.AddWithValue("@val", forwardSlashText);
numRowsAffected = sqlCommand.ExecuteNonQuery();

首先,通过使用String.Format()来合成查询,请注意您没有为自己设置SQL注入攻击。(确保tableName和ColumnName来自可信的源。)

第二,这就是我要做的。请注意表和列名周围的括号(这将转义表或列名中可能包含的任何古怪字符)。但更重要的是,请注意forwardSlashText现在是一个参数:

sqlCommand.CommandText = String.Format("update [{0}] set [{1}] = @val where id = @Id",
                                    tableName, ColumnName);
sqlCommand.Parameters.AddWithValue("@Id", rowId);
sqlCommand.Parameters.AddWithValue("@val", forwardSlashText);
numRowsAffected = sqlCommand.ExecuteNonQuery();

问题可能在其他地方,例如分配
forwardSlashText
值或
rowId
值。向我们展示该代码。问题可能在其他地方,例如分配
forwardSlashText
值或
rowId
值。向我们展示该代码。谢谢,是的,我的代码来源可靠(c端的代码,不是来自参数输入)谢谢,是的,我的代码来自可信的源代码(c端的代码,不是来自参数输入)