簡體   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