-2

我有下面的代码,它曾经可以工作,直到我最近更新了函数以返回 true 或 false。但是突然对象 objReader 停止在函数外部访问。我在类的开头声明为 private static oledbdatareader = null; 这样我就可以在当前类中的任何方法中访问它。

 string strProvider = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + strCurWBPath + ";;Mode=ReadWrite" + @";Extended Properties=""Excel 8.0;HDR=Yes;""";

            using ( objConn = new OleDbConnection(strProvider))
             {
                 objConn.Open();                    
                using ( objCmd = new OleDbCommand(strQuery, objConn))
                 {
                     objCmd.CommandType = CommandType.Text;
                     objCmd.ExecuteNonQuery();
                     objReader = objCmd.ExecuteReader(CommandBehavior.SequentialAccess);

                    // No point reading/writing data if there are no rows.
                     if (objReader.HasRows)
                     {

                             if (!objReader.IsClosed)
                             {
                                 return true;
                             }
                             else
                                 return false;                        


                     }
                     else
                     {
                         MessageBox.Show("There are no Rows to process. ");
                     }

                }//end of using1

            }//end of using2

有什么建议么 ?

4

1 回答 1

1

如果我错了(并且对 OP 所说的内容感到困惑 - not accessible outside the function in C#.net code),请纠正我,但在这里您不能object在方法/函数之外使用 OleDbDataReader,因为它的关联connection已被处置(您已using阻止)。

如果您希望将数据库的结果用于其他方法,那么我建议您DataTable使用OleDbDataAdapter.Fill方法进行填充。

于 2012-08-27T04:23:32.570 回答