0
ALTER PROCEDURE tableuser
    -- Add the parameters for the stored procedure here
    @userName varchar(50)
AS
IF EXISTS(SELECT 'True' FROM tbl_user WHERE userName = @userName)
BEGIN
  --This means it exists, return it to ASP and tell us
  SELECT 'This record already exists!'
END
ELSE
BEGIN
  --This means the record isn't in there already, let's go ahead and add it
  SELECT 'Record Added'
  INSERT into tbl_user(userName) VALUES(@username)
END

これはSQLサーバー管理スタジオの私のコードで、以下はC#コードです:

protected void Button1_Click(object sender, EventArgs e)
{
    SqlCommand cmd = new SqlCommand("tableuser", conn);
    conn.Open();
    SqlParameter param = new SqlParameter();
    cmd.Parameters.AddWithValue("@userName", uname.Text);
    param.Value = uname.Text;

    cmd.Parameters.Add(param);

    SqlDataReader reader = cmd.ExecuteReader();

    if (reader.HasRows)
    {
       Response.Write("Username exists");
    }
    else
    {
        cmd.Parameters.AddWithValue("@userName", uname.Text);
        cmd.CommandType = System.Data.CommandType.StoredProcedure;
        conn.Open();
        cmd.ExecuteNonQuery();
        Response.Write("Successfully saved...!!!");
        conn.Close();
    }
}

}

エラーが発生します: プロシージャまたは関数 'tableuser' には、指定されていないパラメーター '@userName' が必要です。

4

1 に答える 1

0

これはうまくいくはずです:

conn.Open();
var cmd = new SqlCommand("tableuser", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@userName", uname.Text);

var rdr = cmd.ExecuteReader();

rdr.Read();
Response.Write(rdr.GetString(0));
conn.Close();
于 2013-10-28T14:19:56.630 に答える