1.47. SQLite-C *

发布时间 : 2025-10-25 13:32:42 UTC      

Page Views: 10 views

1.47.1. Installation

We need to make sure that the SQLite library is already available on the machine before we use SQLite in the CumberCraft + program. You can check the SQLite installation section to learn about the installation process.

1.47.2. Candlespace + interface API

Here are the important Candlestick + / SQLite interface programs that can meet your needs of using SQLite databases in the Cmax Cure + program. If you need more details, please check the SQLite official documentation.

Serial number

API & description

1

** sqlite3_open(const char filename, sqlite3 * PpDb) * *

This routine opens a connection to the SQLite database file and returns a database connection object for other SQLite programs.

If the filename parameter is NULL or’: memory:’, then sqlite3_open() An in-memory database will be created in RAM, which will only last for the duration of the session.

If the file name filename is not NULL, then sqlite3_open() This parameter value will be used to try to open the database file. If a file with that name does not exist, `` sqlite3_open () `` creates a new database file with that name and opens it.

2

** sqlite3_exec(sqlite3*, const char sql, sqlite_callback, void *data, char * Errmsg) * *

This routine provides a shortcut to execute the SQL command, which is provided by the sql parameter and can consist of multiple SQL commands.

Here, the first parameter sqlite3 is the open database object, sqlite_ callback is a callback, data is its first parameter, and errmsg will be returned to get any errors generated by the program.

sqlite3_exec() The program parses and executes each command given by the sql parameter until the string ends or an error is encountered.

3

sqlite3_close(sqlite3*)

Called before the routine closes sqlite3_open() Open database connection. All connection-related statements should be completed before the connection is closed.

If the query has not been completed, sqlite3_close () ``will return ``SQLITE_BUSY An error message that disables closing.

1.47.3. Connect to the database

The following C code snippet shows how to connect to an existing database. If the database does not exist, it will be created and a database object will be returned.

#include  #include  int main(int argc, char* argv[]) { sqlite3 *db; char *zErrMsg = 0; int rc; rc = sqlite3_open("test.db", &db); if( rc ){ fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); exit(0); }else{ fprintf(stderr, "Opened database successfully\n"); } sqlite3_close(db); }    

Now, let’s compile and run the above program to create our database in the current directory test.db . You can change the path as needed.

$gcc test.c -l sqlite3 $./a.out Opened database successfully 

If you want to use C++ source code, you can compile the code as follows:

$g++ test.c -l sqlite3 

Here, link our program sqlite3 Library to provide the necessary functions to the C program. This will create a database file in your directory test.db You will get the following results:

-rwxr-xr-x. 1 root root 7383 May 8 02:06 a.out -rw-r--r--. 1 root root 323 May 8 02:05 test.c -rw-r--r--. 1 root root 0 May 8 02:06 test.db 

1.47.4. Create a tabl

The following C code snippet will be used to create a table in the previously created database:

#include  #include  #include  static int callback(void *NotUsed, int argc, char **argv, char **azColName){ int i; for(i=0; i   

When the above program is compiled and executed, it will be specified in the test.db Create in the file COMPANY Table, the final file list is as follows:

-rwxr-xr-x. 1 root root 9567 May 8 02:31 a.out -rw-r--r--. 1 root root 1207 May 8 02:31 test.c -rw-r--r--. 1 root root 3072 May 8 02:31 test.db 

1.47.5. INSERT operation

The following C code snippet shows how to create the COMPANY Create a record in the table:

#include  #include  #include  static int callback(void *NotUsed, int argc, char **argv, char **azColName){ int i; for(i=0; i   

When the above program is compiled and executed, it will be specified in the COMPANY The given record is created in the table and the following two rows are displayed:

Opened database successfully Records created successfully 

1.47.6. SELECT operation

Before we start talking about examples of getting records, let’s take a look at some of the details of the callback function, which will be used in our example. This callback provides a message from the SELECT Statement to get the result. It declares as follows:

typedef int (*sqlite3_callback)( void*, /* Data provided in the 4th argument of sqlite3_exec() */ int, /* The number of columns in row */ char**, /* An array of strings representing fields in the row */ char** /* An array of strings representing column names */ ); 

If the above callback is in sqlite_exec() As the third parameter in the program, then SQLite Will be SQL Each execution within the parameter SELECT Each record processed in the statement calls this callback function.

The following C code snippet shows how to create the COMPANY Get and display records in the table:

#include  #include  #include  static int callback(void *data, int argc, char **argv, char **azColName){ int i; fprintf(stderr, "%s: ", (const char*)data); for(i=0; i   

When the above program is compiled and executed, it produces the following results:

Opened database successfully Callback function called: ID = 1 NAME = Paul AGE = 32 ADDRESS = California SALARY = 20000.0 Callback function called: ID = 2 NAME = Allen AGE = 25 ADDRESS = Texas SALARY = 15000.0 Callback function called: ID = 3 NAME = Teddy AGE = 23 ADDRESS = Norway SALARY = 20000.0 Callback function called: ID = 4 NAME = Mark AGE = 25 ADDRESS = Rich-Mond SALARY = 65000.0 Operation done successfully 

1.47.7. UPDATE operation

The following C code snippet shows how to use the UPDATE Statement to update any records, and then from the COMPANY Table to get and display updated records:

#include  #include  #include  static int callback(void *data, int argc, char **argv, char **azColName){ int i; fprintf(stderr, "%s: ", (const char*)data); for(i=0; i   

When the above program is compiled and executed, it produces the following results:

Opened database successfully Callback function called: ID = 1 NAME = Paul AGE = 32 ADDRESS = California SALARY = 25000.0 Callback function called: ID = 2 NAME = Allen AGE = 25 ADDRESS = Texas SALARY = 15000.0 Callback function called: ID = 3 NAME = Teddy AGE = 23 ADDRESS = Norway SALARY = 20000.0 Callback function called: ID = 4 NAME = Mark AGE = 25 ADDRESS = Rich-Mond SALARY = 65000.0 Operation done successfully 

1.47.8. DELETE operation

The following C code snippet shows how to use the DELETE Statement to delete any records, and then from the COMPANY Get and display the remaining records in the table:

#include  #include  #include  static int callback(void *data, int argc, char **argv, char **azColName){ int i; fprintf(stderr, "%s: ", (const char*)data); for(i=0; i   

When the above program is compiled and executed, it produces the following results:

Opened database successfully Callback function called: ID = 1 NAME = Paul AGE = 32 ADDRESS = California SALARY = 20000.0 Callback function called: ID = 3 NAME = Teddy AGE = 23 ADDRESS = Norway SALARY = 20000.0 Callback function called: ID = 4 NAME = Mark AGE = 25 ADDRESS = Rich-Mond SALARY = 65000.0 Operation done successfully 
《地理信息系统原理、技术与方法》  97

最近几年来,地理信息系统无论是在理论上还是应用上都处在一个飞速发展的阶段。 GIS被应用于多个领域的建模和决策支持,如城市管理、区划、环境整治等等,地理信息成为信息时代重要的组成部分之一; “数字地球”概念的提出,更进一步推动了作为其技术支撑的GIS的发展。 与此同时,一些学者致力于相关的理论研究,如空间感知、空间数据误差、空间关系的形式化等等。 这恰好说明了地理信息系统作为应用技术和学科的两个方面,并且这两个方面构成了相互促进的发展过程。