C# 保留while语句中定义的值

C# 保留while语句中定义的值,c#,asp.net,C#,Asp.net,我试图在while语句之外使用分配给变量BinId的值,如下所示: cmd.CommandText = "SELECT max(binID) from bin"; MySqlDataReader idReader = cmd.ExecuteReader(); int BinId; while (idReader.Read()) { BinId = idReader.GetInt32(0); System.Diagnostics.Debug.WriteLine(BinId);

我试图在while语句之外使用分配给变量BinId的值,如下所示:

cmd.CommandText = "SELECT max(binID) from bin";
MySqlDataReader idReader = cmd.ExecuteReader();

int BinId;

while (idReader.Read())
{
    BinId = idReader.GetInt32(0);
    System.Diagnostics.Debug.WriteLine(BinId);
}
我有办法做到这一点吗

编辑:这就是我试图用BinId做的


cmd.CommandText=“插入mydb1.missedbin值(null,“+personIDdata+”,“+datefind+”,“+BinId+”)”

更改为
如果
。这是因为您只得到一个值,所以暂时不需要,只有一条记录。您还应该检查结果
binId
的值,以确保它是一个正数(如果有记录,我假设这是预期结果)

int BinId=0;
cmd.CommandText=“从bin中选择最大值(binID)”;
//将阅读器包装在using块中
使用(MySqlDataReader idReader=cmd.ExecuteReader())
{
if(idReader.Read())
{
BinId=idReader.GetInt32(0);
系统诊断调试写线(BinId);
}
if(BinId<1)
return;//您没有得到一个值,所以请退出您的方法或执行某些操作。。。。
}
//注意:不要这样做,请始终使用参数化查询
cmd.CommandText=“插入mydb1.missedbin值(null,“+personIDdata+”,“+datefind+”,“+BinId+”)”;

关于insert语句,永远不要编写这样的查询。始终使用参数化查询。

Where是“Where”语句,其中包含变量BinId?对不起,本应编写,但已编辑。请发布一个不起作用的代码示例,以便我们了解您的目标。因为你表达它的方式,它应该已经编辑好,以包含我试图在while之外进行的插入。@Richard1996,BinId应该可以在while循环之外访问。您可能已经在方法范围中声明了BinId,并且应该可以在方法中访问该BinId,如果您想在不同的方法中声明BinId,那么就在类范围中将其声明为数据成员。在if语句之外,它似乎仍然是未分配的。
int BinId = 0;
cmd.CommandText = "SELECT max(binID) from bin";

// wrap your reader in a using block
using(MySqlDataReader idReader = cmd.ExecuteReader())
{
    if (idReader.Read())
    {
        BinId = idReader.GetInt32(0);
        System.Diagnostics.Debug.WriteLine(BinId);
    }
    if(BinId < 1)
        return; // You did not get a value so exit your method or do something....
}

// NOTE: DO NOT DO THIS, always use parameterized queries
cmd.CommandText = "insert into mydb1.missedbin values (null, '" + personIDdata + "','" + dateFound + "','"+ BinId +"')";