我正在尝试运行数据验证,执行一些代码并将数据从一个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'
有什么想法吗?
答案 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
。
但是您还有其他问题:
您容易进行SQL注入,应该使用key_id
类的key_id = "";
集合。
确定要正确连接查询吗?假设
Parameters
那么您的查询将是:
SqlCommand
至少可以说这是非常非常不正确的。
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)
,它是Read
或bool
,它不是引用类型,因此true
将永远不会是false
,因此条件将始终失败。如果要检查数据库中是否有ToString()
,则应检查:
null
首先读取行,然后接收该行中列的值。对于没有返回记录的情况,它将使用短路。
NULL
语句之前不需要if (readerKey.Read() && readerKey["KEY_NUMBER"] == DBNull.Value)
。