我在SQL中有一个存储过程,它将数据库名称和服务器名称传递给用C#编写的程序集。 在 c# 汇编中调用的方法如下所示
Private static void GetData(string dbname, string servername)
{
---blah
---blah
---blah
}
我遇到的问题是当SQL实例名称或数据库名称具有反斜杠时(例如。 machinename2008r2
)。
我收到运行存储过程无法识别的字符异常。 在调用程序集之前,我尝试了基本操作,例如在存储过程中将
替换为
\
,但这也失败了。
提前谢谢。
确保在将字符串传递给存储过程之前进行参数化。不知道您设置了什么作为数据访问代码,但是,例如,SqlCommand 类包含一个参数集合:
SqlCommand command= new SqlCommand("StoredProc", connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@name", SqlDbType.NVarChar);
command.Parameters["@name"].Value = dbName;
command.Parameters.Add("@server", SqlDbType.NVarChar);
command.Parameters["@server"].Value = server;
这是一个
转义字符。您需要使用两个反斜杠。
(例如)
{MachineName\NamedInstance}