日期:2014-05-17  浏览次数:20554 次

新手散分:在企业库中用UpdateDataSet+存储过程怎么传存储过程的参的?
想实现的功能:实现在线发消息功能,消息发送后不立即存入数据库,而是缓存住等过期后再一起插入数据库。我在网上找就只发现有两种方法可以实现,UpdateDataSet就是期中一种。
因为之前没接触过这个方法,所以找了这个方法来看一下,自己做了个例子试了试,结果报存储过程没传参的错。
疑问:在UpdateDataSet中不是自动根据列名来对应参数插入的,那该怎么加的?
在网上找了此资料但都不是很明了,所以来求救。

    /// <summary>
        /// 使用DataSet来更新数据库
        /// </summary>
        /// <param name="ds">是一个强类型实体</param>
        /// <param name="tableName"></param>
        /// <returns></returns>
        public static int UpdateDataSet(MsnDS ds, string tableName)
        {
            SqlCommand  AddMsn=(SqlCommand)GetStoredProcCommand(SPAddMsn);
            ds.Msn.AddMsnRow(-1, "001", DateTime.Now, DateTime.Now, "002", "tes2t", "te2st", 0);
            AddMsn.Parameters.Add("@Msn_ID",SqlDbType.Int,8,"Msn_ID");
            AddMsn.Parameters.Add("@Msn_Receiver_ID", SqlDbType.VarChar, 16, "Msn_Receiver_ID");
            AddMsn.Parameters.Add("@Msn_Send_Date", SqlDbType.DateTime, 20, "Msn_Send_Date");
            AddMsn.Parameters.Add("@Msn_Send_ID", SqlDbType.VarChar, 16, "Msn_Send_ID");
            AddMsn.Parameters.Add("@Msn_Title", SqlDbType.NVarChar, 20, "Msn_Title");
            AddMsn.Parameters.Add("@Msn_Content", SqlDbType.NVarChar, 500, "Msn_Content");
            AddMsn.UpdatedRowSource = UpdateRowSource.None;
            //这上面的方法是我模仿别人写的,有错的。


            return Common.DataBaseFacade.UpdateDataSet(ds, tableName, AddMsn, GetStoredProcCommand(SPUpdateMsn), GetStoredProcCommand(SPDelMsn));
        }

        /// <summary>
        /// 获得一个存储过程DbCommand
        /// </summary>