2011-01-14 132 views
0

このコードを実行しようとしていますが、「パラメータ化されたクエリにはパラメータ@faidが指定されていません」というエラーが表示されます。少なくとも私の知識に基づいて、このコードはよく見えます。私はバックエンドとしてSQLEXPRESSとWindows 7でVS 2010を使用しています。パラメータ化されたクエリには、パラメータ######が指定されていません。

ありがとうございます。私はあなたが変数lcFaidを使用しないことを確認


 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

答えて

0

。たぶんあなたはリテラル文字列"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

関連する問題