在USING方法和SqlConnection中进行IF条件检查

时间:2018-09-07 14:34:14

标签: c# sql if-statement sqlconnection using-statement

我正在尝试运行数据验证,执行一些代码并将数据从一个SQL查询传递给另一个。

我当前的代码如下:

public string SelectUniqueKeyNumber()
{
    string newList = string.Join(Environment.NewLine, listOfSkus).ToString();
    string key_id;
    string sqlConnectionString = @"someConnectionString";

    using (SqlConnection connection = new SqlConnection(sqlConnectionString))
    {
        connection.Open();

        SqlCommand command = new SqlCommand("select top 1 KEY_NUMBER from MyTable where QTY_ON_HAND > 0 " + newList + " order by NEWID()", connection);

        SqlDataReader readerKey = command.ExecuteReader();
        readerKey.Read();

        key_id = String.Format(readerKey[0].ToString());
    }

    SelectSkuNumber(key_id);
    return key_id;
}

我想做的是检查我的readerKey.Read()是否未返回null值。如果确实如此,则停止该过程,否则继续。我已经尝试过如下所示的方式:

public string SelectUniqueKeyNumber()
{
    string newList = string.Join(Environment.NewLine, listOfSkus).ToString();
    string key_id;
    string sqlConnectionString = @"someConnectionString";

    using (SqlConnection connection = new SqlConnection(sqlConnectionString))
    {
        connection.Open();

        SqlCommand command = new SqlCommand("select top 1 KEY_NUMBER from MyTable where QTY_ON_HAND > 0 " + newList + " order by NEWID()", connection);

        SqlDataReader readerKey = command.ExecuteReader();
        readerKey.Read();

        if(readerkey.Read().ToString() == null)
        {
            //--- stop processing
        }
        else
        {
            key_id = String.Format(readerKey[0].ToString());
        }
    }

    SelectSkuNumber(key_id); //---> Then ...(key_id) is not declared value
    return key_id;
}

这样做,由于以下原因,我无法访问和传递SelectSkuNumber(key_id)的数据:Use of unassigned local variable 'key_id'

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您需要做的就是在声明key_id时为其分配某物,例如:

string key_id = null; // not string key_id;

及以后,在使用后:

if (key_id != null)
{
    SelectSkuNumber(key_id); //---> Then ...(key_id) is not declared value
}
return key_id;

该函数的调用者当然应该知道如果返回null,该怎么办。

答案 1 :(得分:0)

为避免该特定问题,可以为browser.tabs.query({ url: 'https://mozilla.org/*/b/*/' }) 分配一些值或n browser.tabs.onUpdated.addListener(event => { browser.tabs.get(event).then((tab) => { if (tab.status === 'complete') { if (?? tab.url matches 'https://mozilla.org/*/b/*/') { console.log("Do something") } } }) }); ,例如。 null

但是您还有其他问题:

  1. 您容易进行SQL注入,应该使用key_id类的key_id = "";集合。

  2. 确定要正确连接查询吗?假设

    Parameters

那么您的查询将是:

SqlCommand

至少可以说这是非常非常不正确的。

  1. newList = {"some", "thing"}; 条件... select top 1 KEY_NUMBER from MyTable where QTY_ON_HAND > 0 some thing order by NEWID() 返回if(readerkey.Read().ToString() == null),它是Readbool,它不是引用类型,因此true将永远不会是false,因此条件将始终失败。如果要检查数据库中是否有ToString(),则应检查:

    null

首先读取行,然后接收该行中列的值。对于没有返回记录的情况,它将使用短路。

    NULL语句之前不需要
  1. if (readerKey.Read() && readerKey["KEY_NUMBER"] == DBNull.Value)
相关问题