On 10/7/2018 9:35 AM, Jörg Hofmann wrote:
Hallo Hans,
hallo Luigi,

Am Samstag, den 06.10.2018, 20:01 +0200 schrieb Jörg Hofmann:
I've been trying to connect ConTeXt to sqlite for almost a week
but I have repeatedly failed. Neither the
"internal" variant according to the documentation, nor the attempt on
luasql
have worked. Above all, the Google request showed me that
not alone with this problem - how reassuring. ;-)

At the moment, concentrate I am accessing via swiglib and think my
problem lies here (from my log file):

sql> start loading method 'sqlite'
swiglib> unknown: 'swiglib.sqlite.core'
swiglib> unknown: 'swiglib.helpers.core'

Obviously, the appropriate modules are not found, but where
Can I get them and where do they belong? And maybe
also someone a working code example for me.
I'm working with Texlive 2017 on XUBUNTU 16.04.

Many thanks for your help. I have read both manuals but may not
understand it correctly. That's why I send my file and the log file.
the latest versions of context use ffi for mysql and sqlite interfacing so you just need the libraries

if you add \enabletrackers[*ffi*] to your file you get something

ffilib          > requiring library 'sqlite3' with version 'any'
ffilib          > tds path 1: .
ffilib > tds path 2: c:/data/develop/tex-context/tex/texmf-win64/bin/lib/context/lua// ffilib > tds path 3: c:/data/develop/tex-context/tex/texmf-win64/bin/lib/luatex/lua// ffilib > tds path 4: c:/data/develop/tex-context/tex/texmf-win64/bin/lib//lua//
ffilib          > attemp 1, engine 'luatex'
ffilib          > checking tds lib paths strictly
ffilib          > checking with version: 'sqlite3.dll'
ffilib > found: 'c:/data/develop/tex-context/tex/texmf-win64/bin/lib/luatex/lua/copies/sqlite/sqlite3.dll'
ffilib          > stored library: 'sqlite3'
sql             > loading method 'sqlite' done

anyway, best keep your libe in the tex tree because otherwise you get some random one that is found on your system

attached a better example file (hard to test without a database here so need to make one ... next time proviode a real mwe)

in util-sql-imp-sqlite.lua remove a pragma line so we get:

local f_preamble = formatters[ [[
ATTACH `%s` AS `%s` ;
PRAGMA `%s`.synchronous = normal ;
]] ]



-----------------------------------------------------------------
                                          Hans Hagen | PRAGMA ADE
              Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
       tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------
\starttext

\enabletrackers[*ffi*]

\startluacode
require("util-sql")

local sql = utilities.sql

sql.setmethod("sqlite")

document.sqlpresets = {
    database = "aufgaben",
    id       = "aufgaben",
}

local template = [[
    CREATE TABLE IF NOT EXISTS `aufgaben` (
        `id`          INTEGER PRIMARY KEY AUTOINCREMENT,
        `titel`       BLOB NOT NULL,
        `sachverhalt` BLOB NOT NULL,
        `auftraege`   BLOB NOT NULL
    ) ;
]]

function document.createdatabase()

    return utilities.sql.execute {
        presets   = document.sqlpresets,
        template  = template,
    }

end

local template = [[
    INSERT INTO `aufgaben` (
        `titel`,
        `sachverhalt`,
        `auftraege`
    ) VALUES (
        '%titel%',
        '%sachverhalt%',
        '%auftraege%'
    ) ;
]]

function document.addtodatabase(t)

    return utilities.sql.execute {
        presets   = document.sqlpresets,
        template  = template,
        variables = {
            titel       = t.titel,
            sachverhalt = t.sachverhalt,
            auftraege   = t.auftraege,
        },
    }

end

local template_id = [[
    SELECT
        *
    FROM
        `aufgaben`
    WHERE
        `id` = '%id%' ;
]]

document.sqlconverter = sql.makeconverter {
    { name = "id",          type = "number" },
    { name = "titel",       type = "string" },
    { name = "sachverhalt", type = "string" },
    { name = "auftraege",   type = "string" },
}

function document.getfromdatabase(t)

    if t.id then

        return utilities.sql.execute {
            presets   = document.sqlpresets,
            template  = template_id,
            variables = { id = t.id },
         -- converter = document.sqlconverter,
        }

    end

end

\stopluacode

\startluacode

document.createdatabase()

local tufte = io.loaddata(resolvers.findfile("tufte.tex"))
local ward  = io.loaddata(resolvers.findfile("ward.tex"))
local knuth = io.loaddata(resolvers.findfile("knuth.tex"))

document.addtodatabase { titel = "aufgabe 1", sachverhalt = "one",   auftraege 
= tufte }
document.addtodatabase { titel = "aufgabe 2", sachverhalt = "two",   auftraege 
= ward }
document.addtodatabase { titel = "aufgabe 3", sachverhalt = "three", auftraege 
= knuth }

function document.showrecord(n)

    local result = document.getfromdatabase { id = n }

    for i=1,#result do
        local r = result[i]
        if r.titel then
            context.title(r.titel)
            context.subject(r.sachverhalt)
            context.par()
            context("text: ")
            context.viafile(r.auftraege)
            context.page()
        end
    end

end
\stopluacode

\startluacode
    document.showrecord(1)
    document.showrecord(2)
    document.showrecord(3)
\stopluacode

\stoptext

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to