一个公共的CS类,如何动态的给它提供参数

诸葛非卿 发布于 2012/07/27 23:11
阅读 151
收藏 0

【深度】AI、5G时代下,算力网络与内生安全最全解析!>>>

这个S1.CS类文件代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

/// <summary>
/// 这个类的作用就是查询数据库,并调出数据。但是查询条件是根据引用的文件不同而变化的,也就是说,这里的“InsertID”是在外部设置的。
/// </summary>
public class s1
{
    public int InsertID;
    public   Boolean getChecked;

    protected SqlConnection getConnCreate()
    {
        string getConnettions = System.Configuration.ConfigurationManager.ConnectionStrings["webTextconnetionSting"].ToString();

        SqlConnection connet = new SqlConnection(getConnettions);
        return connet;
       
}

public s1()
{
SqlConnection getConn = getConnCreate();
            getConn.Open();
            SqlCommand selectDataComm = new SqlCommand("selectDataCeshi", getConn);
            selectDataComm.CommandType = CommandType.StoredProcedure;
           // selectDataComm.Parameters.Add("@getDataValues", SqlDbType.Bit);
            //selectDataComm.Parameters["@getDataValues"].Direction = ParameterDirection.Output;
           SqlParameter para= new SqlParameter("@getDataValues", SqlDbType.Bit);

           para.Direction = ParameterDirection.Output;
           selectDataComm.Parameters.Add(para);

           SqlParameter para1 = new SqlParameter("@getUsrName", SqlDbType.NVarChar, 50);
           para1.Direction = ParameterDirection.Output;
           selectDataComm.Parameters.Add(para1);

           SqlParameter para2 = new SqlParameter("@getId",SqlDbType.Int);
           para2.Direction = ParameterDirection.Input;//[b][color=#FF0000]外部设置的参数[/color][/b]
           selectDataComm.Parameters.Add(para2);

           //para2.DbType = DbType.Int32;

         
          
           //Boolean getChecked = Convert.ToBoolean(selectDataComm.Parameters.Add("@getDataValues", SqlDbType.Bit).Value);

         
           selectDataComm.ExecuteNonQuery();
           para2.Value = InsertID;

            getChecked = Convert.ToBoolean(para.Value);
            getConn.Close();
                  
        }

    }
    

外部调用文件代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            s1 getSl = new s1();

            getSl.InsertID = 1;

            chkBoxXianShi.Checked = getSl.getChecked;
        }
    }
}

错误如下
过程或函数 'selectDataCeshi' 需要参数 '@getId',但未提供该参数

其中存储过程代码如下:
ALTER PROCEDURE selectDataCeshi
/*
(
@parameter1 int = 5,
@parameter2 datatype OUTPUT
)
*/
@getDataValues bit output,
@getUsrName nvarchar(50) output,
@getId int 
AS
select  @getDataValues=checkValue,@getUsrName=usrname from ceshiTable where usrid=@getId
RETURN

以下是问题补充:

@诸葛非卿:问题出现在那里,请大家帮忙,那里没有设置好吗? (2012/07/27 23:12)
@诸葛非卿:兄弟们,这个问题倒是什么?是不是在引用这个类的时候,他就已经被执行了呢? (2012/07/28 08:44)
加载中
0
答复哈
答复哈

调用顺序有问题吧

para2.Value = InsertID;
这句写在构造方法里,真正的赋值又在

s1 getSl = new s1(); getSl.InsertID = 1;
实例化之后

诸葛非卿
诸葛非卿
回复 @答复哈 : 我看我现在就是这个样子,前段时间还怀疑自己是不是 中邪了呢。。 看来古话说的好,不疯魔,不成神佛。。
答复哈
答复哈
回复 @冲天起 : 天天写代码,做梦也写~
诸葛非卿
诸葛非卿
对了,兄弟,问你个题外话,怎么样在很短的时间内将自己的编程水平提高到一个比较高层次。。
答复哈
答复哈
回复 @冲天起 : 有想法就好~
诸葛非卿
诸葛非卿
如兄弟所言,问题解决了。 本来我想到的是用一个判断来进行赋值,以延缓他运行的时间。。 但是效果不理想。。 这个效果要好一些。。
下一页
返回顶部
顶部