将值从数据库返回到 WebMethod

Returning values from database to WebMethod

我需要在文本框中输入一些值,然后将其保存到数据库中。 但是如果有重复的值则不能保存该值。

基本上,字符串 lvl 通过 ajax 从前端成功传递到 WebMethod。

过程 getDuplicate 是一个简单的 select,它检查数据库中是否已经存储了 lvl 的值。 InsertObject 过程将值插入数据库中。 如果值 (lvl) 存在,则该值的 ID 为 return 并存储在 Count 整数中。

问题是如果 Count 是 returned with id number 那么 if 语句有效, 如果数据库中没有值,则 Count 不会收到任何值,并且该过程将失败并直接进入代码的捕获部分。

我认为 returning 类型在数据库中没有值时存在问题。它不是 INT 之类的。 有人可以帮忙吗?

[WebMethod(EnableSession = true)]
            public static void GetCollection(string lvl)
            {

              string conn = ConfigurationManager.ConnectionStrings["Connection"].ConnectionString;
            using (SqlConnection connection = new SqlConnection(conn))

                try
                {
                    connection.Open();
                    SqlCommand cmdCount = new SqlCommand("getDuplicate", connection);
                    cmdCount.CommandType = CommandType.StoredProcedure;
                    cmdCount.Parameters.AddWithValue("@ObjekatName", lvl);
                    int count = (int)cmdCount.ExecuteScalar();

                    if (count > 0)
                    {

                    }
                    else
                    {
                        SqlCommand cmdProc = new SqlCommand("InsertObjekat", connection);
                        cmdProc.CommandType = CommandType.StoredProcedure;
                        cmdProc.Parameters.AddWithValue("@ObjekatName", lvl);
                        cmdProc.ExecuteNonQuery();
                        //strMsg = "Saved successfully.";
                    }

                }
                catch
                {


                }
                finally
                {
                    connection.Close();

                }

            return;

获取重复程序

ALTER PROCEDURE [dbo].[GetDuplicate]  

    @ObjekatName nvarchar(20)
    AS
    BEGIN

    SET NOCOUNT ON  
    SELECT TOP 1000 [ObjekatID]
      ,[ObjekatName]

  FROM [MyApp].[dbo].[Objekat]
  WHERE  ObjekatName = @ObjekatName
    END

请如下更改您的 GetDuplicate 过程。它总是 return 一个值。

CREATE PROCEDURE [dbo].[GetDuplicate]
@name nvarchar(20)
AS
BEGIN
    DECLARE @duplicateCount int
    SELECT @duplicateCount=count(*) FROM [dbo].[employee] WHERE name = @name
    RETURN @duplicateCount
END