|
Извлечение данных из базы данных в массив напрямую (без Recordset)
|
|||
---|---|---|---|
#18+
Добрый день. Скажите, есть ли какая-нибудь библиотека для работы с базами данных, чтобы эта библиотека позволяла сразу извлекать данные в массив без записи в объект (под объектом я понимаю например Recordset)? Под массивом я понимаю таблицу в оперативной памяти компьютера. Под библиотекой я понимаю например: Microsoft Office версия Access database engine Object Library, Microsoft ActiveX Data Objects версия Library. В обеих этих библиотеках, как я понял, данные нельзя напрямую выгрузить в массив, а сначала надо записать данные в Recordset, а затем из него в массив. Почему я хочу напрямую: потому что запись в Recordset и извлечение из Recordset очень медленные. Или до такого еще не додумались программисты и обязательно надо извлечь в объект? Или может еще что-нибудь посоветуете? Мне нужно извлекать данные с использованием разных языков программирования: VBA, C#. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 07:47 |
|
Извлечение данных из базы данных в массив напрямую (без Recordset)
|
|||
---|---|---|---|
#18+
Объект не содержит данных. Он только обеспечивает интерфейс для их получения. Способен ли он обеспечить получение сразу в массив - вопрос к авторам интерфейса. Oracle или ODBC, например, имеют интерфейсы такого типа. Про ADO я ничего не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 13:41 |
|
Извлечение данных из базы данных в массив напрямую (без Recordset)
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, в Recordset более менее быстро записывается, а затем чтение из рекордсета в массив недопустимо долго. Нужно извлекать данные из экселя. ODBC может не все данные извлечь, если в столбце и текст и числа. А у Microsoft ACE OLEDB 12.0 запись делается сначала в Recordset. Сейчас код такой: МакросSub макрос() Dim DBEngine As DAO.DBEngine, db As DAO.Database, rs As DAO.RecordSet Dim FN As String, SQLQuery As String, arr() FN = "C:\Users\User\Desktop\База 3.xlsx" SQLQuery = "SELECT * FROM [Лист1$]" Set DBEngine = New DAO.DBEngine Set db = DBEngine.OpenDatabase(name:=FN, Options:=False, ReadOnly:=True, Connect:="Excel 12.0 Xml;HDR=No;IMEX=1") Set rs = db.OpenRecordset(name:=SQLQuery, Type:=dbOpenDynaset, Options:=dbReadOnly) rs.MoveLast rs.MoveFirst arr() = rs.GetRows(rs.RecordCount) End Sub Хотелось бы так: arr() = db ... |
|||
:
Нравится:
Не нравится:
|
|||
27.04.2018, 16:05 |
|
|
start [/forum/topic.php?fid=56&msg=39637578&tid=2015051]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
160ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 266ms |
0 / 0 |