====== ITTIA DB SQL Getting Started Guide ===== \\ ===== ITTIA DB SQL ===== ITTIA DB SQL is a relational database management software library for embedded systems and intelligent Internet-of-Things devices.\\ Device applications embed ITTIA DB SQL to store, manage, analyze, connect, and distribute data. \\ \\ ====How do I access the Software?=== [[https://www.ittia.com/products/ittia-db-sql/evaluation|Request an evaluation kit]] for your TQ target board. \\ \\ ====Package Contents=== SDK Folder Structure\\ The ITTIA DB SQL SDK contains the following folders: ^ Folder ^ Description ^ |**include** | Header files for ITTIA DB SQL | |**lib** | ITTIA DB SQL libraries | |**bin** | Utilities and applications | |**exampels** | Example C and C%%++%% applications | |**share/doc/ittiadb** | Product documentation | ITTIA DB SQL documentation includes: \\ \\ *User’s Guide: The essential guide to ITTIA DB SQL usage and software development. *C API Reference: Reference manual for the ITTIA DB C API. * C%%++%% API Reference: Reference manual for the ITTIA DB C%%++%% API. \\ =====Installing and Using ITTIA DB SQL==== ====Prerequisites and Requirements=== Host *OSELAS toolchain [[https://public.pengutronix.de/software/ptxdist/appnotes/AppNote_BuildingToolchain.pdf|Appnote building OSELAS Toolchain]] or [[https://www.ptxdist.org/doc/environment.html#install-the-binary-oselas-toolchain|Install the binary OSELAS Toolchain]] Target *Target system with operating RootFS *User with password (needed for ssh remote access) *Network connection to development host \\ ====Unpacking and installing the software=== To install the ITTIA DB SQL development kit on the host, unpack the archive as root with the following command:\\ tar xzf -C / ittiasql-*-linux*.tar.gz The ITTIA DB SQL SDK will be installed to **/opt/ittiadb-/**.\\ Next, transfer the **bin** and **lib** folders from the SDK to the target’s **/usr** folder. \\ Finally, add the toolchain to the host PATH. \\ \\ Generic: \\ PATH=PATH:/path/to/your/OSELAS.Toolchain//gcc--glibc--binutils--kernel--sanitized/bin For this tutorial: \\ PATH=$PATH:/opt/OSELAS.Toolchain-2013.12.2/arm-v7a-linux-gnueabihf/gcc-4.8.3-glibc-2.18-binutils-2.24-kernel-3.12-sanitized/bin \\ ====Starting ITTIA DB SQL and creating your first database=== On the target: 1. Run the ITTIA SQL Utility with the command **ittiasql**.\\ 2. Create a new database file with the **.create** command. The database file is created in the current working directory by default.\\ 3. Create a table, insert a few rows, and using select to list all rows in the table. For example:\\ create table hello_world (x integer, y varchar(20)); insert into hello_world values (1, 'Hello World'); insert into hello_world select n, 'Hello ' || cast(n as varchar) from $nat(3); select * from hello_world; 4. Save all changes to the database with the **commit**; SQL statement. If you do not commit your changes, they will be lost when you close the database.\\ 5. Use the **.exit** command to close the database when you are finished.\\ \\ ====Running the examples=== On the host, in the ITTIA DB SQL SDK folder, run:\\ make -C examples This will build database sample programs. Copy one of the example programs, such as **examples/c/sql/sql_select_query_c,** to a writeable directory on the target, then run it from that directory. Most examples will create a database file, perform some updates, then prompt for a SQL statement. Enter a blank line to quit the example, or enter a statement, such as:\\ select * from tables \\ ====Connecting to ITTIA DB SQL for the first time=== Start the ITTIA DB Server by running **dbserver --no-restrict** on the target. Use the **--help** option to learn more about this command.\\ To connect the database on server from the **ittiasql** utility, open the example database that you created in the previous section using the **.open** command and the %% protocol%%: \\ .open idb+tcp://localhost/example.db \\ Use the ITTIA DB Server to share a database file between different applications and processes. In each application, prefix the file name with **%%idb+tcp://localhost/%%** to connect with **dbserver**. \\ \\ =====Creating a Hello World Application==== \\ On the host, create **hello_sql.c** in a new folder:\\ #include #include #include #include #include #include #include using ::storage::data::Environment; using ::storage::ittiadb::Connection; using ::storage::ittiadb::Query; using ::storage::ittiadb::Transaction; using ::storage::data::SingleField; using ::storage::types::CharacterVarying; int main(int argc, char* argv[]) { Environment::init(); // Create a local database file Connection database("hello_sql.ittiadb"); database.open(Connection::CreateAlways); // Initialize database schema Query(database, "create table hello_world (" " id integer," " message varchar(20)" ")" ).execute(); // Insert a record Query(database, "insert into hello_world values (0, 'hello world')" ).execute(); // Read the value of a single database field SingleField message; Query(database, "select message from hello_world where id = 0" ).execute(message); // Save changes and release locks Transaction(database).commit(); // Output field value std::cout << *message.to< CharacterVarying<20> >() << std::endl; return 0; } \\ Create **GNUmakefile** in the same folder:\\ ARCH = arm-v7a-linux-gnueabihf CXX = $(ARCH)-g++ ITTIA_DB_VERSION = 1.0.0 ITTIA_DB_HOME = /opt/ittiadb-$(ITTIA_DB_VERSION)/$(ARCH) hello_sql: hello_sql.o $(CXX) -o $@ $(LDFLAGS) $< -L$(ITTIA_DB_HOME)/lib -littiasql -lstorage -pthread hello_sql.o: hello_sql.cpp $(CXX) -c -o $@ $(CPPFLAGS) $(CXXFLAGS) -pthread -I$(ITTIA_DB_HOME)/include $< Run **make** to compile the program **hello_sql.** Transfer this program to the target and run from a writeable directory.\\ \\ =====Tutorial==== ====Examples=== The ITTIA DB SQL SDK includes examples in the following categories: *[[https://www.ittia.com/products/ittia-db-sql/examples/file-storage|File Storage Examples]] *[[https://www.ittia.com/products/ittia-db-sql/examples/sql-statement|Statement Examples]] *[[https://www.ittia.com/products/ittia-db-sql/examples/replication|Replication Examples]] *[[https://www.ittia.com/products/ittia-db-sql/examples/security|Security Examples]] *[[https://www.ittia.com/products/ittia-db-sql/examples/error-handling|Error Handling Examples]] *[[https://www.ittia.com/products/ittia-db-sql/examples/data-modeling|Data Modeling Examples]] *[[https://www.ittia.com/products/ittia-db-sql/examples/memory-storage|Memory Storage Examples]] *[[https://www.ittia.com/products/ittia-db-sql/examples/shared-access|Shared Access Examples]] *[[https://www.ittia.com/products/ittia-db-sql/examples/phone-book|Phone Book]] \\ ====Troubleshooting=== If the ITTIA DB SQL shared library is not installed to **/usr/lib** on the target, you may get a missing library error. This error can be remedied by setting the LD_LIBRARY_PATH environment variable on the target: export LD_LIBRARY_PATH=/path/to/lib During evaluation on TQ platforms, you have access to to full support from ITTIA. *[[http://www.ittia.com/services/technical-support|Contact ITTIA Technical Support]] ====Other Platforms=== *[[https://www.ittia.com/guide/linux|Linux]] *[[https://www.ittia.com/platforms/vxworks|VxWorks]] *[[https://www.ittia.com/platforms/qnx|QNX]] *[[https://www.ittia.com/guide/windows|Windows]] ====Related Links==== *[[https://www.ittia.com/services/training|ITTIA DB SQL Training]] *[[https://www.ittia.com/online-database-consultation|Request a consulation]]