read.sql fails with adodbapi connection
#### Code Sample

```python
import pandas as pd
import adodbapi

conn = adodbapi.connect(r'Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Path\To\MS\Access\DB.accdb;')

df = pd.read_sql("SELECT TOP 10 * FROM myTable", conn)
print(df)
	
conn.close()
```
#### Problem description

Similar to this recent [python-forum.io](https://python-forum.io/Thread-Key-error-when-using-adodbapi-azure-and-pandas) post, `pandas.read_sql` does not work with the older module, [adodbapi](https://pypi.org/project/adodbapi/), which adheres to Python's DB-API 2.0 (PEP-249) standard and allows interfacing with OLEDB providers, a recognized, industry API for data sources. Above makes a successful connection to an MS Access database in Windows environment. However, the `pandas.read_sql` results in following error:

```
Traceback (most recent call last):
  File "OleDBConnection.py", line 14, in <module>
    df = pd.read_sql("SELECT TOP 10 * FROM Random_Data", conn)
  File "C:\Users\ParfaitG\AppData\Roaming\Python\Python37\site-packages\pandas\io\sql.py", line 380, in read_sql
    chunksize=chunksize)
  File "C:\Users\ParfaitG\AppData\Roaming\Python\Python37\site-packages\pandas\io\sql.py", line 1482, in read_query
    parse_dates=parse_dates)
  File "C:\Users\ParfaitG\AppData\Roaming\Python\Python37\site-packages\pandas\io\sql.py", line 141, in _wrap_result
    coerce_float=coerce_float)
  File "C:\Users\ParfaitG\AppData\Roaming\Python\Python37\site-packages\pandas\core\frame.py", line 1512, in from_records
    coerce_float=coerce_float)
  File "C:\Users\ParfaitG\AppData\Roaming\Python\Python37\site-packages\pandas\core\internals\construction.py", line 408, in to_arrays
    elif isinstance(data[0], ABCSeries):
  File "C:\Users\ParfaitG\AppData\Roaming\Python\Python37\site-packages\pandas\core\dtypes\generic.py", line 9, in _check
    return getattr(inst, attr, '_typ') in comp
  File "C:\Users\ParfaitG\AppData\Roaming\Python\Python37\site-packages\adodbapi\apibase.py", line 474, in __getattr__
    return self._getValue(self.rows.columnNames[name.lower()])
KeyError: '_typ'
```

Do note: a regular `cursor.execute` and `cursor.fetchall` works successfully without issue using `adodbapi` with or without parameters:

```python
conn = adodbapi.connect(r'Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Path\To\MS\Access\DB.accdb;')

cur = conn.cursor()
cur.execute("SELECT TOP 10 * FROM myTable WHERE [value] >= ? AND [value] <= ?", (10, 50))

for row in cur.fetchall():
    print(row)
```

#### Expected Output

Desired result would be exact data frame construction from `read_sql` as rendered successfully with `pyodbc` which makes an ODBC connection (another industry recognized API to data sources) to the same database:

```python
import pandas as pd
import pyodbc

conn = pyodbc.connect(r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\Path\To\MS\Access\DB.accdb;')

df = pd.read_sql("SELECT TOP 10 * FROM myTable", conn)
print(df)

conn.close()
```

#### Output of ``pd.show_versions()``

<details>

INSTALLED VERSIONS
------------------
commit: None
python: 3.7.2.final.0
python-bits: 64
OS: Windows
OS-release: 10
machine: AMD64
processor: Intel64 Family 6 Model 63 Stepping 2, GenuineIntel
byteorder: little
LC_ALL: None
LANG: None
LOCALE: None.None

pandas: 0.24.1
pytest: None
pip: 19.1.1
setuptools: 40.6.2
Cython: None
numpy: 1.15.4
scipy: 1.2.1
pyarrow: None
xarray: None
IPython: None
sphinx: None
patsy: 0.5.1
dateutil: 2.8.0
pytz: 2018.9
blosc: None
bottleneck: None
tables: None
numexpr: None
feather: None
matplotlib: 3.0.2
openpyxl: 2.6.2
xlrd: None
xlwt: None
xlsxwriter: None
lxml.etree: 4.3.3
bs4: None
html5lib: None
sqlalchemy: None
pymysql: None
psycopg2: None
jinja2: 2.10.1
s3fs: None
fastparquet: None
pandas_gbq: None
pandas_datareader: None
gcsfs: None
None
</details>
