繁体   English   中英

未将值插入DB,返回0

[英]Not inserting value to DB, returning 0

我已经尝试过所有我能想到的。 我正在创建和对象,然后将其插入SQL Server数据库中。 但是对于这种特殊的心情,它不起作用(我从其他有效的模块中回收了)。

public int Insert(int userId, int refNum, string name, string position, string lastPlace, string duration, int currentEmp,
                  int rehire, string reason, string areaStr, string areaWeak, string satisfac, string reasonSep, int form1, int form2,
                  int form3, int form4, int form5, int form6, int form7, int form8, int form9, int form10, int form11, int form12, int form13, int form14)
{
    int sumForm = form1 + form2 + form3 + form4 + form5 + form6 + form7 + form8 + form9 + form10 + form10 + form11 + form12 + form13 + form14;

    // SQL Command para llamar el stored procedure
    SqlCommand comando = new SqlCommand("dbo.[Referencia_Insert]", base.Db);

    // Title
    SqlParameter spUser = new SqlParameter("@userId", System.Data.SqlDbType.Int);
    spUser.Value = userId;
    comando.Parameters.Add(spUser);

    SqlParameter spRef = new SqlParameter("@refNum", System.Data.SqlDbType.Int);
    spRef.Value = refNum;
    comando.Parameters.Add(spRef);

    ....

    SqlParameter spSumForm = new SqlParameter("@sumForm", System.Data.SqlDbType.Int);
    spSumForm.Value = sumForm;
    comando.Parameters.Add(spSumForm);

    HttpContext.Current.Response.Write("<SCRIPT LANGUAGE='JavaScript'>alert('checa esto: "+base.ExecuteScalar(comando)+"')</SCRIPT>");

    // Ejecuta la consulta
    return base.ExecuteScalar(comando);
}

警报仅返回0。没有错误,没有任何异常。

这是存储过程:

ALTER PROCEDURE [dbo].[Referencia_Insert]
    @userID int, 
    @refNum int, 
    @name varchar(MAX), 
    @position varchar(MAX), 
    @lastPlace varchar(MAX), 
    @duration varchar(MAX), 
    @currentEmp int, 
    @rehire int, 
    @reason varchar(MAX), 
    @areaStr varchar(MAX), 
    @areaWeak varchar(MAX), 
    @satis varchar(MAX), 
    @reasonSep varchar(MAX), 
    @f1 int, @f2 int, @f3 int, @f4 int, @f5 int, @f6 int, 
    @f7 int, @f8 int, @f9 int, @f10 int, @f11 int, @f12 int, 
    @f13 int, @f14 int, 
    @sumForm int
WITH EXEC AS CALLER
AS
BEGIN
    SET NOCOUNT ON;

    INSERT INTO [JobApplication].[dbo].[tbl_references] 
           ([userId], [refNum],[name], [position], [lastPlace], [duration],
            [currentEmp], [reHire], [reason], [areaStr], [areaWeak],
            [satisfac], [reasonSep],  
            [form1], [form2], [form3], [form4], [form5], [form6], [form7],
            [form8], [form9], [form10], [form11], [form12], [form13], [form14], [totalForm])
    VALUES (@userId, @refNum, @name, @position, @lastPlace, @duration,
            @currentEmp, @rehire, @reason, @areaStr, @areaWeak,
            @satis, @reasonSep,
            @f1, @f2, @f3, @f4, @f5, @f6, @f7,
            @f8, @f9, @f10, @f11, @f12, @f13, @f14, @sumForm)

    SELECT @@IDENTITY              
END

由于某种原因,它只在ExecuteScalar返回0。 为什么? 我不明白,因为每次我尝试显示这些值时,它们都会显示出来。 我在本节中用一些任意值来调用它。

它应该在插入任何内容时返回1,但我得到的只是0。

protected void btnSend_Click(object sender, EventArgs e)
{
    ASF.HC.JobApplication.BO.Referencia refo = new ASF.HC.JobApplication.BO.Referencia();
    refo.Insert(370,1,"pruebini","tQM","la vida","la vida",1,1,"se fue","fuerza","debil","eu","holini",1,2,3,4,5,6,7,8,9,10,11,12,13,14);
}

EB。

您缺少命令类型

SqlCommand comando = new SqlCommand("dbo.[Referencia_Insert]", base.Db);
comando.CommandType = CommandType.StoredProcedure

这样,ADO.NET将执行此查询,然后您可以从SELECT @@IDENTITY获取值。

exec [dbo].[Referencia_Insert] ......

另一方面,当未指定命令类型时,ADO.NET将执行动态查询,例如

exec sp_executesql N'[dbo].[Referencia_Insert]', N'.............'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM