繁体   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