创建一个使用SqlCommand的类

时间:2013-09-16 13:14:19

标签: c# asp.net

namespace ClassLibrary1
{
    public class open    
    {        
        SqlCommand cmd;

        public SqlCommand Cmd
        {
            get { return cmd; }
            set { cmd = value; }
        }
        string storedp;

        public string Storedp
        {
            get { return storedp; }
            set { storedp = value; }
        }

        public open(string storedp, SqlCommand cmd)
        {
            SqlConnection con = new SqlConnection("Data Source=.; Initial Catalog=cau; Integrated Security=true");
            con.Open();
            this.cmd = cmd = new SqlCommand(this.storedp = storedp, con);
            this.Cmd.CommandType = CommandType.StoredProcedure;

        }
    }
}

这是我为我的网页编写的代码。我写它是因为我希望打开sqlconnection一个类,我可以告诉它必须使用哪个存储过程。以及sqlcommand如你所见。

问题是

protected void Page_Load(object sender, EventArgs e)
{
    open op = new open("diz", cmd);
    SqlDataReader rd = cmd.ExecuteReader();
    while (rd.Read())
    {
        drop1.Items.Add(rd.GetString(0));
    }
}

这是我的ASP.net页面。当我尝试运行我的课时,它说“cmd没有属性”和"cmd does not exist in current context"。但是我在我的“开放”类中创建它吧?

第二个问题:为什么它只是说我的SqlCommand而不是我的字符串?

注意:此错误与添加命名空间,引用或类似内容无关。

3 个答案:

答案 0 :(得分:3)

除了类设计和数据库访问实践中的错误之外,第一个问题是您传递给构造函数的参数。

您尚未在cmd中定义Page_Load。您对构造函数的调用应如下所示:

open op = new open("diz", new SqlCommand());

(您也可以查看Naming Conventions - MSDN

  

第二个问题:为什么它只是说我的SqlCommand而不是我的   字符串?

没有错误,因为您将有效的字符串常量传递给参数storedp

您可能会看到有关Best Practices for Using ADO.NET - MSDN

的旧文章

答案 1 :(得分:0)

除了未能传递“cmd”的合格参数值(正如Habib指出的那样);

在构造函数中,您有以下代码:

this.cmd = cmd = new SqlCommand(this.storedp = storedp, con);

将参数传递给调用是否真的重要?您可以完全删除该参数。

答案 2 :(得分:0)

在page_Load中使用参考,在cmd:

中使用类

在Page_Load中:

SqlCommand cmd = new SqlCommand();
open op = new open("diz",ref cmd);

课堂上:

public open(string storedp, ref SqlCommand cmd)
{ 
   //...