C# 参数化查询需要未提供的参数

C# 参数化查询需要未提供的参数,c#,C#,我试图运行这段代码,但得到错误“参数化查询需要未提供的参数@faid”。至少据我所知,这段代码看起来不错。我在Windows7上使用VS2010,SQLEXPRESS作为后端 提前谢谢 我发现您从未使用变量lcFaid。也许您想用它来代替文本字符串“faid”(它根本不是GUID) 对此我不确定,但我会的 首先设置命令的查询文本(该文本定义将存在的参数) 仅然后将参数添加到集合中 大概是这样的: string getDataQuery = "SELECT customer,

我试图运行这段代码,但得到错误“参数化查询需要未提供的参数@faid”。至少据我所知,这段代码看起来不错。我在Windows7上使用VS2010,SQLEXPRESS作为后端

提前谢谢



我发现您从未使用变量
lcFaid
。也许您想用它来代替文本字符串“faid”(它根本不是GUID)


对此我不确定,但我会的

  • 首先设置命令的查询文本(该文本定义将存在的参数)
  • 然后将参数添加到集合中
大概是这样的:

string getDataQuery =
        "SELECT customer,custtrack,ackdate FROM famain WHERE faid = @lcFaid";

SqlDataAdapter masterDataAdapter = new SqlDataAdapter();
masterDataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;

masterDataAdapter.SelectCommand = new SqlCommand();
masterDataAdapter.SelectCommand .Connection = sqlConnection1;

// first set the query text
masterDataAdapter.SelectCommand.CommandText = getDataQuery;

// after that, define the parametesr
masterDataAdapter.SelectCommand.Parameters
  .Add("@lcFaid", SqlDbType.UniqueIdentifier, 36, "faid").SourceVersion = DataRowVersion.Original;

此外,正如“Gabe”在其评论中指出的那样-错误消息引用了一个参数
@faid
,但您正在定义和设置一个名为
@lcFaid
-为什么???

所以您有一个名为
@lcFaid
的参数,但错误消息说它正在寻找一个名为
@faid
的参数?真奇怪,谢谢!为了节省时间,我创建了一个存储过程并调用它来获取相同的数据。不过,我会在业余时间继续使用这段代码,并将结果发布在这里。
masterDataAdapter.SelectCommand.Parameters.Add("@lcFaid",
        SqlDbType.UniqueIdentifier, 36, lcFaid).SourceVersion = DataRowVersion.Original;
string getDataQuery =
        "SELECT customer,custtrack,ackdate FROM famain WHERE faid = @lcFaid";

SqlDataAdapter masterDataAdapter = new SqlDataAdapter();
masterDataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;

masterDataAdapter.SelectCommand = new SqlCommand();
masterDataAdapter.SelectCommand .Connection = sqlConnection1;

// first set the query text
masterDataAdapter.SelectCommand.CommandText = getDataQuery;

// after that, define the parametesr
masterDataAdapter.SelectCommand.Parameters
  .Add("@lcFaid", SqlDbType.UniqueIdentifier, 36, "faid").SourceVersion = DataRowVersion.Original;