将值从数据库返回到 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
我需要在文本框中输入一些值,然后将其保存到数据库中。 但是如果有重复的值则不能保存该值。
基本上,字符串 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