名称'数据'在当前上下文中不存在

时间:2014-08-27 07:06:17

标签: c#

我正在尝试在类中生成try catch方法,但我正面临这个错误消息,请帮我解决这个问题。 我的班级是

public string Countryadd(string country, string id)
{

     try
     {
         string data="0";
         string qry1 = "select Country from Country where Country='" + country + "'";//Checking weather txtcountry(Country Name) value is already exixst or not. If exist return 1 and not exists go to else condition
         SqlDataReader dr = conn.query(qry1);
         if (dr.Read())
         {
             return data = "1";
         }
         else//If Country Name Not Exists
         {
             string qry = "insert into Country values('" + id + "','" + country + "')";//Insertin data into database Table Country
             conn.nonquery(qry);
         }

     }
     catch (Exception Ex)
     {
         ShowPopUpMsg(Ex.Message);
     }
     return data;
 }

5 个答案:

答案 0 :(得分:5)

您需要在try块之前添加数据定义:

   string data="0";

   try {

{}括号定义变量的范围。

您只能访问该范围内的变量。

答案 1 :(得分:4)

由于您在尝试块中定义了data变量,因此它似乎不在此块之外。它仅适用于try块和任何子范围。

您可以在 try-catch 块之外移动它的定义。

string data="0";
try
{
   ...
}
catch (Exception Ex)
{
     ShowPopUpMsg(Ex.Message);
}
return data;

阅读:来自MSDN的3.7 Scopes (C#)

答案 2 :(得分:2)

data目前在try区块的范围内定义,您需要将其移到外面

string data = "0";
try
{
...
}
catch(NullReferenceException ex)
{
}
catch(SomethingRelatedToDataReaderException ex)
{
}
return data;

此外,您不应该真正尝试捕获Exception,您应该尝试捕获特定类型的异常。这有助于避免掩盖问题并为您提供更多控制

答案 3 :(得分:2)

{ }符号之间创建的所有变量都在符号本身的范围内。

如果您需要在其外部使用data,请在尝试之前声明它。

string data = string.Empty; // or initialize the value to "0" if that's the default you want.

try
{
   // Don't declare data here or it won't be visible outside the try block.
   // You can set the "0" or whatever value you want here though.
   ...
}

catch (Exception Ex)
{
   ...
}

return data;

答案 4 :(得分:0)

变量data的范围仅在Try / Catch块中,因为您已在其中定义。

尝试定义变量data超出块。