我需要在文本框中输入一些值,然后将其保存到数据库中。但如果存在重复值,则不得保存该值。基本上,字符串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
- 1 回答
- 0 关注
- 180 浏览
添加回答
举报
0/150
提交
取消