2016-04-01 8 views
2

私はストアドプロシージャを呼び出す関数を持っています。しかし、それはいくつかのことのように例外がスローされます:無効な列名「量」:CでのSqlException#

タイプの未処理の例外は、「System.Data.SqlClient.SqlException」 はのSystem.Data.dll
で発生しました追加情報。

'quantity'という列名が無効です。
'location'列名が無効です。
列名 'quantity'が無効です。
列名 'quantity'が無効です。
列名 'quantity'が無効です。 ...

MSSMSでストアドプロシージャが正常に機能するため、この例外がスローされる理由を理解できません。

はここでストアドプロシージャを呼び出すための私のコードです:

public DataSet getDataTable_sp(string sp_name, SqlParameter[] p = null) 
{ 
      DataSet ds = new DataSet(); 

      using (SqlConnection conn = new SqlConnection(Connstr)) 
      { 
       SqlDataAdapter da = new SqlDataAdapter(sp_name,conn); 
       da.SelectCommand.CommandType = CommandType.StoredProcedure; 
       da.SelectCommand.CommandTimeout = 300; 

       if (p != null) 
        for (int i = 0; i < p.Count(); i++) 
         da.SelectCommand.Parameters.Add(p[i].ParameterName, p[i].SqlDbType, p[i].Size).Value = p[i].Value; 

       conn.Open(); 
       da.Fill(ds); // this is the line that the exception is thrown 
       conn.Close(); 
      } 

      return ds; 
} 
+1

例外は明らかです: '無効な列名 'quantity'は、 'quantity'という名前の列がないことを意味します。間違ったデータベースに接続するか、最初にテーブルを作成する必要があります。 –

+0

接続が適切かどうか確認してください – Vivekh

答えて

4

は私が前にも同じエラーが発生した、私はこの問題は、ストアドプロシージャにあったと思います。すべての宣言、特に一時テーブルをチェックしてみてください。私はそれがあなたの部分で動作するかどうかわからない。同じ一時テーブル名を使用しないようにしてください。ちょうどそれを試してください:)

+0

はい、あなたは正しいです。私は私のストアドプロシージャで同じ一時テーブル名を持っています – JanLeeYu

+0

ああ私が参照してください。私はあなたを助けることができてうれしいです:) – Werdo

0

ストアドプロシージャのカラム名、カラムは、あなたのモデルで宣言されている属性と同じでなければなりません。

関連する問題