簡體   English   中英

如何使文本字段值唯一?

[英]How to make a text field value unique?

我有一個帶有文本字段的表單。 我想使文本字段條目唯一,以便人們不能再次保存相同的名稱。

我們可以在表格列中使該字段唯一嗎?

要么

我們如何編寫JS代碼以使該字段唯一?

這就是我在后端所做的事情。

public static boolean isUniqueShortName(String sname)
throws DataObjectException
{
    return isUniqueShortName(sname, null);
}


public static boolean isUniqueName(String sname, BigDecimal id)
throws DataObjectException
{

    final String SELECT_SQL = "SELECT COUNT(*) FROM LISTS WHERE LIST_NAME = ? AND ID <> ?";
    final String SELECT_SQL2 = "SELECT COUNT(*) FROM LISTS WHERE LIST_NAME = ?";

    boolean exists = false;
    Connection conn = DataObjectConnectionPool.getInstance().getConnection();
    PreparedStatement pstmt = null;
    ResultSet result = null;

    try
    {
        // determine SQL
        String SQL = null;
        if (list_id != null)
        {
            SQL = SELECT_SQL;
        }
        else
        {
            SQL = SELECT_SQL2;
        }

        // prepare statement
        pstmt = conn.prepareStatement(SQL);

        // set parameters
        pstmt.setString(1, sname);
        if (id != null)
        {
            pstmt.setBigDecimal(2, id);
        }

        // execute query
        result = pstmt.executeQuery();


        // fetch results
        while (result != null && result.next())
        {
            // fetch
            int count = result.getInt(1);
            exists = (count == 0);
        }

        // close results
        if (result != null)
        {
            try { result.close(); } catch (Exception e) {}
        }

        // close statement
        if (pstmt != null)
        {
            try { pstmt.close(); } catch (Exception e) {}
        }
    }
    catch (Exception ex)
{ 
// throw error
        throw new DataObjectException("Error checking for name uniqueness for " + sname);
    }
    finally
    {
        // close results
        if (result != null)
        {
            try { result.close(); } catch (Exception e) {}
        }

        // close statement
        if (pstmt != null)
        {
            try { pstmt.close(); } catch (Exception e) {}
        }


        // close connection
        if (conn != null)
        {
            try { conn.close(); } catch (Exception e) {}
        }
    }

    return exists;
}

您無法在客戶端使該字段獨一無二。 您可以在服務器上進行驗證,並說該名稱已存在於客戶端。

比如做一個Ajax請求來查看名稱是否存在。

擁有表列是一種方式,但你還需要查看索引的位置,如果它是一個長度很大的字符串,我建議你尋找另一個索引鍵。

您肯定希望在數據庫中使該字段唯一,然后添加javascript以進行驗證,但不僅僅依賴於JS驗證。 在MySQL中,您可以將其作為主鍵或為該列添加唯一索引。 如果您嘗試添加相同的名稱,這將引發錯誤,因此請確保您使用在后端(php或其他)上使用的任何技術捕獲該錯誤,並讓您的用戶知道該名稱已被采用。 此時,您可以向服務器添加ajax調用以驗證名稱。

暫無
暫無

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

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