1

私は特にオブジェクト指向プログラミングと C# の初心者です。C#を学ぶために夜間学校に通っていますが、私の知識レベルは猿見猿道レベルです。ここにいくつかのコードといくつかの基本的な質問があります:


public static String InsertProduct(SqlConnection cnSQL, String strProductDesc, String strProductHS, String strManufacturer)
    {
        SqlCommand cmdSQL;
        Int32 intRetCode = 0;
        String strProductKey;


        if (cnSQL != null)
        {
            cmdSQL = new SqlCommand();
            cmdSQL.Connection = cnSQL;
            cmdSQL.CommandText = "uspInsertProduct";
            cmdSQL.CommandType = CommandType.StoredProcedure;

            cmdSQL.Parameters.Add(new SqlParameter("@ProductDesc", SqlDbType.NVarChar, 250));
            cmdSQL.Parameters["@ProductDesc"].Direction = ParameterDirection.Input;
            cmdSQL.Parameters["@ProductDesc"].Value = strProductDesc;

            ********************************
             Code removed for brevity
            *********************************

            cmdSQL.Parameters.Add(new SqlParameter("@ProductID", SqlDbType.NVarChar, 10));
            cmdSQL.Parameters["@ProductID"].Direction = ParameterDirection.Output;

            try
            {
                cmdSQL.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                intRetCode = -1;
            }
           ************Offending Code Start
           strProductKey = cmdSQL.Parameters["@ProductID"].ToString;
           ************Offend Code End
            cmdSQL.Parameters.Clear();
            cmdSQL.Dispose();
      }
            return strProductKey; 

    }    

このステートメント「cmdSQL.Parameters["@ProductID"].Direction = ParameterDirection.Output;」があると何が返されますか? レコード番号または実際のキー?

答えが実際のキーであると仮定すると、呼び出しルーチンに返すことができるように、変数の割り当てをどのように作成すればよいでしょうか?

ありがとう。

4

1 に答える 1

1

質問の最初の部分について:

実際の戻り値は、ストアド プロシージャによって決定されますuspInsertProduct。答えを見つけるには、SQL を調べて、そのストアド プロシージャの定義を確認する必要があります。

2 番目の部分:

ストアド プロシージャを呼び出した後、出力パラメーターの値を取得する必要があります。

try
{
    cmdSQL.ExecuteNonQuery();
    strProductKey = cmdSQL.Parameters["@ProductID"].Value;
}

...

return strProductKey;
于 2013-03-15T03:37:39.757 に答える