我有一个子函数
aaa()
{
   ....
   SqlDataReader sdrOutport; <------------------------ 1
   try
   {
        sdrOutport = scmdOutport.ExecuteReader(System.Data.CommandBehavior.KeyInfo);
        .....
        ....
   }
   catch(Exception err)
   {
         ...
   }
   finally
   {
sdrOutport.Close();        <------------------------ 2
scmdOutport.Dispose();
         ....
   }
}如果不把1放try块嘛 2 报错,说我局部变量未赋值,
如果把1放进try块嘛 2 还是报错,不可见,
请问我该怎么才能把SqlDataReader 的 ExecuteReader放进try块?
还是不需要把它放进try块的?多谢

解决方案 »

  1.   

    aaa()
    {
       ....
       SqlDataReader sdrOutport=null; <------------------------ 1
       try
       {
            sdrOutport = scmdOutport.ExecuteReader(System.Data.CommandBehavior.KeyInfo);
             // 可能这句出错了..所以sdrOutport 一直为null
            .....
            ....
       }
       catch(Exception err)
       {
             ...
       }
       finally
       {
             if(sdrOutport != null)
           { 
    sdrOutport.Close();        <------------------------ 2
    scmdOutport.Dispose();
               }
             ....
       }
    }
      

  2.   

    现在外面new一下,然后在里面付值,然后在finlly里close