调用公共类
这里的时候,收到错误的错误:调用公共类
An object reference is required for a non-static field, method, or property 'ArchiCapture.Models.dbConnection.runSproc(string[], string[], string)'
它出现在呼叫DT = dbConnection.runSproc(PARAMNAME,paramValue, “pr_select_employee_by_id”);
我正在尝试开发一个名为SPROCs的类。这是我的班。
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");
你想要一个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
。
我是这么一个noob,谢谢先生 – dright 2012-03-14 01:06:16
@ user1196221:没问题! – 2012-03-14 01:07:08
[非静态字段,方法或属性需要对象引用](http://stackoverflow.com/questions/7016437/an-object-reference-is-required-for-the -non-static-field-method-or-property) – 2012-03-14 01:06:09
请不要命名以公开样本小写字母开头的类。遵循[C#编码准则](http://msdn.microsoft.com/zh-cn/library/ff926074.aspx)可使代码更易于阅读。 – 2012-03-14 01:08:00