网站建设可以用什么语言做物流网站模块
sqllite简介
SQLite是一个无服务器的数据库,是自包含的,也称为嵌入式数据库,这意味着数据库引擎作为应用程序的一部分运行。它是轻量化,用于设备端的数据管理,可以理解成单点的数据库。传统服务器型数据库用于管理多端设备,更加复杂。
                基于嵌入式的数据库主要有:SQLite,Firebird,Berkeley DB,eXtremeDB。
                 Firebird:关系型数据库,功能强大,支持存储过程,SQL兼容等SQLite关系型数据库,
                体积小,支持ACID事务
                 BerkeleyDB:并没有数据库服务器的概念,他的程序直接链接到应用程序中
                 eXtremeDB:内存数据库,运行效率高
sqlite与msql对比
| sqlite优点 | sqlite缺点 | mysql优点 | mysql | 
|   1.基于文件,易于设和使用 2.适合基础开发和测试 3.轻松携带 4.使用标准SQL语法进行微小更改使用方便  |   1.缺乏用户管理和安全功能 2.不容易扩展 3.不适合大数据库 4.无法定制  |    1.包含许多数据库相关的功能 2.良好的安全功能 3.易于扩展,适用于大型数据库 提供良好的速度和性能 4.提供良好的用户管理和 5.多种访问控制  |   1.需要技术专业知识来设置 2.传统SQL 相比,语法略有不同  | 
sqllite的C接口
int sqlite3_open(const char *filename, sqlite3 **ppDb); 
功能:打开(创建)数据库
参数:
                       filename:打开(创建)的数据库文件名
                         ppDb:sqlite3数据库句柄的指针 
 返回值:  
                        #defineSQLITE_OK 0 成功结果
                         错误开始码
                        #defineSQLITE_ERROR 1           SQL错误或缺少数据库
                         #defineSQLite                   内部逻辑错误
                         #defineSQLITE_PERM 3            拒绝访问权限
                         #defineSQLITE_ABORT 4           回调例程请求中止
                         #define SQLITE_BUSY 5           数据库文件被锁定
                         # SQLITE_LOCKED 6               数据库中的表被锁定
                         #define SQLITE_NOMEM 7          A malloc() failed 
                         #define SQLITE_READONLY 8       尝试写一个只读数据库
                         #defineSQLITE_INTERRUPT 9       被sqlite3_interrupt()终止的操作
                         # SQLITE_IOERR 10               磁盘I/O出错
                         #define SQLITE_CORRUPT 11       数据库磁盘镜像不正常
                         #defineSQLITE_NOTFOUND 12       sqlite3_file_control()中未知的操作码
                         #define SQLITE_FULL 13          插入失败,因为数据库已满
                         # SQLITE_CANTOPEN 14            无法打开数据库文件
                         #defineSQLITE_PROTOCOL 15       数据库锁定协议错误
                         #define SQLITE_EMPTY 16         数据库为空
                         #defineSQLITE_SCHEMA 17         数据库模式改变
                         #defineSQLITE_TOOBIG 18         字符串或BLOB超过大小限制
                         #defineSQLITE_CONSTRAINT 19     由于约束违反而终止
                         #defineSQLITE_MISMATCH 20       数据类型不匹配
                         #define SQLITE_MISUSE 21        错误使用的库
                         #define SQLITE_NOLFS 22         使用主机不支持的操作系统特性
                         #defineSQLITE_AUTH 23           拒绝授权
                         #defineSQLITE_FORMAT 24         辅助数据库格式错误
                         #defineSQLITE_RANGE 25          第二个参数为sqlite3_bind out of range 
                         #defineSQLITE_NOTADB 26         打开的文件不是数据库文件
                         #defineSQLITE_ROW 100           sqlite3_step()有另一行
                         #define SQLITE_DONE 101         sqlite3_step()已经完成执行
int sqlite3_close(sqlite3 *db); 
功能:关闭数据库
参数: db:数据库的句柄
返回值同上
const char* sqlite3_errmg(sqlite3 *db); 
功能:收集错误信息
参数: db:数据库的句柄
返回值:
成功返回错误说明的字符串指针,错误返回空指针;
int sqlite3_exec(sqlite3 *db,const char *sql,int callback,void *arg,char **errmsg); 
功能:执行sql
参数:
db:数据库句柄
sql:执行的sql
callback:回调函数
arg:参数
errmsg:错误信息
返回值同上
int callback(void*arg,intcolumn_size,char*column_value[],char*column_name[]); 
功能:回调函数
参数:
                                arg:参数
                                 column_size:数据库的字段数
                                 column_value[]:列的值
                                 column_name[]:字段名字       
demo:
1.编写数据库接口及操作函数
2.可使用.open,create,insert,select,update,delete,drop等SQL
代码示例:
#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>
#include <string.h>static int callback(void *args,int column_size,char *column_name[],char *column_value[])
{int i;printf("%s\n",(char *)args);printf("======================\n");for(i = 0;i < column_size;i++){printf("%s   =   %s\n",column_name[i],column_value[i]);}printf("======================\n");return 0;
}void result(char data_bin[])
{sqlite3 *db;int ret;int ret_exec;char input[128] = {'\0'};char *err_msg = NULL;ret = sqlite3_open(data_bin,&db);if(ret != 0){printf("create/open db faili,why : %s\n",sqlite3_errmsg(db));exit(-1);}while(1){printf("input your sql:\n");printf(">>>");memset(input,'\0',128);fgets(input,128,stdin);ret_exec = sqlite3_exec(db,input,callback,"context of sql:",&err_msg);if(ret_exec != 0){printf("error:%s\n",err_msg);}}sqlite3_close(db);
}int main(int argc,char **argv)
{if(argc != 2){printf("param is error\n");exit(-1);}result(argv[1]);return 0;
} 
结果示例:


