不在表中插入值

本文关键字:插入 | 更新日期: 2023-09-27 18:31:39

我编写了一个用于在表中插入值的存储过程。请参阅SP供您参考:-

ALTER PROCEDURE [dbo].[AddingpagesinGrid] (@page_title       NVARCHAR(100), 
                                 @page_description NVARCHAR(max), 
                                 @meta_title       NVARCHAR(255), 
                                 @meta_keywords    NVARCHAR(255), 
                                 @meta_description NVARCHAR(1000), 
                                 @Active           BIT) 

如 开始 将无计数设置为打开;

  BEGIN 
      INSERT INTO [tbl_pages] 
                  ([page_title], 
                   [page_description], 
                   [meta_title], 
                   [meta_keywords], 
                   [meta_description], 
                   [active]) 
      VALUES      ( @page_title, 
                    @page_description, 
                    @meta_title, 
                    @meta_keywords, 
                    @meta_description, 
                    @Active) 
  END 
  SELECT [page_title], 
         [page_description], 
         [meta_title], 
         [meta_keywords], 
         [meta_description], 
         [active] 
  FROM   tbl_pages 

结束

另请参阅代码隐藏:-

protected void btnAdd_Click(object sender, EventArgs e)
    {
        conn.Open();
        var cmd = new SqlCommand("AddingPagesInGrid", conn);
        cmd.Parameters.AddWithValue("@page_title", txtPageTitle.Text);
        cmd.Parameters.AddWithValue("@page_description", txtPagedesc.Text);
        cmd.Parameters.AddWithValue("@meta_title", txtmetatitle.Text);
        cmd.Parameters.AddWithValue("@meta_keywords", txtMetakeywords.Text);
        cmd.Parameters.AddWithValue("@meta_description", ddlActiveInactive.SelectedIndex);
        cmd.ExecuteNonQuery();
        conn.Close();
        ScriptManager.RegisterStartupScript(this, this.GetType(), "alert", "alert('User details saved sucessfully');window.location ='csrpage.aspx';", true);
    }

它不起作用并给我错误,因为

"过程或函数'添加页面网格'需要参数'@page_title',但未提供。

不在表中插入值

我认为您忘记设置CommandType属性,并且程序将"AddingPagesInGrid"视为Text这是CommandType的默认值。

只需添加;

cmd.CommandType = CommandType.StoredProcedure;

并使用using语句来处置您的SqlConnectionSqlCommand

using(SqlConnection conn = new SqlConnection(conString))
using(SqlCommand cmd = conn.CreateCommand())
{
}

请不要使用AddWithValue方法。它有时可能会产生意想不到的结果。使用.Add方法,否则它会重载。

阅读:我们可以停止使用AddWithValue()吗?