日期:2014-05-18  浏览次数:20835 次

一个公共的CS类,如何动态的给它提供参数
这个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;//外部设置的参数
  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,