Embedded Linux-based databases mainly include SQLite, Firebird, Berkeley dB, and ExtremeDB databases. Features: • Firebird is a relational database with powerful functions, supports stored procedures, SQL compatibility, and other • SQLite relational databases, which are small in size and support acid transactions • There is no concept of database servers in Berkeley dB, its Library is directly linked to the application • ExtremeDB is a memory database, and the source code with high running efficiency SQLite is C. Its source code is completely open and is a lightweight embedded database. SQLite has the following features:
No configuration. No installation or configuration management is required;
A complete database stored in a single disk file;
Database files can be freely shared among machines with different byte sequences;
The database size is 2 TB;
Small enough. The source code contains approximately 30 thousand lines of C code, kb;
Faster data operations than most popular databases;
This database operation is relatively simple. First install the database:
This is very simple. You can find the corresponding linux In the download directory of the sqlitehomepage http://www.sqlite.org/download.html. Decompress the downloaded package and execute
Configure.
Run sudo make & make install
Wait for a while before the installation is complete.
After completion, let's take a look at the path of the sqlite3 execution file.
In the/usr/local/bin directory.
For future convenience, you can add this directory to the environment variable. First, open sudo Vim/environment to add the path here. How can I port sqlite3 to the Development Board?
1. Remove the sqlite3 calling Information in the/root/sqlite3.3.6 Directory: (commonly known as slimming)
# Arm-Linux-strip sqlite3
2. Download sqlite3 to the/usr/bin directory of the Development Board:
Find the libsqlite3.so. 0 and libsqlite3.so. 0.8.6 library files in the/usr/lib directory of the PC, and copy them to the/usr/lib directory of the Development Board after removing the call information:
Arm-Linux-strip libsqlite3.so. 0 (/home/Linux/SQLite/LIB)
Arm-Linux-strip libsqlite3.so. 0.8.6 (/home/Linux/SQLite/LIB)
The purpose of adding the CP-arms libsqlite3.so. 0.8.6/usr/lib to the libsqlite3.so. 0.8.6/usr/lib is to copy the source database. Do not copy only one link. This is a tragedy...
After the above steps, the SQLite database is available on the Development Board.
Some basic operations of SQLite can be found on the Internet. SQL statements are common, so it is important that sqlite3 provides some database operation interfaces:
Int sqlite3_open (char * path, sqlite3 ** dB );
Function: Enable the SQLite database.
Path: database file path
DB: pointer to the SQLite handle
Return Value: 0 is returned for success, and error code (non-zero value) is returned for failure)
Int sqlite3_close (sqlite3 * dB );
Function: Disable the SQLite database.
Return Value: 0 is returned for success, and error code is returned for failure.
Const char * sqlite3_errmg (sqlite3 * dB );
Returned value: an error message is returned.
Gcc-O test. C-lsqlite3
} Callback Function Definition: typedef int (* sqlite3_callback) (void * para, int f_num, char ** f_value, char ** f_name );}
Function: the callback function is automatically executed every time a record is found.
Para: The parameter passed to the callback function.
F_num: number of fields contained in the record
F_value: A pointer array containing the values of each field
F_name: pointer array containing the name of each field
Return Value: 0 is returned for success, and-1 is returned for failure.
Int sqlite3_exec (sqlite3 * dB, const char * SQL, sqlite3_callback callback, void *, char ** errmsg );
Function: Performs SQL operations.
DB: Database handle
SQL: SQL statements
Callback: callback function
Errmsg: error message pointer address
Return Value: 0 is returned for success, and error code is returned for failure.
For example, define a callback function to print the names and values of all fields in the record.
int callback(void *para, intf_num, char **f_value, char **f_name){ int i; printf(“*****************************\n”); for (i=0; i<f_num; i++) { printf(“%s : %s\n”, f_name[i], f_value[i]); } return 0;}
sqlite3 *db;char *errmsg; ……if (sqlite3_exec(db, “select * from table”, callback, NULL, &errmsg) != SQLITE_OK){ printf(“error : %s\n”, errmsg); exit(-1); } ……
Run the SQL statement int sqlite3_get_table (sqlite3 * dB, const char * SQL, char *** resultp, int * nrow, int * ncolumn, char ** errmsg) without using the callback function ); function: Execute SQL operations
Function parameters:
DB: Database handle
SQL: SQL statements
Resultp: a pointer to the SQL Execution result.
Nrow: number of records that meet the condition
Ncolumn: number of fields contained in each record
Errmsg: error message pointer address
Return Value: 0 is returned for success, and error code is returned for failure.
Sqlite3 * dB; char * errmsg, ** resultp; int nrow, ncolumn, I, j, index ;...... If (sqlite3_exec (dB, "select * from table", & resultp, & nrow, & ncolumn, & errmsg )! = Sqlite_ OK) {printf ("error: % s \ n", errmsg); exit (-1) ;}index = ncolumn; // subscript of the first field in the first record for (I = 0; I <nrow; I ++) {for (j = 0; j <ncolumn; j ++) {printf ("% s: % s \ n", resultp [J], resultp [index ++]);}
With these functions, database operations are basically OK.