不在表中插入值

问题描述:

我写了一个存储过程,用于在表中插入值。请参阅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) 

AS BEGIN SET NOCOUNT ON;

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 

END

另请参见代码隐藏: -

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); 
    } 

它不工作,并给我误差

过程或函数'AddingPagesInGrid'需要参数'@page_title',它没有提供。

+0

“txtPageTitle.Text”的内容是什么? – CodeCaster 2014-11-24 13:13:52

+0

内容是指数据类型? – 2014-11-24 13:18:14

+0

不,内容。它的价值。 – CodeCaster 2014-11-24 13:18:54

我想你忘记设置你的CommandType property和程序认为你"AddingPagesInGrid"Text这是一个CommandType的默认值

只需添加;

cmd.CommandType = CommandType.StoredProcedure; 

并使用using statement来处置您的SqlConnectionSqlCommand

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

} 

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

阅读:Can we stop using AddWithValue() already?

+0

我在行后添加'var cmd = new SqlCommand(“AddingPagesInGrid”,conn);' – 2014-11-24 13:16:51

+0

现在我得到的错误为**程序或函数'AddingPagesInGrid'需要参数'@Active',它没有提供。** – 2014-11-24 13:18:59

+0

您能否描述它 – 2014-11-24 13:20:03