我有下面的代码,在我最近更新函数以返回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
有什么建议吗?
如果我错了(并且对OP所说的-not accessible outside the function in C#.net code
感到困惑),请纠正我,但在这里,您不能在方法/函数之外使用OleDbDataReader object
,因为它的关联connection
已被处理(您有using
块)。
如果您希望在其他方法中使用来自数据库的结果,那么我建议您使用OleDbDataAdapter.Fill
方法填充DataTable
。