将值从数据库返回到 WebMethod

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


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


过程 getDuplicate 是一个简单的选择,用于检查 lvl 值是否已经存储在数据库中。而InsertObject 程序则将值插入到数据库中。如果 value(lvl) 存在,则返回该值的 ID 并存储在 Count 整数中。


问题是如果 Count 返回 id 号,则 if 语句有效,如果数据库中没有值 Count 就不会接收任何值,并且过程失败并直接进入代码的 catch 部分。


我认为当数据库中没有值时,它的返回类型存在问题。它不是 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;

getDuplicate 过程


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


慕斯王
浏览 181回答 1
1回答

千万里不及你

请按如下方式更改您的 GetDuplicate 过程。它总是会返回一个值。CREATE PROCEDURE [dbo].[GetDuplicate]@name nvarchar(20)ASBEGIN    DECLARE @duplicateCount int    SELECT @duplicateCount=count(*) FROM [dbo].[employee] WHERE name = @name    RETURN @duplicateCountEND
打开App,查看更多内容
随时随地看视频慕课网APP