Проверить повторяющееся значение в базе данных

Прежде чем сохранить значение из TextBox в базу данных, мне нужно проверить, существует ли уже это значение в базе данных.

Это код TextBox:

 <tr>
        <td>
            <asp:Label ID="lblProductConstruction" runat="server" Text="Product Construction:" Font-Names="Open Sans"></asp:Label></td>
        <td>
            <asp:TextBox ID="txtProductConstruction" runat="server"  Font-Names="Merriweather" margin-Left="100px" ></asp:TextBox><br />
        </td>
    </tr>
    <tr>

Кнопка Сохранить:

<input type="button" class="button" id="myButton" value="Save"/>

Ajax при нажатии кнопки:

 $(function () {

             $('#myButton').on('click', function () {

                 var lvl = $('#MainContent_txtProductConstruction').val()

                 $.ajax({
                     type: "POST",
                     url: "NewProductConstruction.aspx/GetCollection",

                     data: JSON.stringify({'lvl': lvl }),

                     contentType: "application/json; charset=utf-8",
                     dataType: "json",

                     success: function (response) {
                         alert("Saved successfully.");
                         console.log(response);
                         location.reload(true);

                     },
                     error: function (response) {
                         alert("Not Saved!");
                         console.log(response);
                         location.reload(true);
                     }

                 });

             });

         });

WebMethod, который принимает значение и отправляет этот параметр(@LvlName) в базу данных:

[WebMethod(EnableSession = true)]
        public static void GetCollection(string lvl)
        {

            //string strMsg = "";
            string conn = ConfigurationManager.ConnectionStrings["Connection"].ConnectionString;
            using (SqlConnection connection = new SqlConnection(conn))
                try
                {
                    connection.Open();
                    SqlCommand cmdProc = new SqlCommand("InsertLvlName", connection);
                    cmdProc.CommandType = CommandType.StoredProcedure;
                    cmdProc.Parameters.AddWithValue("@LvlName", lvl);
                    cmdProc.ExecuteNonQuery();
                    //strMsg = "Saved successfully.";

                }
                catch
                {

                }
                finally
                {
                    connection.Close();

                }

            return;

        }

Мне нужна помощь, чтобы проверить две вещи: 1) Чтобы увидеть, пусто ли текстовое поле, и если это так, то не сохраняйте значение в базе данных и не показывайте предупреждение о том, что это поле должно иметь какое-то значение.

2) Мне нужна какая-то проверка, если такое же значение поля уже есть в базе данных, то не сохранять его.

Заранее спасибо !


person freej17    schedule 03.07.2018    source источник


Ответы (2)


Это простая проверка, которую мы можем сделать с помощью jquery

if (inp.val().length > 0) {
    //do something
}
else
{
alert("Enter Value")
}

Полный пример: -

 $(function () {

         $('#myButton').on('click', function () {

             var lvl = $('#MainContent_txtProductConstruction').val()
                if(lvl.length>0)
                {
             $.ajax({
                 type: "POST",
                 url: "NewProductConstruction.aspx/GetCollection",

                 data: JSON.stringify({'lvl': lvl }),

                 contentType: "application/json; charset=utf-8",
                 dataType: "json",

                 success: function (response) {
                     alert("Saved successfully.");
                     console.log(response);
                     location.reload(true);

                 },
                 error: function (response) {
                     alert("Not Saved!");
                     console.log(response);
                     location.reload(true);
                 }
             });
             }
            else
            {
            alert("Please enter Value")
            }
         });

     });

Вторая часть:-

SqlCommand checkvalue = new SqlCommand("SELECT COUNT(*) FROM [TableName] WHERE ([ColumnNameUser] = @user)" , connection);
checkvalue.Parameters.AddWithValue("@user", lvl);
int UserExist = (int)checkvalue.ExecuteScalar();

if(UserExist > 0)
{
   //Username exist
}
else
{
   //Username doesn't exist.
}

Справочная ссылка

Если вы хотите, чтобы Sp проверил, то: -

Отредактируйте его на основе вашего имени и имен полей.

CREATE PROCEDURE InsertName
(
  @username varchar(25), 
  @userpassword varchar(25)
)
AS
IF EXISTS(SELECT 'True' FROM MyTable WHERE username = @username)
BEGIN
  --This means it exists, return it to ASP and tell us
  SELECT 'This record already exists!'
END
ELSE
BEGIN
  --This means the record isn't in there already, let's go ahead and add it
  SELECT 'Record Added'
  INSERT into MyTable(username, userpassword) VALUES(@username, @userpassword)
END
person Hitesh Anshani    schedule 03.07.2018
comment
Я думаю, мне нужно это в ajax, поэтому, если нет значения, пустая строка не будет сохранена в базе данных. - person freej17; 03.07.2018
comment
Просто, если значение есть, ajax будет вызывать другого, просто предупредите пользователя @freej17 - person Hitesh Anshani; 03.07.2018
comment
Это работает для первой части проблемы, спасибо! - person freej17; 03.07.2018
comment
Найдите вторую часть также @freej17 - person Hitesh Anshani; 03.07.2018

Сначала вы, вероятно, захотите использовать jQuery, чтобы проверить, пусто ли ваше текстовое поле, и если это так, то не запускайте вызов веб-метода. См. раздел Доступ к элементам управления Asp.net с помощью jquery (все параметры). для вызова элементов управления asp.net из jQuery

if ($('#<%= myTextBox.ClientID %>').val().length == 0) 
{
   alert("Text Box is empty");
}
else
{
    ///make ajax call to webmethod...
}

Боковое примечание, что вы хотите, чтобы произошло, если пользователь вводит пробел в текстовое поле?

Затем вы можете либо позвонить, чтобы вставить, либо обновить запись в БД, чтобы не вставлять дубликаты. Или я, вероятно, хотел бы выбрать все данные из базы данных, а затем сравнить данные, чтобы увидеть, существует ли запись из текстового поля в базе данных.

Этот ответ здесь должен быть полезен обновление С#, если запись существует вставить новую запись

Что-то вроде этого должно дать вам нужный результат:

SqlCommand cmdCount = new SqlCommand("SELECT * from Table WHERE TextboxValue= @textBoxValue", myConnection);
cmdCount.Parameters.AddWithValue("@textBoxValue", _textBoxValue);
int count = (int)cmdCount.ExecuteScalar();

if (count > 0)
{
    ///Run Insert statement
}
person Fuzzybear    schedule 03.07.2018
comment
Я думал использовать IF EXIST в процедуре хранения перед процедурой вставки. И если есть повторяющееся значение, то отправить какую-то ошибку и не вставлять никаких значений? - person freej17; 03.07.2018