簡體   English   中英

我的sql表列接受“ 0”作為值

[英]my sql table column accepting “0” as value

我有兩個表,一個是成員表,成員列,成員名,成員名,成員姓氏。 我還有另一個表訪客通行證,其中包含訪客通行證ID和成員ID以及簽發日期列。

我有一個列表視圖,該視圖將顯示訪客通行證詳細信息(例如,會員名稱和發布日期),並且我有兩個文本框用於輸入會員名稱和發布日期。

成員名稱文本框是可以正常工作的自動完成文本框。

但是問題是,當我此時輸入不在成員表中的名稱時,它將接受並在成員名稱列的列表視圖中顯示空白字段,並且成員ID在訪客通行證表中存儲為“ 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查詢驗證

請幫助我 .....

您可以先驗證值,然后再將其傳遞給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

另外,您應該在成員和訪客通行證之間使用ID作為外鍵進行外鍵約束:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM