【问题标题】:Stored Procedure with IsIDenity and cmd.Parameters.Add带有 IsIDenity 和 cmd.Parameters.Add 的存储过程
【发布时间】:2011-03-12 20:06:22
【问题描述】:

我正在为自己创建一个 ASP.NET Wiki 来跟踪我在 C# 和其他语言中获得的知识。

我创建了一个存储过程来将一个类别插入数据库,该数据库有两个字段 C_ID(int) 和 Category(varchar 25)。在我的 ASP 页面中,没有 C_ID 字段,它会自动递增 IsIdentiy = true;

当我尝试执行它时,它失败了。处理此问题的最佳方法是什么?

代码:

ALTER PROCEDURE dbo.InsertCategory
 @ID int,
 @CATEGORY varchar(25)
 AS

INSERT INTO Wiki
(C_ID, C_Category)
Values  (@ID, @CATEGORY)
    /* SET NOCOUNT ON */
    RETURN

我是否错过了要从 .aspx 页面插入的内容? 尝试 {

            //create a command object identifying the Stored Procedure
            SqlCommand cmd = new SqlCommand("InsertCategory", conn);

            //Set the command type
            cmd.CommandType  = CommandType.StoredProcedure;

            cmd.Parameters.Add(new SqlParameter("Category", txtAddCatagory));

            cmd.ExecuteNonQuery();



        }

【问题讨论】:

    标签: c# asp.net sql stored-procedures


    【解决方案1】:

    只需从插入中省略id。如果您正确配置了identity,数据库将负责增加数量。例如:

    GO
    ALTER PROCEDURE dbo.InsertCategory(@CATEGORY varchar(25))
    AS
    INSERT INTO Wiki (C_Category) Values (@CATEGORY)
    GO
    

    要验证identity 设置是否正确,如果您编写表格脚本,C_id 列应如下所示;

    [C_id] [int] IDENTITY(1,1) NOT NULL,
    

    甚至更好:

    [C_id] [int] IDENTITY(1,1) PRIMARY KEY,
    

    【讨论】:

    • 我得到了那个部分。我是否错过了要在我的 asp 页面中插入的内容?
    • try { //创建一个标识存储过程的命令对象 SqlCommand cmd = new SqlCommand("InsertCategory", conn); //设置命令类型 cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new SqlParameter("Category", txtAddCatagory)); cmd.ExecuteNonQuery() }
    • @jpavlov: 尝试用@添加参数,比如new SqlParameter("@Category" ?
    【解决方案2】:

    所以你得到了一个你不能插入到标识列的异常,对吧?诀窍是不要在插入语句中指定标识列,因为它会自动填充... ;)

    ALTER PROCEDURE dbo.InsertCategory @CATEGORY varchar(25) AS
    
    INSERT INTO Wiki (C_Category) Values (@CATEGORY) /* SET NOCOUNT ON */ RETURN
    

    【讨论】:

      猜你喜欢
      • 2015-12-17
      • 1970-01-01
      • 2011-08-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 2012-11-20
      • 2015-04-22
      • 2012-01-12
      相关资源
      最近更新 更多