jrs@Laptop:~/gtk-server$ gda-sql-4.0 -L
Installed providers list
Provider │ Description
───────────┼──────────────────────────────────
SQLite │ Provider for SQLite databases
PostgreSQL │ Provider for PostgreSQL databases
SQLCipher │ Provider for SQLCipher
MySQL │ Provider for MySQL databases
(4 rows)
jrs@Laptop:~/gtk-server$
jrs@Laptop:~/gtk-server$ gda-sql-4.0 -l
List of defined data sources
DSN │ Provider │ Description │ Connection string │ Username │ Global
──────────┼────────────┼──────────────────────────────────────┼────────────────────────────────────────────────────────────┼──────────┼───────
Planner │ PostgreSQL │ GNOME Planner DB │ DB_NAME=plannerdb │ jrs │ FALSE
SalesTest │ SQLite │ Test database for a sales department │ DB_DIR=/home/jrs/.local/share/libgda;DB_NAME=sales_test.db │ │ FALSE
SBMySQL │ MySQL │ SB testing DB │ DB_NAME=sbtest │ root │ FALSE
(3 rows)
jrs@Laptop:~/gtk-server$ gda-sql-4.0 --help
Usage:
gda-sql-4.0 [OPTION...] [DSN|connection string]...
Help Options:
-h, --help Show help options
Application Options:
-v, --version Show version information and exit
-o, --output-file=output file Output file
-C, --command=command Run only single command (SQL or internal) and exit
-f, --commands-file=filename Execute commands from file, then exit (except if -i specified)
-i, --interactive Keep the console opened after executing a file (-f option)
-l, --list-dsn List configured data sources and exit
-L, --list-providers List installed database providers and exit
jrs@Laptop:~/gtk-server$ gda-sql-4.0 SalesTest
Welcome to the GDA SQL console, version 4.2.0
Type: .copyright to show usage and distribution terms
.? for help with internal commands
.q (or CTRL-D) to quit
(the '.' can be replaced by a '\')
or any query terminated by a semicolon
Opening connection 'SalesTest' for: SalesTest
All the meta data associated to the 'SalesTest' connection will be stored in the '/home/jrs/.local/share/libgda/gda-sql-SalesTest.db' file
SalesTest> select * from customers;
id │ name │ default_served_by │ country │ city
───┼─────────────────┼───────────────────┼─────────┼─────
2 │ Ed Lamton │ 4 │ SP │ MDR
3 │ Lew Bonito │ 1 │ FR │ TLS
4 │ Mark Lawrencep │ │ SP │ MDR
9 │ Greg Popoff │ 2 │ SP │ MDR
10 │ Vladimir Zirkov │ 4 │ │
(5 rows)
SalesTest>
' GNOME-DB console mode example
DECLARE SUB DLL ALIAS "_gtk" LIB "gtk-server"
DLL("gtk_server_require libgda-4.0.so")
DLL("gtk_server_define gda_init NONE NONE 0")
DLL("gtk_server_define gda_connection_open_from_string NONE WIDGET 4 STRING STRING NULL INT")
DLL("gtk_server_define gda_execute_select_command NONE WIDGET 2 WIDGET STRING")
DLL("gtk_server_define gda_data_model_dump NONE NONE 2 WIDGET NULL")
DLL("gtk_server_define g_object_unref NONE NONE 1 WIDGET")
DLL("gda_init")
cnc = DLL("gda_connection_open_from_string \"SQLite\" \"DB_DIR=/home/jrs/.local/share/libgda;DB_NAME=sales_test.db\" NULL 0")
data_model = DLL("gda_execute_select_command " & cnc & " \"SELECT * FROM customers\"")
DLL("gda_data_model_dump " & data_model & " NULL")
DLL("g_object_unref " & data_model)
DLL("g_object_unref " & cnc)
jrs@Laptop:~/SB/test$ scriba db-con.sb
id │ name │ default_served_by │ country │ city
───┼─────────────────┼───────────────────┼─────────┼─────
2 │ Ed Lamton │ 4 │ SP │ MDR
3 │ Lew Bonito │ 1 │ FR │ TLS
4 │ Mark Lawrencep │ NULL │ SP │ MDR
9 │ Greg Popoff │ 2 │ SP │ MDR
10 │ Vladimir Zirkov │ 4 │ NULL │ NULL
(5 rows)
jrs@Laptop:~/SB/test$
' GNOME-DB console mode example
DECLARE SUB DLL ALIAS "_gtk" LIB "gtk-server"
DLL("gtk_server_require libgda-4.0.so")
DLL("gtk_server_define gda_init NONE NONE 0")
DLL("gtk_server_define gda_connection_open_from_string NONE WIDGET 4 STRING STRING NULL INT")
DLL("gtk_server_define gda_execute_select_command NONE WIDGET 2 WIDGET STRING")
DLL("gtk_server_define gda_data_model_export_to_file NONE BOOL 9 WIDGET INT STRING NULL INT NULL INT NULL NULL")
DLL("gtk_server_define g_object_unref NONE NONE 1 WIDGET")
DLL("gda_init")
cnc = DLL("gda_connection_open_from_string \"SQLite\" \"DB_DIR=/home/jrs/.local/share/libgda;DB_NAME=sales_test.db\" NULL 0")
data_model = DLL("gda_execute_select_command " & cnc & " \"SELECT * FROM customers\"")
DLL("gda_data_model_export_to_file " & data_model & " 0 \"SalesTest.xml\" NULL 0 NULL 0 NULL NULL")
DLL("g_object_unref " & data_model)
DLL("g_object_unref " & cnc)
jrs@Laptop:~/SB/test$ ls -l SalesTest.xml
-rw-r--r-- 1 jrs jrs 1712 2010-12-15 19:06 SalesTest.xml
jrs@Laptop:~/SB/test$ cat SalesTest.xml
<?xml version="1.0"?>
<gda_array id="EXPORT" name="Exported Data">
<gda_array_field id="FI0" name="id" title="id" dbms_type="integer" gdatype="int" nullok="TRUE"/>
<gda_array_field id="FI1" name="name" title="name" dbms_type="string" gdatype="string" nullok="TRUE"/>
<gda_array_field id="FI2" name="default_served_by" title="default_served_by" dbms_type="integer" gdatype="int" nullok="TRUE"/>
<gda_array_field id="FI3" name="country" title="country" dbms_type="string" gdatype="string" nullok="TRUE"/>
<gda_array_field id="FI4" name="city" title="city" dbms_type="string" gdatype="string" nullok="TRUE"/>
<gda_array_data>
<gda_array_row>
<gda_value>2</gda_value>
<gda_value>Ed Lamton</gda_value>
<gda_value>4</gda_value>
<gda_value>SP</gda_value>
<gda_value>MDR</gda_value>
</gda_array_row>
<gda_array_row>
<gda_value>3</gda_value>
<gda_value>Lew Bonito</gda_value>
<gda_value>1</gda_value>
<gda_value>FR</gda_value>
<gda_value>TLS</gda_value>
</gda_array_row>
<gda_array_row>
<gda_value>4</gda_value>
<gda_value>Mark Lawrencep</gda_value>
<gda_value isnull="t"/>
<gda_value>SP</gda_value>
<gda_value>MDR</gda_value>
</gda_array_row>
<gda_array_row>
<gda_value>9</gda_value>
<gda_value>Greg Popoff</gda_value>
<gda_value>2</gda_value>
<gda_value>SP</gda_value>
<gda_value>MDR</gda_value>
</gda_array_row>
<gda_array_row>
<gda_value>10</gda_value>
<gda_value>Vladimir Zirkov</gda_value>
<gda_value>4</gda_value>
<gda_value isnull="t"/>
<gda_value isnull="t"/>
</gda_array_row>
</gda_array_data>
</gda_array>
jrs@Laptop:~/SB/test$
' ScriptBasic API helper functions and declarations
' INTERFACE
DECLARE SUB DLL ALIAS "_gtk" LIB "gtk-server"
DECLARE SUB VARPTR ALIAS "varptr" LIB "gtk-server"
' Convert standard function calls to a space delimited command string
FUNCTION _DLL(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)
LOCAL arg_str
arg_str = STR(a0) & " " & STR(a1) & " " & STR(a2) & " " & STR(a3) & " " & STR(a4) & " " & STR(a5) & " " & STR(a6) & " " & STR(a7) & " " & STR(a8) & " " & STR(a9)
_DLL = DLL(arg_str)
END FUNCTION
' Returns a data pointer address of a variable or element in a structure as a text based numeric value that GTK-Server understands.
FUNCTION STRPTR(mem_addr)
LOCAL tmp_ptr
tmp_ptr = 0
DLL("strncpy " & VARPTR(tmp_ptr) & " " & mem_addr & " 4")
STRPTR = tmp_ptr
END FUNCTION
' Returns a ScriptBasic string variable given the memory address in numeric text format of a null terminated string variable or element of a structure.
FUNCTION GETSTR(mem_addr)
LOCAL tmp_ptr
tmp_ptr = 0
DLL("strncpy " & VARPTR(tmp_ptr) & " " & mem_addr & " 4")
tmp_ptr = DLL("strdup " & tmp_ptr)
GETSTR = tmp_ptr
END FUNCTION
' Returns a string of data given the memory address of a data pointer and the length in bytes requested.
FUNCTION GETMEM(mem_addr, bytes)
LOCAL tmp_ptr, tmp_data
tmp_ptr = 0
DLL("strncpy " & VARPTR(tmp_ptr) & " " & mem_addr & " 4")
tmp_data = 0
tmp_data = DLL("strncpy " & VARPTR(tmp_data) & " " & tmp_ptr & " " & bytes)
GETMEM = tmp_data
END FUNCTION
' Convert a string to a hex representation of it.
FUNCTION Str2Hex(str_arg)
LOCAL str_len, pos, hex_str
str_len = LEN(str_arg)
IF str_len THEN
FOR pos = 1 TO str_len
hex_str &= RIGHT("0" & HEX(ASC(MID(str_arg, pos, 1))),2)
NEXT
ELSE
hex_str = ""
END IF
Str2Hex = hex_str
END FUNCTION
DECLARE SUB DLL ALIAS "_gtk" LIB "gtk-server"
DLL("gtk_server_require libiDLL.so")
DLL("gtk_server_define sb_new NONE POINTER 0")
DLL("gtk_server_define scriba_LoadConfiguration NONE INT 2 POINTER STRING")
DLL("gtk_server_define scriba_SetFileName NONE INT 2 POINTER STRING")
DLL("gtk_server_define scriba_Run NONE INT 2 POINTER STRING")
DLL("gtk_server_define scriba_LoadSourceProgram NONE INT 1 POINTER")
DLL("gtk_server_define scriba_destroy NONE NONE 1 POINTER")
pProgram = DLL("sb_new")
DLL("scriba_LoadConfiguration " & pProgram & " \"/etc/scriba/basic.conf\"")
DLL("scriba_SetFileName " & pProgram & " \"E01.bas\"")
DLL("scriba_LoadSourceProgram " & pProgram)
DLL("scriba_Run " & pProgram & " \"JRS\"")
DLL("scriba_destroy " & pProgram)
' ScriptBasic self embedding demo
INCLUDE "iembed.sbh"
pProgram = DLL("sb_new")
_DLL "scriba_LoadConfiguration", pProgram, "/etc/scriba/basic.conf"
_DLL "scriba_SetFileName", pProgram, "E02.sb"
_DLL "scriba_LoadSourceProgram", pProgram
_DLL "scriba_NoRun", pProgram
v = _DLL("scriba_LookupVariableByName", pProgram, "main::a")
_DLL "scriba_SetVariable", pProgram, v, SBT_LONG, 500
f = _DLL("scriba_LookupFunctionByName", pProgram, "main::vprint")
_DLL "scriba_Call", pProgram, f
_DLL "scriba_destroy", pProgram
SUB vprint
PRINT "Variable 'a' = ",a,"\n"
END SUB
a = 0
DECLARE SUB DLL ALIAS "_idll" LIB "iDLL-Server"
DECLARE SUB REQUIRE ALIAS "_idll_require" LIB "iDLL-Server"
DECLARE SUB DEFINE ALIAS "_idll_define" LIB "iDLL-Server"
REQUIRE "libiDLL.so"
DEFINE "sb_new NONE POINTER 0"
DEFINE "scriba_LoadConfiguration NONE INT 2 POINTER STRING"
DEFINE "scriba_SetFileName NONE INT 2 POINTER STRING"
DEFINE "scriba_LoadSourceProgram NONE INT 1 POINTER"
DEFINE "scriba_Run NONE INT 2 POINTER STRING"
DEFINE "scriba_NoRun NONE INT 1 POINTER"
DEFINE "scriba_LookupVariableByName NONE LONG 2 POINTER STRING"
DEFINE "scriba_SetVariable NONE INT 4 POINTER LONG INT LONG"
DEFINE "scriba_LookupFunctionByName NONE LONG 2 POINTER STRING"
DEFINE "scriba_Call NONE INT 2 POINTER LONG"
DEFINE "scriba_destroy NONE NONE 1 POINTER"
CONST SBT_LONG = 2
FUNCTION _DLL(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9)
LOCAL arg_str
arg_str = STR(a0) & " " & STR(a1) & " " & STR(a2) & " " & STR(a3) & " " & STR(a4) & " " & STR(a5) & " " & STR(a6) & " " & STR(a7) & " " & STR(a8) & " " & STR(a9)
_DLL = DLL(arg_str)
END FUNCTION