2011-01-14 106 views
0

我想运行这段代码,但我得到的错误“参数化查询期望参数@faid它没有提供”。至少根据我的知识,这段代码看起来不错。我在Windows 7上使用VS 2010,并将SQLEXPRESS作为后端。参数化的查询需要参数######这是不是提供

在此先感谢。


 string getDataQuery; 
     lcFaid = "70464917-967b-4796-9483-3b0b4b004a3e"; 

     SqlConnection sqlConnection1 = new SqlConnection(ccsConnectionString); 

     DataSet data = new DataSet(); 
     data.Locale = System.Globalization.CultureInfo.InvariantCulture; 

     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; 

     masterDataAdapter.SelectCommand.Parameters.Add("@lcFaid", 
      SqlDbType.UniqueIdentifier, 36, "faid").SourceVersion = DataRowVersion.Original; 


     masterDataAdapter.SelectCommand.CommandText = getDataQuery; 
     masterDataAdapter.Fill(data, "famain"); 
+1

因此,您有一个名为`@ lcFaid`的参数,但是错误消息表明它正在寻找名为`@ faid`的参数?这很奇怪。 – Gabe 2011-01-14 05:10:04

回答

0

我知道你从来没有使用可变lcFaid。也许你打算使用它而不是字符串"faid"(它根本不是GUID)?

masterDataAdapter.SelectCommand.Parameters.Add("@lcFaid", 
     SqlDbType.UniqueIdentifier, 36, lcFaid).SourceVersion = DataRowVersion.Original; 
0

不知道这一点 - 但我会

  • 第一设置命令的查询文本(它定义了哪些参数会有)
  • 只有然后的参数添加到收藏

类似这样的:

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; 

此外,作为“加布”指出在他的评论 - 错误消息引用参数@faid,但你定义和设置一个名为@lcFaid参数 - 为什么?

+0

谢谢!为了节省时间,我创建了一个存储过程并调用它来获取相同的数据。然而,我将在业余时间继续使用此代码并在此处发布我的结果。 – Frank 2011-01-19 00:48:38