请问怎么样配合使用GetCachedParameterSet和CacheParameterSet,两者是如何配合使用的,可以发一些程序例子(C#)过来看一下最好.

解决方案 »

  1.   

    DataSet ds = SqlHelper.ExecuteDataset( 
          connectionString,
          CommandType.StoredProcedure,
          "getProductsByCategory",
          new SqlParameter("@CategoryID", categoryID)); 
    .................
    太多了你自己来看吧:http://www.cnblogs.com/yanxq/archive/2004/12/28/82779.html
      

  2.   

    SqlHelper太乱了,其实你自己从里面抽出一个数据库基类不是好得多?实现关键的方法就可以了,比如执行sql语句、执行存储过程、返回DataSet、返回DataTable等等...
      

  3.   

    TO:泡泡.我已经看过这些但是我还是不明白啊!
    我发些我做的代码给你看一下,是一个用户注册功能.
    存储过程:CREATE PROCEDURE INSERT_USERS 
    @username varchar(50),
    @password varchar(50),
    @birth datetime,
    @email varchar(50),
    @roleid int

    AS
    INSERT INTO Users 
    (UserName,
    Password,
    Email,
    Birth,
    RoleID) 
    VALUES (@username,
    @password,
    @email,
    @birth,
    @roleid)
    GO业务逻辑层的其中一个功能函数
    public void AddUsers(string username,string password,System.DateTime birth,string email,int roleid)
    {
    //SqlConnection myConnection=new SqlConnection(conn);
    SqlParameter[] paramsToStore=new SqlParameter[5];
    paramsToStore[0]=new SqlParameter("@username",SqlDbType.VarChar,50);
    paramsToStore[1]=new SqlParameter("@password",SqlDbType.VarChar,50);
    paramsToStore[2]=new SqlParameter("@birth",SqlDbType.DateTime);
    paramsToStore[3]=new SqlParameter("@email",SqlDbType.VarChar,50);
    paramsToStore[4]=new SqlParameter("@roleid",SqlDbType.Int);
                SqlHelperParameterCache.GetCachedParameterSetCacheParameterSet(conn,"INSERT_USERS",paramsToStore);

    }注册页面的后台代码:
    private void Register_Click(object sender, System.EventArgs e)
    { //初始化业务层接口
            UserDB user=new UserDB();
     string username=Reg_UserName.Text.Trim();
     string password=Reg_Password.Text.Trim();
    //System.DateTime birth=Birth.Text.Trim();
             string email=Email.Text.Trim();
             int roleid=1;
    //SqlParameter usernamePram=new SqlParameter("@username",SqlDbType.VarChar,50);
    // usernamePram.Value=username;
    // SqlParameter passwordPram=new SqlParameter("@password",SqlDbType.VarChar,50);
    //  passwordPram.Value=password;
    //SqlParameter[] storedParams=new SqlParameter[5];
    //storedParams=SqlHelperParameterCache.GetCachedParameterSet(conn,"INSERT_USERS");
    //storedParams[0].Value=username;

    //storedParams[1].Value=password;
    // storedParams[2].Value=birth;
    // storedParams[3].Value=email;
    // storedParams[4].Value=roleid;
    if (password==Reg_RePassword.Text)
    {
    user.AddUsers(username,UserDB.Encrypt(password),System.Convert.ToDateTime(Birth.Text),email,roleid);
    Response.Write("注册成功!");
    }
    else
    {
    Response.Write("注册失败!");
    }  
     
    }
    问题:
    能够反馈注册成功的信息,但是就是插入不了数据进数据库.我刚学SqlHelper这个类,还有很多不懂的地方,还请各位详细请教!
      

  4.   

    GetCachedParameterSet之前应当先CacheParameterSet.CacheParameterSet的作用是将你的参数集合缓存起来,以便GetCachedParameterSet能以较快的速度进行读取,前提是你的参数集合相对固定!如果是使用存储过程的话,就不能使用GetCachedParameterSet,它适用于自定义参数集合,GetSpParameterSet对应的是存储过程的操作
      

  5.   

    /// <summary>
    /// 获取用户集合
    /// </summary>
    /// <param name="sndId">主辖区</param>
    /// <param name="trdId">一级辖区</param>
    /// <param name="n">每页显示记录数</param>
    /// <param name="m">当前页数</param>
    /// <param name="num">总记录数</param>
    /// <returns>用户集合</returns>
    public AccountModel GetAccounts(int sndId, int trdId, int n, int m, out int num)
    {
    string spString = "GetAccounts";
    string[] tables = new string[] { ACCOUNT_TABLE }; SqlParameter[] parms = SqlHelperParameterCache.GetSpParameterSet(AccessCommon.ConnectionString, spString);
    parms[0].Value = sndId;
    parms[1].Value = trdId;
    parms[2].Value = n;
    parms[3].Value = m; AccountModel accountModel = new AccountModel();
    SqlHelper.FillDataset(AccessCommon.ConnectionString, CommandType.StoredProcedure, spString, accountModel, tables, parms);
    num = (int)parms[4].Value; return accountModel;
    }说明:
    spString:你的存储过程的名称
    params:你存储过程的参数集合(注意位置要一一对应)最好是看微软的SqlHelper的帮助,里面有很详细的说明
      

  6.   

    我改了这样,我将AddUser功能函数放在注册页面的后台代码里面.
    运行的时候就出现以下错误:
    System.Data.SqlClient.SqlException: 无法将 NULL 值插入列 'UserID',表 'ExamSystem.dbo.Users';该列不允许空值。INSERT 失败。语句已终止。
    -----------------------------------------------------------------------
    代码如下: private void AddUsers(string username,string password,string birth,string email,int roleid)
    {

    //try
    //{
    SqlParameter usernamePram=new SqlParameter("@username",SqlDbType.VarChar,50);
    usernamePram.Value=username;
    SqlParameter passwordPram=new SqlParameter("@password",SqlDbType.VarChar,50);
    passwordPram.Value=password;
    SqlParameter birthPram=new SqlParameter("@birth",SqlDbType.DateTime);
    birthPram.Value=birth;
    SqlParameter emailPram=new SqlParameter("@email",SqlDbType.VarChar,50);
    emailPram.Value=email;
    SqlParameter roleidPram=new SqlParameter("@roleid",SqlDbType.Int);
    roleidPram.Value=roleid;
            SqlHelper.ExecuteNonQuery(conn,CommandType.StoredProcedure,"INSERT_USERS",usernamePram,passwordPram,birthPram,emailPram,roleidPram);
     //return i;
    // }
    //catch(Exception)
    //{
    // Response.Write("发生异常错误!");
    // } }
    private void Register_Click(object sender, System.EventArgs e)
    { //初始化业务层接口
            UserDB user=new UserDB();
     
    string username=Reg_UserName.Text.Trim();
    string password=Reg_Password.Text.Trim();
    string birth=Birth.Text.Trim();
    string email=Email.Text.Trim();
    int roleid=1;
    //SqlParameter[] storedParams=new SqlParameter[5];
    //storedParams=SqlHelperParameterCache.GetCachedParameterSet(conn,"INSERT_USERS");
    //storedParams[0].Value=username;

    //storedParams[1].Value=password;
    // storedParams[2].Value=birth;
    // storedParams[3].Value=email;
    // storedParams[4].Value=roleid;
    if (password==Reg_RePassword.Text)
    {
    AddUsers(username,UserDB.Encrypt(password),birth,email,roleid);
    Response.Write("注册成功!");
    }
    else
    {
    Response.Write("注册失败!");
    }  
     
    }
      

  7.   

    将数据库的UserID列设为允许空即可!要不你的UserID必须要有值,才可以插入数据库
      

  8.   

    我搞错了,可以插入了!
    To:lhcoolhacker(hugh-lin)你的QQ多少,我加你讨论好不?