簡體   English   中英

如何檢查列是否具有特定值

[英]How to check whether a column has a particular value

我有一個MS SQL數據庫,其中有如下字段:

  • 參考編號
  • 商業ID
  • 工人
  • 地點名稱
  • 時間
  • 描述
  • 報價單

具有相同businessid的行可以有很多行,具有相同refno的行可以有很多行。 但是,使用相同的refno和businessid只能有一行。 現在可以有許多具有相同businessid的行,但是我想檢查在這些businessid中是否存在特定的refno。 我知道如何檢查表中是否存在businessid。 但是我很困惑如何檢查同名的businessid是否具有特定的refno。

string g = Session["businessid"].ToString();
string h = Session["referenceno"].ToString();
con.Open();
SqlCommand check = new SqlCommand("select * from quoted_price where businessid=@businessid", con);
check.Parameters.AddWithValue("@businessid", g);
SqlDataReader dr = check.ExecuteReader();        
if (dr.HasRows)
{
    con.Close();
}

您的代碼有一個主要問題。 您沒有正確處理實現IDisposable的對象。 您需要使用using塊,也可以使用try / catch / finally模式,在finally塊中處理清理。 否則,連接可能會斷開,隨后您可能會遇到奇怪的難以診斷的錯誤。 對於您使用的任何類(尤其是在需要存儲或網絡訪問的情況下),請始終檢查其是否實現IDisposable

您還應該考慮何時創建SqlConnection與何時打開連接。 為什么在准備使用連接之前先打開連接?

同樣,變量應充分描述它們包含的信息。 避免使用無用的名稱,例如gh

最后,您可以使用兩個參數來檢查要檢查的條件。

string businessId = Session["businessid"].ToString();
string referenceNo = Session["referenceno"].ToString();    
bool hasRows = false;    

using(SqlConnection connection = new SqlConnection(parameters))
{
    using(SqlCommand checkCommand = new SqlCommand("select * from quoted_price where businessid=@businessid AND refno=@refno", connection))
    {
        checkCommand.Parameters.AddWithValue("@businessid", businessId);
        checkCommand.Parameters.AddWithValue("@refno", referenceNo);
        connection.Open();
        using(SqlDataReader dataReader = check.ExecuteReader())
        {
             hasRows = dataReader.HasRows;
        }                   
    }
}

請注意,我沒有嘗試對dataReader進行大量邏輯處理,而只是從中獲取想要的東西並存儲了我關心的值。 這是因為我不想讓連接保持打開狀態的時間超過了必要。

暫無
暫無

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

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