мой столбец таблицы sql принимает 0 в качестве значения

У меня есть две таблицы, одна из которых является таблицей участников со столбцами идентификатора члена, имени члена, фамилии члена. У меня есть еще одна таблица гостевых проходов с столбцами идентификатора гостевого прохода и идентификатора участника и даты выпуска.

У меня есть представление списка, в котором будут отображаться сведения о гостевых пропусках (т.е.), такие как имя участника и дата выпуска, и у меня есть два текстовых поля для ввода имени участника и даты выпуска.

Текстовое поле имени участника - это текстовое поле с автоматическим завершением, которое работает нормально....

но проблема в том, что когда я ввожу имя, которого нет в таблице участников, в это время оно примет и отобразит пустое поле в представлении списка в столбце имени участника, а идентификатор участника будет сохранен как "0" в таблице гостевых проходов... ...

Я не хочу отображать пустое имя участника и не хочу хранить «0» в таблице гостевых проходов.

и это оператор вставки

          sql2 = @"INSERT INTO guestpasses(member_Id,guestPass_IssueDate)";
          sql2 += " VALUES(";
          sql2 += "'" + tbCGuestPassesMemberId.Text + "'";
          sql2 += ",'" + tbIssueDate.Text + "'";

guestpassmemberId = идентификатор участника

есть ли какая-либо проверка, которая должна быть сделана

и это оператор автозаполнения текстового поля

           sql = @"SELECT member_Id FROM members WHERE  concat(member_Firstname,'',member_Lastname) ='" + tbMemberName.Text+"'";

 dt = GetData(sql, mf);

         if (dt != null)
         {
            if (dt.Rows.Count > 0)
            {
                tbCGuestPassesMemberId.Text  = Convert.ToInt32(dt.Rows[0]  ["member_Id"]).ToString();
            }
         }

может ли кто-нибудь помочь мне в этом... есть ли какой-либо тип проверки с помощью sql-запроса

плиз помогите.....


person user682417    schedule 27.06.2011    source источник


Ответы (1)


Вы можете проверить значения перед передачей их в INSERT. Кроме того, вы также можете установить ограничение для проверки по сравнению с регулярным выражением в SQL.

ограничения SQL

Для проверки перед вставкой у вас должно быть что-то вроде этого:

  private void validateData(Long memberId) {
       //Pseudo code Depends on how you are connecting to your database...
       SQLQuery query = getQuery("existsMemberId");
       query.setParameter("memberId");
       executeQuery(query);
       // If the query returns something then the reference exists and it is ok to proceed
  }

В файле вы храните свои запросы...

   #existsMemberId
   select 1
   from members mem
   where mem.id = :id <-- parameter

Кроме того, вы должны установить ограничение внешнего ключа между участниками и гостевыми проходами с идентификатором в качестве внешнего ключа:

   ALTER TABLE GuestPasses
   ADD CONSTRAINT fk_memberId
   FOREIGN KEY (id)
   REFERENCES Members(id)
person Oscar Gomez    schedule 27.06.2011
comment
есть ли какой-либо тип запроса sql для проверки этих значений - person user682417; 27.06.2011
comment
Я не думаю, что вы можете сделать это в самом запросе, и даже если вы можете это сделать, я бы не советовал. Вы должны либо использовать ограничения, либо проверять перед выполнением вставки. - person Oscar Gomez; 27.06.2011
comment
Да, конечно, для проверки ограничений или для внутренней или внешней проверки? - person Oscar Gomez; 27.06.2011
comment
внутренняя проверка с использованием С# и sql - person user682417; 27.06.2011
comment
Добавлена ​​проверка, а также проверка ограничений. - person Oscar Gomez; 27.06.2011