![](/img/trans.png)
[英]Check wheather the column in a particular table has a value with Entity framework
[英]How to check whether a column has a particular value
我有一個MS SQL數據庫,其中有如下字段:
具有相同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與何時打開連接。 為什么在准備使用連接之前先打開連接?
同樣,變量應充分描述它們包含的信息。 避免使用無用的名稱,例如g
和h
。
最后,您可以使用兩個參數來檢查要檢查的條件。
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.