成都网站商城建设,安居客二手房出售信息,关键词优化是怎么弄的,网站开发大数据1.SQLite简介
轻量化#xff0c;易用的嵌入式数据库#xff0c;用于设备端的数据管理#xff0c;可以理解成单点的数据库。传统服务器型数据 库用于管理多端设备#xff0c;更加复杂。
SQLite是一个无服务器的数据库#xff0c;是自包含的。这也称为嵌入式数据库#x…1.SQLite简介
轻量化易用的嵌入式数据库用于设备端的数据管理可以理解成单点的数据库。传统服务器型数据 库用于管理多端设备更加复杂。
SQLite是一个无服务器的数据库是自包含的。这也称为嵌入式数据库这意味着数据库引擎作 为应用程序的一部分运行。 MySQL需要运行服务器MySQL将需要客户端和服务器架构通过网络进行交互。
SQLite和MySQL的优缺点对比 基于嵌入式的数据库主要有SQLiteFirebirdBerkeley DBeXtremeDB
Firebird 是关系型数据库功能强大支持存储过程SQL兼容等
SQLite 关系型数据库体积小支持ACID事务
Berkeley DB 并没有数据库服务器的概念他的程序直接链接到应用程序中 eXtremeDB 是内存数据库运行效率高
2 SQLite数据库安装
安装方式一 sudo apt-get -y install sqlite
安装方式二
https://www.sqlite.org/download.html
1. 把下载的文件sqlite-autoconf-3390000.tar.gz上传到开发板
2. tar xvf sqlite-autoconf-3390000.tar.gz 解压
3. cd sqlite-autoconf-3390000 进入文件夹
4. ./configure --prefix/usr/local 配置安装路径在/usr/local
5. make 编译//比较久10分钟
6. sudo make install 安装
安装成功过运行sqlite3 进入SQL命令操作流程。
3.SQLite的命令用法
创建一个数据库
方式一
1. sqlite3 进入数据库
2. .open test.db
3. .quit
数据库退出后在命令当前路径创建数据库test.db
方式二
sqlite3 test.db //在命令运行当前窗口创建数据库test.db
在数据库命令下
.databases 列出当前打开的数据库
.quit 退出创建一张表格
create table stu2(id Integer,name char,score Integer);
插入一条记录
insert into stu values(18130106,huang,99);
insert into stu2 values(18130101,gang,100); 和都行
insert into stu(name,score) values(huanggang,98); 插入部分字段内容查看数据库的记录
select * from stu; //查询所有字段的结果
select name,score from stu; //查询数据库中部分字段的内容删除一条记录
delete from stu where id 18130101;更改一条记录
update stu set name huangg where id 18130106;删除一张表
drop table stu;
增加一列
alter table stu add column sex char;4.SQLite的编程操作
sqlite3_open(const char *filename, sqlite3 **ppDb)
该例程打开一个指向 SQLite 数据库文件的连接返回一个用于其他 SQLite 程序的数据库连接对象。sqlite3_close(sqlite3*)
该例程关闭之前调用 sqlite3_open() 打开的数据库连接。所有与连接相关的语句都应在连接关闭之前完
成。
如果还有查询没有完成sqlite3_close() 将返回 SQLITE_BUSY 禁止关闭的错误消息。const char *sqlite3_errmsg(sqlite3*);sqlite3_errcode() 通常用来获取最近调用的API接口返回的错误代码.示例代码
1、打开数据库
#include stdio.h
#include sqlite3.h
int main(char argc, char **argv)
{sqlite3 *db;int ret;if(argc 2){printf(Usage: %s xxx.db\n,argv[0]);return -1;}if( (ret sqlite3_open(argv[1],db)) SQLITE_OK){printf(open %s success\n,argv[1]);}else{printf(error:%s,%d\n,sqlite3_errmsg(db),ret);if(ret 14){printf(permission den\n);}return -1;}sqlite3_close(db);printf(done\n);return 0;
} 2、创建表的接口
sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void *data, char
**errmsg)
该例程提供了一个执行 SQL 命令的快捷方式SQL 命令由 sql 参数提供可以由多个 SQL 命令组成。
在这里第一个参数 sqlite3 是打开的数据库对象sqlite_callback 是一个回调data 作为其第一
个参数errmsg 将被返回用来获取程序生成的任何错误。
sqlite3_exec() 程序解析并执行由 sql 参数所给的每个命令直到字符串结束或者遇到错误为止。int callback(void *arg, int column_size, char *column_value[], char
*column_name[])
参数分析
void *arg是sqlite3_exec函数的第四个参数
column_size数据库的字段数
column_value[]列的值
column_name字段名字
#include stdio.h
#include stdlib.h
#include sqlite3.hstatic int callback(void *NotUsed, int argc, char **argv, char **azColName){int i;for(i0; iargc; i){printf(%s %s\n, azColName[i], argv[i] ? argv[i] : NULL);}printf(\n);return 0;
}
int main(int argc, char* argv[])
{sqlite3 *db;char *zErrMsg 0;int rc;char *sql;/* Open database */rc sqlite3_open(test.db, db);if( rc ){fprintf(stderr, Cant open database: %s\n, sqlite3_errmsg(db));exit(0);}else{fprintf(stdout, Opened database successfully\n);}/* Create SQL statement */sql CREATE TABLE COMPANY( \ID INT PRIMARY KEY NOT NULL, \NAME TEXT NOT NULL, \AGE INT NOT NULL, \ADDRESS CHAR(50), \SALARY REAL );;/* Execute SQL statement */rc sqlite3_exec(db, sql, callback, 0, zErrMsg);if( rc ! SQLITE_OK ){fprintf(stderr, SQL error: %s\n, zErrMsg);sqlite3_free(zErrMsg);}else{fprintf(stdout, Table created successfully\n);}sqlite3_close(db);return 0;
}3、插入数据的接口
#include stdio.h
#include stdlib.h
#include sqlite3.h
static int callback(void *NotUsed, int argc, char **argv, char **azColName){int i;for(i0; iargc; i){printf(%s %s\n, azColName[i], argv[i] ? argv[i] : NULL);}printf(\n);return 0;
}int main(int argc, char* argv[])
{sqlite3 *db;char *zErrMsg 0;int rc;char *sql;/* Open database */rc sqlite3_open(test.db, db);if( rc ){fprintf(stderr, Cant open database: %s\n, sqlite3_errmsg(db));exit(0);}else{fprintf(stderr, Opened database successfully\n);}/* Create SQL statement */sql INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \VALUES (1, Paul, 32, California, 20000.00 ); \INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \VALUES (2, Allen, 25, Texas, 15000.00 ); \INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \VALUES (3, Teddy, 23, Norway, 20000.00 ); \INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \VALUES (4, Mark, 25, Rich-Mond , 65000.00 );;/* Execute SQL statement */rc sqlite3_exec(db, sql, callback, 0, zErrMsg);if( rc ! SQLITE_OK ){fprintf(stderr, SQL error: %s\n, zErrMsg);sqlite3_free(zErrMsg);}else{fprintf(stdout, Records created successfully\n);}sqlite3_close(db);return 0;
}4、select操作
#include stdio.h
#include stdlib.h
#include sqlite3.h
static int callback(void *data, int argc, char **argv, char **azColName){int i;fprintf(stderr, %s: , (const char*)data);for(i0; iargc; i){printf(%s %s\n, azColName[i], argv[i] ? argv[i] : NULL);}printf(\n);return 0;
}int main(int argc, char* argv[])
{sqlite3 *db;char *zErrMsg 0;int rc;char *sql;const char* data Callback function called;/* Open database */rc sqlite3_open(test.db, db);/* Create SQL statement */sql SELECT * from COMPANY;/* Execute SQL statement */rc sqlite3_exec(db, sql, callback, (void*)data, zErrMsg);sqlite3_close(db);return 0;
}5、update操作
#include stdio.h
#include stdlib.h
#include sqlite3.h
static int callback(void *data, int argc, char **argv, char **azColName){int i;fprintf(stderr, %s: , (const char*)data);for(i0; iargc; i){printf(%s %s\n, azColName[i], argv[i] ? argv[i] : NULL);}printf(\n);return 0;
}
int main(int argc, char* argv[])
{sqlite3 *db;char *zErrMsg 0;int rc;char *sql;const char* data Callback function called;/* Open database */rc sqlite3_open(test.db, db);if( rc ){fprintf(stderr, Cant open database: %s\n, sqlite3_errmsg(db));exit(0);}else{fprintf(stderr, Opened database successfully\n);}/* Create merged SQL statement */sql UPDATE COMPANY set SALARY 25000.00 where ID1; \SELECT * from COMPANY;/* Execute SQL statement */rc sqlite3_exec(db, sql, callback, (void*)data, zErrMsg);if( rc ! SQLITE_OK ){fprintf(stderr, SQL error: %s\n, zErrMsg);sqlite3_free(zErrMsg);}else{fprintf(stdout, Operation done successfully\n);}sqlite3_close(db);return 0;
}
6、delect操作
#include stdio.h
#include stdlib.h
#include sqlite3.h
static int callback(void *data, int argc, char **argv, char **azColName){int i;fprintf(stderr, %s: , (const char*)data);for(i0; iargc; i){printf(%s %s\n, azColName[i], argv[i] ? argv[i] : NULL);}printf(\n);return 0;
}
int main(int argc, char* argv[])
{sqlite3 *db;char *zErrMsg 0;int rc;char *sql;const char* data Callback function called;/* Open database */rc sqlite3_open(test.db, db);if( rc ){fprintf(stderr, Cant open database: %s\n, sqlite3_errmsg(db));exit(0);}else{fprintf(stderr, Opened database successfully\n);}/* Create merged SQL statement */sql DELETE from COMPANY where ID2; \SELECT * from COMPANY;/* Execute SQL statement */rc sqlite3_exec(db, sql, callback, (void*)data, zErrMsg);if( rc ! SQLITE_OK ){fprintf(stderr, SQL error: %s\n, zErrMsg);sqlite3_free(zErrMsg);}else{fprintf(stdout, Operation done successfully\n);}sqlite3_close(db);return 0;
}