** db.exec( statement ) ** Execute sql statement. If statement is a query, return value is a table with the query results. See also [[:lua:db:escape|db.escape()]]. ===== Examples: ===== Check if a table exists: if #db.exec[[SELECT name FROM sqlite_master WHERE type='table' AND name='grraka_animals']] <1 then -- table doesn't exist, do something here end \\ Create a table: db.exec[[CREATE TABLE grraka_animals( animal_name TEXT, location TEXT)]] Insert values into table: db.exec[[INSERT INTO grraka_animals( animal_name, location ) VALUES( 'Dog', 'land')]] Bulk insert using transaction: local animals= { {animal_name="Aardvark",location="land" }, {animal_name="Albatross",location="air" }, {animal_name="Alligator",location="water" }, {animal_name="Alpaca",location="land" }, {animal_name="Ant",location="land" } } db.exec[[BEGIN]] for _,entry in pairs(animals) do db.exec( ([[INSERT INTO grraka_animals(animal_name, location) VALUES( '%s', '%s')]]):format( db.escape(entry.animal_name), db.escape(entry.location)) end db.exec[[END]] Run a query and process the results: local result=db.exec[[SELECT animal_name, location FROM grraka_animals ORDER BY animal_name]] for _,row in result do say(row.animal_name.." lives in "..row.location) end See sqlite3 general documentation for further reference on statements.