2016-04-01 18 views
2

Kayıtlı bir prosedürü çağıran bir işlev var. Fakat bazı şey böyle bir istisna atar: Geçersiz sütun adı 'miktar':SqlException in C#

tür bir işlenmeyen özel durum 'System.Data.SqlClient.SqlException' System.Data.dll
bilgiye meydana geldi.

Geçersiz sütun adı 'miktar'.
Geçersiz sütun adı 'konum'.
Geçersiz sütun adı 'miktar'.
Geçersiz sütun adı 'miktar'.
Geçersiz sütun adı 'miktar'. ...

MSSMS'de saklı yordamın düzgün çalıştığı için neden bu özel durumun neden atıldığını anlamıyorum.

Burada saklı yordam çağırmak için benim kodudur:

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

Özel durumun açık olduğunu düşünüyorum: 'Geçersiz sütun adı' miktar ',' ad 'olarak adlandırılan sütun yok demektir. Yanlış veritabanına bağlanabilir veya önce tabloları oluşturmanız gerekir. –

+0

Bağlantının uygun olup olmadığını kontrol edin – Vivekh

cevap

4

Ben de daha önce aynı sorunla karşılaştık, ben sorun saklı yordam üzerinde olduğunu düşünüyorum. Tüm beyanları, özellikle geçici tablolarınızı kontrol etmeye çalışın. Senin parçan üzerinde çalışıp çalışmayacağını bilmiyorum. Aynı geçici tablolardan kaçınmaya çalışın. Sadece dene :)

+0

evet haklısınız. Saklı yordamlarımda aynı geçici tablo adlarına sahibim – JanLeeYu

+0

Ahh anlıyorum. Size yardımcı olabildiğime sevindim :) – Werdo

0

Sütun adlarını, saklı yordamdaki sütunların modelinizde bildirilen özniteliklerle aynı olması gerektiğini kontrol edin.