Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQL查询必须声明标量变量_C#_Sql_Variables_Scalar - Fatal编程技术网

C# SQL查询必须声明标量变量

C# SQL查询必须声明标量变量,c#,sql,variables,scalar,C#,Sql,Variables,Scalar,我有一个类文件,我在其中声明要在方法中使用的查询的只读字符串。我遇到了一个错误 必须声明标量变量“@DBID” 我可以知道我是否错误地声明了变量吗 以下是代码片段: 类文件: private static readonly string QUERY_GETMATCHEDRECORD = "SELECT [Title], [ItemLink], [RecordDocID] FROM [ERMS].[dbo].[Records] WHERE [ID] = @DBID AND [V1RecordID

我有一个类文件,我在其中声明要在方法中使用的查询的
只读字符串。我遇到了一个错误

必须声明标量变量“@DBID”

我可以知道我是否错误地声明了变量吗

以下是代码片段:


类文件:

private static readonly string QUERY_GETMATCHEDRECORD = "SELECT [Title], [ItemLink], [RecordDocID] FROM [ERMS].[dbo].[Records] WHERE [ID] = @DBID AND [V1RecordID] = @recID AND [V1RecordDocID] = @recDocID";
MatchedRecords = oDB.GetMatchedRecord(DBID, RecID, RecDocID);


Program.cs文件:

private static readonly string QUERY_GETMATCHEDRECORD = "SELECT [Title], [ItemLink], [RecordDocID] FROM [ERMS].[dbo].[Records] WHERE [ID] = @DBID AND [V1RecordID] = @recID AND [V1RecordDocID] = @recDocID";
MatchedRecords = oDB.GetMatchedRecord(DBID, RecID, RecDocID);

只有将参数添加到commands参数集合中时,才可以使用带“@”符号的变量

请尝试以下操作:

    using (DB db = new DB(_datasource, _initialCatalog))
    {
        db.OpenConnection();
        using (SqlCommand command = new SqlCommand())
        {
            command.CommandText = QUERY_GETMATCHEDRECORD;
            command.Parameters.AddWithValue("@DBID", DBID);
            command.Parameters.AddWithValue("@recID", recID);
            command.Parameters.AddWithValue("@recDocID",recDocID);
            dt = db.ExecuteDataTable(command);
        }
        db.CloseConnection();
    }

\u log.LogDebug
中的行是什么样子的?您的常量不应该看起来更像
其中[ID]={0}和[V1RecordID]={1}和[V1RecordDocID]={2}
?它记录了遇到的错误消息和方法:
GetMatchedRecord |检索匹配记录时出错|必须声明标量变量“@DBID”。Net SqlClient数据提供程序|必须声明标量变量“@DBID”
您在哪里设置变量
FormatWith
替换
{0}、{1}
等(假设您使用的是James Newton Kings扩展方法)。谢谢!我会尝试一下,你真的应该使用,除了你不应该使用:D我真的不认为在他的代码的这个阶段,OP有什么关系。然而,这是一个正确的观点!由于实际类型无法推断出给定的OPs代码片段,我将不编辑我的答案。