Имя: Пароль:
1C
 
Получение данных из SQL Lite
0 lanc2233
 
04.09.16
18:36
Есть база данных SQL lite. Хочу к ней подключиться из восьмерки.

Не получается зарегистрироваться компоненту sqlite3.dll
"Модуль sqlite3.dll загружен но точка входа DLLRegisterServer не найдена".
64-х сервер, пробовал и 32-х битную и 64-х битную компоненты. Запуск от имени администратора.

Может кто подсказать либо как зарегистрировать эту компоненту. Либо может можно как-то без регистрации обойтись? (подключиться другой библиотекой, не требующей установки. Через ODBC тоже не получилось).
1 oleg_km
 
04.09.16
18:51
Это вроде не КОМ, а обычная ДЛЛ. Должна быть или обертка КОМ или реализация ОДБС или дотНЕТ. Просто ДЛЛ 1С не умеет
2 orefkov
 
04.09.16
18:55
ищи odbc драйвер для sqlite.
Ну либо если задача нечасто получать инфу из базы данных, можно запустить sqlite.exe, задав в командной строке сохранение в файл и текст запроса. Такой вариант и под линуксом сработает кстати.
3 lanc2233
 
04.09.16
19:05
Выкачал этот http://www.ch-werner.de/sqliteodbc/

Он стал http://ipic.su/img/img7/fs/1.1473004820.png

ФайлБД = "D:\test.db";    
    SQLiteObject = Новый COMОбъект("ADODB.Connection");
    SQLiteConnectionString = "DRIVER=SQLite3 ODBC Driver;Database=" + ФайлБД + ";";
    Попытка
        SQLiteObject.Open(SQLiteConnectionString);
    Исключение
         Сообщить(ОписаниеОшибки());
    КонецПопытки;



Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию
4 Garykom
 
гуру
04.09.16
19:21
можешь присоединяться из "поле html":
https://habrahabr.ru/post/140185/
5 Garykom
 
гуру
04.09.16
19:24
(4)+ примерно так на javascript внутри HTML поля ))

<script src='js/sql.js'></script>
<script>
    //Create the database
    var db = new SQL.Database();
    // Run a query without reading the results
    db.run("CREATE TABLE test (col1, col2);");
    // Insert two rows: (1,111) and (2,222)
    db.run("INSERT INTO test VALUES (?,?), (?,?)", [1,111,2,222]);

    // Prepare a statement
    var stmt = db.prepare("SELECT * FROM test WHERE col1 BETWEEN $start AND $end");
    stmt.getAsObject({$start:1, $end:1}); // {col1:1, col2:111}

    // Bind new values
    stmt.bind({$start:1, $end:2});
    while(stmt.step()) { //
        var row = stmt.getAsObject();
        // [...] do something with the row of result
    }
</script>
6 lanc2233
 
04.09.16
19:28
Спасибо.