SQL 查询必须声明标量变量
SQL Query Must Declare the Scalar Variable
我有一个 class 文件,我在其中声明 readonly string
我的查询要在方法中使用。我遇到了
的错误
Must declare the scalar variable "@DBID"
我可以知道我是否错误地声明了我的变量吗?
下面是代码片段:
Class 文件:
private static readonly string QUERY_GETMATCHEDRECORD = "SELECT [Title], [ItemLink], [RecordDocID] FROM [ERMS].[dbo].[Records] WHERE [ID] = @DBID AND [V1RecordID] = @recID AND [V1RecordDocID] = @recDocID";
public DataTable GetMatchedRecord(string DBID, string recID, string recDocID)
{
string Method = System.Reflection.MethodBase.GetCurrentMethod().Name;
DataTable dt = new DataTable();
try
{
using (DB db = new DB(_datasource, _initialCatalog))
{
db.OpenConnection();
using (SqlCommand command = new SqlCommand())
{
string commandText = QUERY_GETMATCHEDRECORD .FormatWith(DBID,recID,recDocID);
_log.LogDebug(Method, "Command|{0}".FormatWith(commandText));
command.CommandText = commandText;
dt = db.ExecuteDataTable(command);
}
db.CloseConnection();
}
}
catch (Exception ex)
{
_log.LogError(Method, "Error while retrieving matching records |{0}".FormatWith(ex.Message));
_log.LogError(ex);
}
return dt;
}
程序.cs文件:
MatchedRecords = oDB.GetMatchedRecord(DBID, RecID, RecDocID);
只有将参数添加到命令后,使用“@”标记的变量才有效parameter-collection。
尝试以下操作:
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();
}
我有一个 class 文件,我在其中声明 readonly string
我的查询要在方法中使用。我遇到了
Must declare the scalar variable "@DBID"
我可以知道我是否错误地声明了我的变量吗?
下面是代码片段:
Class 文件:
private static readonly string QUERY_GETMATCHEDRECORD = "SELECT [Title], [ItemLink], [RecordDocID] FROM [ERMS].[dbo].[Records] WHERE [ID] = @DBID AND [V1RecordID] = @recID AND [V1RecordDocID] = @recDocID";
public DataTable GetMatchedRecord(string DBID, string recID, string recDocID)
{
string Method = System.Reflection.MethodBase.GetCurrentMethod().Name;
DataTable dt = new DataTable();
try
{
using (DB db = new DB(_datasource, _initialCatalog))
{
db.OpenConnection();
using (SqlCommand command = new SqlCommand())
{
string commandText = QUERY_GETMATCHEDRECORD .FormatWith(DBID,recID,recDocID);
_log.LogDebug(Method, "Command|{0}".FormatWith(commandText));
command.CommandText = commandText;
dt = db.ExecuteDataTable(command);
}
db.CloseConnection();
}
}
catch (Exception ex)
{
_log.LogError(Method, "Error while retrieving matching records |{0}".FormatWith(ex.Message));
_log.LogError(ex);
}
return dt;
}
程序.cs文件:
MatchedRecords = oDB.GetMatchedRecord(DBID, RecID, RecDocID);
只有将参数添加到命令后,使用“@”标记的变量才有效parameter-collection。
尝试以下操作:
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();
}