private SqlParameter p;
private ArrayList li=new ArrayList();#region ** 添加参数
//添加 Input 类型参数
//参数 2 个:参数名,参数值
public void AddInputParam(string strName,object strValue)
{
p=new SqlParameter();
p.ParameterName=strName.Trim();
p.Value=strValue;
p.Direction=ParameterDirection.Input; li.Add(p);
}//上面是把参数放入数组的方法 调用这个方法先把参数保存//例子
public DataSet getDs(string strTop)
{
    p.Clear();
    AddInputParam("@Top", strTop); //这里strTop是传入的参数
    DataSet ds = SqlComd.CreateDataSet("存储过程名", p, "返回的表名");
    p.Clear();
    return ds;
}
***********************************************************************************
//有参数存储过程的 DataSet 对象
public static DataSet CreateDataSet(string spName,DbParameters p,string tblName)
{
DataSet ds=new DataSet();
SqlDataAdapter comdAdapter=new SqlDataAdapter(spName,DbConn.SqlConn);
comdAdapter.SelectCommand.CommandType=CommandType.StoredProcedure;
    
if(p.Length>0)
{
for(int i=0;i<p.Length;i++)
{
SqlParameter parm=(SqlParameter)p[i];
comdAdapter.SelectCommand.Parameters.Add(parm);
}
}
    
comdAdapter.Fill(ds,tblName);
DbConn.SqlConn.Close();
comdAdapter.Dispose();
    
return ds;
}
//我能提供的帮助就这样了...这其实不光1 2句话能说全的 是从逻辑层 数据访问层 数据库存储过程的一个整体访问流程。上面的有点改动 有Bug你自己稍微修改下。
LZ说的RunProcedure我没有听说过。

解决方案 »

  1.   

    string mysql = "insert into Fatie_Tables(Fatie_Title,Fatie_Boby,User_Name,Fatie_Time,Fatie_IsLook,Fatie_Isceam,Fatie_Isfix,Fenglei_ID,Fatie_Upfile,Fatie_Showqianming)VALUES(@chuqu,@neirong,'" + yonghuming.Text + "','" + shijian + "',0,0,0,'" + Session["id"] + "','" + Session["filename"].ToString() + "','" + isqianming + "')";
                    mycomm = new SqlCommand(mysql, myconn);
                    mycomm.Parameters.Add(new SqlParameter("@chuqu", SqlDbType.NVarChar, 50));
                    mycomm.Parameters["@chuqu"].Value = htmlencode(zhuti1);                mycomm.Parameters.Add(new SqlParameter("@neirong", SqlDbType.NText));
                    mycomm.Parameters["@neirong"].Value = Info.Value;
      

  2.   

    用反射循环赋值多省事!而且参数类型不是必添参数,俺从来都不写,统统按字符串处理,反正是 SQL!!!
      

  3.   

    各位是不是有一个RunProcedure方法啊?可不可以用这种方法啊!!!
      

  4.   

    这个方法 ?
     public int runProc(string procedureName, SqlParameter[] sqlPrams)
        {
            SqlCommand sqlComm = CreateCommand(procedureName, sqlPrams);
            try
            {            sqlComm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message, ex);
            }
            return (int)sqlComm.Parameters["ReturnValue"].Value;    }
        private SqlCommand CreateCommand(string ProcedureName, SqlParameter[] SqlPrams)
        {
            //打开数据库连接
            this.myOpen();        SqlCommand Sqlcmd = new SqlCommand(ProcedureName, this.Connection);
            Sqlcmd.CommandType = CommandType.StoredProcedure;        // 添加储存过程参数
            if (SqlPrams != null)
            {
                foreach (SqlParameter Sqlparameter in SqlPrams)
                {
                    Sqlcmd.Parameters.Add(Sqlparameter);
                }
            }        //  返回参数
            Sqlcmd.Parameters.Add(
                new SqlParameter("ReturnValue", SqlDbType.Int, 4,
                ParameterDirection.ReturnValue, false, 0, 0,
                string.Empty, DataRowVersion.Default, null));        return Sqlcmd;
        }