2012-03-14 2 views
0

Вот ошибка:Получение ошибки при вызове общественного класса

An object reference is required for a non-static field, method, or property 'ArchiCapture.Models.dbConnection.runSproc(string[], string[], string)'

Он появляется в сИ вызова = dbConnection.runSproc (ParamName, paramValue, "pr_select_employee_by_id");

Я пытаюсь разработать класс, который вызовет SPROC. Вот мой класс.

namespace ArchiCapture.Models 
{ 
    public class dbConnection 
    { 

    public DataTable runSproc(string[] paramName, string[] paramValue, string sproc) 
    { 
      SqlConnection conn = null; 
      DataTable dt = new DataTable(); 
      SqlDataReader reader = null; 

      try 
      { 
       string connStr = ConfigurationManager.ConnectionStrings["AC2012"].ConnectionString; 
       using (conn = new SqlConnection(connStr)) 
       { 

        SqlCommand cmd = new SqlCommand(sproc, conn); 
        cmd.CommandType = CommandType.StoredProcedure; 

        for (int x = 0; x < paramName.Count(); x++) 
        { 
         cmd.Parameters.Add(new SqlParameter(paramName[x], paramValue[x])); 
        } 
        conn.Open(); 

        reader = cmd.ExecuteReader(); 
        dt.Load(reader); 

        return dt; 
       } 
      } 
      catch (SqlException e) 
      { 
       throw (e); 
      } 
      catch (Exception ex) 
      { 
       throw (ex); 
      } 
     finally 
     { 
      if (conn != null) 
      { 
       conn.Close(); 
      } 
      if (reader != null) 
      { 
       reader.Close(); 
      } 
     } 
    } 
} 
} 

А вот как я называю это ..

    DataTable dt = new DataTable(); 
       string[] paramName = new string[1] { "@employee_id" }; 
       string[] paramValue = new string[1] { searchEngine.Value }; 


       dt = dbConnection.runSproc(paramName, paramValue, "pr_select_employee_by_id"); 
+0

Возможный дубликат [Ссылка на объект требуется для нестатического поля, метода или свойства] (http://stackoverflow.com/questions/7016437/an-object-reference-is-required-for-the -non-static-field-method-or-property) –

+0

Не указывайте классы, начинающиеся с буквы нижнего регистра для общедоступных образцов. Следуя [Правилам кодирования C#] (http://msdn.microsoft.com/en-us/library/ff926074.aspx), код легче читать для других. –

ответ

4

Вы хотите static метод:

public static DataTable runSproc(string[] paramName, string[] paramValue, string sproc) 

Или, как сказано в сообщении об ошибке, необходимо создать экземпляр нового экземпляр вашего класса до вызова метода экземпляра:

dbConnection conn = new dbConnection(); 
dt = conn.runSproc(paramName, paramValue, "pr_select_employee_by_id"); 

Кроме того, обычно имена классов PascalCased. Рассмотрим DbConnection вместо dbConnection.

+0

Я такой нуб, спасибо, сэр – dright

+0

@ user1196221: Нет проблем! –

Смежные вопросы