SQL nvarchar to C# CLR

本文关键字:CLR to nvarchar SQL | 更新日期: 2023-09-27 18:36:37

我在SQL中有一个存储过程,它将数据库名称和服务器名称传递给用C#编写的程序集。 在 c# 汇编中调用的方法如下所示

Private static void GetData(string dbname, string servername)
{
   ---blah
   ---blah
   ---blah
}

我遇到的问题是当SQL实例名称或数据库名称具有反斜杠时(例如。 machinename'2008r2)。

我收到运行存储过程无法识别的字符'异常。 在调用程序集之前,我尝试了基本操作,例如在存储过程中将'替换为'',但这也失败了。

提前谢谢。

SQL nvarchar to C# CLR

确保在将字符串传递给存储过程之前进行参数化。不知道您设置了什么作为数据访问代码,但是,例如,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}