parametername对应的是存储过程中参数的名称
sourcecolumn 对应DataSet 的源列的名称
因为sqlparameter和table之间的连结可以是双向的

解决方案 »

  1.   

    这个构造函数返回一个 SqlParameter 对象的实例
    public SqlParameter(
       string parameterName,  //参数名
       SqlDbType dbType,   //枚举类型,参数的 数据类型 如  SqlDbType.VarChar,SqlDbType.Int
       int size,   /*参数的 Size (:D,hehe,废话) 。
        和 dbType相关,如数据库中相应字段为VARCHAR(255),则这两个参数分别为 
    SqlDbType.VarChar , 255
    如果数据库中相应字段为 INT,则相应为 SqlDbType.Int, 4 ... */
       ParameterDirection direction, //枚举类型 ,ParameterDirection.Output用于构造输出参数,ParameterDirection.Input ...
       bool isNullable,  //
       byte precision,
       byte scale,
       string sourceColumn,
       DataRowVersion sourceVersion,
       object value
    );给你一个完整调用过程的例子,From PetShop 1.5 public int IdentityValidate(string username,string password)
    {
    int intReturn=0;
    Database data = new Database();
    SqlParameter[] prams = {
       data.MakeInParam("@UserName",    SqlDbType.VarChar, 30, username),
       data.MakeInParam("@Password",    SqlDbType.VarChar, 30, password),
       data.MakeOutParam("@UserId", SqlDbType.Int, 4)
       }; ExecuteNonQuery("upLogin", prams);  
    intReturn = (int)prams[2].Value;  
    return intReturn;
    } private SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value) 
    {
    return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
    }

    private SqlParameter MakeOutParam(string ParamName, SqlDbType DbType, int Size) 
    {
    return MakeParam(ParamName, DbType, Size, ParameterDirection.Output, null);
    }

    private SqlParameter MakeParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value) 
    {
    SqlParameter param; if(Size > 0)
    param = new SqlParameter(ParamName, DbType, Size);
    else
    param = new SqlParameter(ParamName, DbType); param.Direction = Direction;
    if (!(Direction == ParameterDirection.Output && Value == null))
    param.Value = Value; return param;
    } private SqlCommand CreateCommand(SqlConnection conn,string procName, SqlParameter[] prams) 
    {
    if(conn.State != ConnectionState.Open)
    conn.Open(); SqlCommand cmd = new SqlCommand(procName, conn);
    cmd.CommandType = CommandType.StoredProcedure; if (prams != null) 
    {
    foreach (SqlParameter parameter in prams)
    cmd.Parameters.Add(parameter);
    }

    return cmd;
    }
    private void ExecuteNonQuery(string procName, SqlParameter[] prams) 
    {
    SqlCommand cmd = new SqlCommand();

    using(SqlConnection con = new SqlConnection(CONN_STRING))
    {
    cmd = CreateCommand(con,procName, prams);
    cmd.ExecuteNonQuery();
    }
    return;
    }
      

  2.   

    第一个函数错了,应该是:public int IdentityValidate(string username,string password)
    {
    int intReturn=0;
    SqlParameter[] prams = {
       MakeInParam("@UserName",    SqlDbType.VarChar, 30, username),
       MakeInParam("@Password",    SqlDbType.VarChar, 30, password),
       MakeOutParam("@UserId", SqlDbType.Int, 4)
       }; ExecuteNonQuery("upLogin", prams);  
    intReturn = (int)prams[2].Value;  
    return intReturn;
    }
      

  3.   

    PetShop的例子。
    个人觉得PetShop1.5和2.0的两个Database类都够精当,绝对的初学者必修课。