SQLiteデータベース
データベースは、データベース管理システムの管理下にあるストレージメディアに格納されたデータの集まりです。一般的に使用されるデータは、大、中、小のデータベースに分かれています。
1. SQLiteデータベース
SQLiteは、非常に少ないリソースを使用する軽量の組み込みデータベースです。組み込みデバイスでは、数百Kのメモリで十分な場合があります。その処理速度は、MysqlとPostgreSQLの2つの有名なデータベースよりも高速です。SQLiteは、データベースの操作に使用できるいくつかのC関数インターフェースを提供します。これらのインターフェースを使用して、いくつかの標準SQLステートメント(char *型)をSQLite関数に渡すと、SQLiteがデータベースを操作します。
- 構成不要、構成をインストールおよび管理する必要なし
- 単一のディスクファイルに格納された完全なデータベース
- データベースファイルは、バイトオーダーが異なるマシン間で自由に共有できます。
- 最大2TBのデータベースサイズをサポート
- 十分に小さく、ソースコード全体は約30,000行のCコード、250KBです。
- 最も一般的なデータベースよりも高速にデータを操作します
2. SQLiteデータベースの使用
2.1データベースのインストール
本地安装:sudo dpkg -i *.deb
在线安装:sudo apt-get install sqlite3
2.2データベースシステムコマンド
启动SQLite3:sqlite
打开数据库文件:sqlite <*.db> (若文件不存在则自动创建该文件)
显示所有命令:.help
退出sqlite3:.quit
显示当前打开的数据库文件:.database
显示数据库中所有表名:.tables
查看表的结构:.schema <table name>
2.3データベースsqlコマンド
//sql命令一定要以“;”结束
//以下以表stdinfo为例
创建表: create table stuinfo(id integer, name text, age integer, score float);
插入记录:insert into stuinfo values(1, 'Andy', 30, 99.9);
insert into stuinfo(id, name, score) values(2, 'Amy', 100);
查看记录:select * from stuinfo;
select * from stuinfo where score = 100;
select * from stuinfo where score = 99.9 and name = 'Andy';
select * from stuinfo where score = 99.9 or name = 'Amy';
select * from stuinfo where score > 80 and score < 100;
select name,score from stuinfo; //查询指定的字段
删除记录:delete from stuinfo where id = 1 and name = 'Andy';
更新记录:update stuinfo set age = 20,score = 100 where id = 1;
增加一列:alter table stuinfo add column sex char;
删除一列:create table stu as select id, name, score from stuinfo; //从stuinfo中复制新表(不包含要删除的列)
drop table stuinfo; //删除老的表stuinfo
alter table stu rename to stuinfo; //将新表stu重命名为stuinfo,完成删除列的操作
删除表: drop table stuinfo;
/***设置主键***/
设置主键: create table table_name(column1 datatype PRIMARY KEY, column2 datatype, ……);
//PRIMARY KEY表示该列为该表的“主关键字”,主关键字用于唯一索引表内的某一条记录,主关键字必须唯一且主关键字的列值不能为空
//一张表允许省略主关键字
2.4 SQLiteプログラミングインターフェイス
- データベースsqlite3_open()を開きます
函数原型:int sqlite3_open(char *path, sqlite3 **db)
输 入 值:path 数据库文件路径
db 指向sqlite句柄的指针
返 回 值:成功返回0;失败返回错误码(非零值)
- データベースsqlite3_close()を閉じます
函数原型:int sqlite3_close(sqlite3 *db)
输 入 值:db 指向sqlite句柄的指针
返 回 值:成功返回0;失败返回错误码(非零值)
- エラーメッセージsqlite3_errmg()を返す
函数原型:const char *sqlite3_errmg(sqlite3 *db)
输 入 值:db 指向sqlite句柄的指针
返 回 值:返回错误信息
- SQL操作を実行する(コールバック関数を使用)sqlite3_exec()
函数原型:typedef int (*sqlite3_callback)(void*,int,char**,char**); //定义sqlite3_exec()需要的回调函数的函数指针类型
int sqlite3_exec(sqlite3 *db, const char *sql, sqlite3_callback callback, void* para, char **errmsg)
输 入 值:db 需要操作的数据库的句柄指针
sql 需要对数据库执行的SQL语句
callback 回调函数,当执行SQL语句(第二个参数)成功后会自动运行该函数;如果不需要则设为NULL
para 传递给回调函数第一个参数的指针;如果不需要则设为NULL
errmsg 存储错误信息指针
返 回 值:成功返回0;失败返回错误码(非零值)
- 折り返し電話
函数原型:int function(void *para, int f_num, char *f_value[], char *f_name[])
输 入 值:para 传递给回调函数的参数(即sqlite3_exec()的第四个参数)
f_num 记录中包含的字段数目(列数)
f_value 包含每个字段值的指针数组(列的值)
f_name 包含每个字段名称的指针数组(列的名称)
返 回 值:成功返回0;失败返回-1
- (コールバック関数を使用せずに)SQL操作を実行するsqlite3_get_table()
函数原型:int sqlite3_get_table(
sqlite3 *db, /* 数据库句柄 */
const char *zSql, /* 需要对数据库执行的sql语句 */
char ***pazResult, /* 用来指向SQL执行结果的指针 */
int *pnRow, /* 满足条件的记录的数目 */
int *pnColumn, /* 每条记录包含的字段数目 */
char **pzErrmsg /* 错误信息指针的地址 */
)
返 回 值:成功返回0;失败返回错误码(非零值)