为了账号安全,请及时绑定邮箱和手机立即绑定

将值从数据库返回到 WebMethod

将值从数据库返回到 WebMethod

C#
慕斯王 2021-09-19 16:43:34
我需要在文本框中输入一些值,然后将其保存到数据库中。但如果存在重复值,则不得保存该值。基本上,字符串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
查看完整描述

1 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

请按如下方式更改您的 GetDuplicate 过程。它总是会返回一个值。


CREATE PROCEDURE [dbo].[GetDuplicate]

@name nvarchar(20)

AS

BEGIN

    DECLARE @duplicateCount int

    SELECT @duplicateCount=count(*) FROM [dbo].[employee] WHERE name = @name

    RETURN @duplicateCount

END


查看完整回答
反对 回复 2021-09-19
  • 1 回答
  • 0 关注
  • 180 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信