Мне нужно ввести какое-то значение в конец текстового поля и сохранить его в базе данных.
Но если есть повторяющееся значение, оно не должно быть сохранено.
По сути, строка lvl успешно передается в WebMethod из внешнего интерфейса через ajax.
Процедура getDuplicate является простым выбором, который проверяет, есть ли значение lvl, уже сохраненное в базе данных. А процедура InsertObject вставляет значение в базу данных.
Если значение (lvl) существует, то идентификатор этого значения возвращается и сохраняется в целом числе Count.
Проблема в том, что если Count возвращается с номером id, то если оператор работает,
и если в базе данных нет значений, 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