1

このコードを実行しようとすると、次のエラーが発生します。しかし、私はそれをコマンドに追加しました。誰かが見落としたステップを指摘できますか?ありがとう。

プロシージャまたは関数'usps_getContactDetails'には、指定されていないパラメータ'@aspContactID'が必要です。

SqlConnection conn = new SqlConnection(GetConnString()); SqlCommand cmd = new SqlCommand( "usps_getContactDetails"、conn);

        SqlParameter parmContactID = new SqlParameter("@aspContactID", Convert.DBNull);
        cmd.Parameters.Add(parmContactID);
        parmContactID.Direction = ParameterDirection.Input;

        SqlDataAdapter da = new SqlDataAdapter();
        da.SelectCommand = cmd;

        conn.Open();
        DataSet cusDS = new DataSet();
        da.Fill(cusDS, "Contacts");
4

2 に答える 2

0

SqlCommandを実行してストアドプロシージャを呼び出すときは、暗黙的にをに設定する必要がSqlCommandありますStoredProcedure

using(SqlConnection con = new SqlConnection(""))
{
  //Set up your command
  SqlCommand cmd = new SqlCommand("[Procedure]", con);
  cmd.CommandType = CommandType.StoredProcedure;
  //Add your parameters
  cmd.Parameters.AddWithValue("@aspContactID", "");
  //Declare your data adapter
  SqlDataAdapter sda = new SqlDataAdapter(cmd);
  DataSet ds = new DataSet();
  sda.Fill(ds, "Contacts");
}

上記のフォーマットに従ってください、そしてあなたは大丈夫であるはずです。2つの理由のいずれかでプロシージャが機能していません。この場合、コードを機能させるコード行が欠落しているcmd.CommandType = CommandType.StoredProcedure;か、パラメータがDBNullプロシージャであるため、そのパラメータが認識されていません。ストアドプロシージャでnullまたは空になる可能性のあるパラメータがある場合は、次の手順を実行します。

Create Procedure [dbo].[Example]

@Test as Varchar(100) = ''

As
于 2012-12-14T14:27:10.277 に答える
0
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    private void OpenCon()
    {
        con = new SqlConnection(ConfigurationManager.ConnectionStrings["DbPrepConnectionString"].ConnectionString.ToString());
        try
        {
            con.Open();
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }
    }



    private void SubmitData()
    {
        OpenCon();
        string sp = "sp_InsertRecord";
        cmd = new SqlCommand(sp, con);

        cmd.CommandType = CommandType.StoredProcedure;
        //add parameters...
        cmd.Parameters.Add(new SqlParameter("@Name", SqlDbType.VarChar, 50));
        cmd.Parameters.Add(new SqlParameter("@UserId", SqlDbType.Int));
        cmd.Parameters.Add (new SqlParameter ("@ProductName",SqlDbType .VarChar,50));
        cmd.Parameters.Add(new SqlParameter("@Price", SqlDbType.Money));

        //set paarameters....
        cmd.Parameters["@Name"].Value = txtName.Text.ToString();
        cmd.Parameters["@UserId"].Value = txtUserId.Text.ToString();
        cmd.Parameters["@ProductName"].Value = txtProductName.Text.ToString();
        cmd.Parameters["@Price"].Value = txtPrice.Text.ToString();
        cmd.ExecuteNonQuery();
        lblMessage.Text = "data inserted successfully";
    }

    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        SubmitData();
    }

    private void FindData()
    {
        OpenCon();
        string s = "sp_FindRecord";
        cmd = new SqlCommand(s, con);
        cmd.Parameters.Add(new SqlParameter("@Id", SqlDbType.Int));
        cmd.Parameters["@Id"].Value = txtName.Text.ToString();
        cmd.CommandType = CommandType.StoredProcedure;
        ad = new SqlDataAdapter(cmd);
        ds = new DataSet();
        ad.Fill(ds);
        dt = ds.Tables[0];
        currow = 0;

        FillControls();

    }

    private void FillControls()
    {
        txtOrderId.Text = dt.Rows[currow].ItemArray[0].ToString();
        txtUserId.Text = dt.Rows[currow].ItemArray[1].ToString();
        txtProductName.Text = dt.Rows[currow].ItemArray[2].ToString();
        txtPrice.Text = dt.Rows[currow].ItemArray[3].ToString();
    }

    protected void btnFind_Click(object sender, EventArgs e)
    {
        FindData();
    }

}

} '

于 2013-05-16T08:21:45.877 に答える