мой столбец таблицы sql принимает "0" в качестве значения - PullRequest
0 голосов
/ 27 июня 2011

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

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

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

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

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

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

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

guestpassmemberId = memberid

есть ли проверка, которую необходимо сделать

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

           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-запросом

Пожалуйста, помогите мне .....

1 Ответ

0 голосов
/ 27 июня 2011

Вы можете проверить значения, прежде чем передавать их на ВСТАВКУ. Кроме того, вы также можете установить ограничение для проверки по сравнению с регулярным выражением в 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

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

   ALTER TABLE GuestPasses
   ADD CONSTRAINT fk_memberId
   FOREIGN KEY (id)
   REFERENCES Members(id)
...