/// <summary> /// Retrieve the list of tables from the database. /// </summary> /// <returns> /// Collection of DatabaseTableInfo objects, each object representing /// information about one database table /// </returns> internal Collection<DatabaseTableInfo> GetTables() { Collection<DatabaseTableInfo> results = new Collection<DatabaseTableInfo>(); // using ODBC connection to the database and get the schema of tables AccessDBPSDriveInfo di = this.PSDriveInfo as AccessDBPSDriveInfo; if (di == null) { return null; } OdbcConnection connection = di.Connection; DataTable dt = connection.GetSchema("Tables"); int count; // iterate through all rows in the schema and create DatabaseTableInfo // objects which represents a table foreach (DataRow dr in dt.Rows) { String tableName = dr["TABLE_NAME"] as String; DataColumnCollection columns = null; // find the number of rows in the table try { String cmd = "Select count(*) from \"" + tableName + "\""; OdbcCommand command = new OdbcCommand(cmd, connection); count = (Int32)command.ExecuteScalar(); } catch { count = 0; } // create DatabaseTableInfo object representing the table DatabaseTableInfo table = new DatabaseTableInfo(dr, tableName, count, columns); results.Add(table); } // foreach (DataRow... return results; }