html网页设计环保网站,房山区做网站,一起做网店的网站,深圳app开发公司鑫酷一#xff1a;数据库分类
常用的数据库
大型数据库 #xff1a;Oracle商业、多平台、关系型数据库功能最强大、最复杂、市场占比最高的商业数据库
中型数据库 #xff1a;Server是微软开发的数据库产品#xff0c;主要支持windows平台
小型数据库 : mySQL是一个小型关系型…一数据库分类
常用的数据库
大型数据库 Oracle商业、多平台、关系型数据库功能最强大、最复杂、市场占比最高的商业数据库
中型数据库 Server是微软开发的数据库产品主要支持windows平台
小型数据库 : mySQL是一个小型关系型数据库管理系统。开放源码、目前使用最广泛、流行度最高的的开源数据库SQLite基础SQLite的源代码是C其源代码完全开放。它是一个轻量级的嵌入式数据库。SQLite有以下特性 零配置————无需安装和管理配置 储存在单一磁盘文件中的一个完整的数据库 数据库文件可以在不同字节顺序的机器间自由共享 支持数据库大小至2TB1024G 1TB足够小全部源码大致3万行c代码250KB 比目前流行的大多数数据库对数据的操作要快
二源码安装与测试
tar xf sqlite-autoconf-3460000.tar.gz
cd sqlite-autoconf-3460000
./configure
make
sudo make install测试
sqlite3 -version
3.46.0 2024-05-23
三基础语句链接 【腾讯文档】sqlite基础SQL语句使用 sqlite基础SQL语句使用 四函数接口 文件#include sqlite3.h
编译gcc sqlite1.c -lsqlite31.int sqlite3_open(char *path, sqlite3 **db);功能打开sqlite数据库如果数据库不存在则创建它
path 数据库文件路径
db 指向sqlite句柄的指针
返回值成功返回SQLITE_OK失败返回错误码(非零值)2.int sqlite3_close(sqlite3 *db);功能关闭sqlite数据库
返回值成功返回SQLITE_OK失败返回错误码返回值返回错误信息3.执行sql语句接口
int sqlite3_exec(sqlite3 *db, /* An open database */const char *sql, /* SQL to be evaluated */int (*callback)(void*,int,char**,char**), /* Callback function */void *arg, /* 1st argument to callback */char **errmsg /* Error msg written here */
);功能执行SQL操作
db数据库句柄
sql要执行SQL语句
callback回调函数(满足一次条件调用一次函数用于查询)再调用查询sql语句的时候使用回调函数打印查询到的数据
arg:传递给回调函数的参数
errmsg错误信息指针的地址
返回值成功返回SQLITE_OK失败返回错误码回调函数int (*sqlite3_callback)(void *para, int f_num, char **f_value, char **f_name);功能select:每找到一条记录自动执行一次回调函数
para传递给回调函数的参数由 sqlite3_exec() 的第四个参数传递而来
f_num记录中包含的字段数目
f_value包含每个字段值的指针数组列值
f_name包含每个字段名称的指针数组列名
返回值成功返回SQLITE_OK失败返回-1每次回调必须返回0后才能继续下次回调4.不使用回调函数执行SQL语句(只用于查询)
int sqlite3_get_table(sqlite3 *db, const char *sql, char ***resultp, int *nrow, int *ncolumn, char **errmsg);功能执行SQL操作
db数据库句柄
sqlSQL语句
resultp用来指向sql执行结果的指针
nrow满足条件的记录的数目(但是不包含字段名(表头 id name score))
ncolumn每条记录包含的字段数目
errmsg错误信息指针的地址返回值成功返回SQLITE_OK失败返回错误码5.返回sqlite3定义的错误信息
char *sqlite3_errmsg(sqlite3 *db);五函数编程 #include stdio.h
#include sqlite3.h
#include errno.h// int callback(void *arg, int f_num, char **f_val, char **f_name)
// {
// for (int i 0; i f_num; i)
// {
// printf(%s\n, f_val[i]);
// }
// return 0;
// }int main(int argc, char const *argv[])
{sqlite3 *db;if (sqlite3_open(./stu.db, db) ! SQLITE_OK){fprintf(stderr, sqlite3_open err%s\n, sqlite3_errmsg(db));return -1;}char *errmsg NULL;// 创建表if (sqlite3_exec(db, create table stu3(id int,name char,score float);, NULL, NULL, errmsg) ! SQLITE_OK){fprintf(stderr, create table stu3 err:%s\n, errmsg);//return -1;//注释之后追加}printf(sqlites ok\n);// 插入数据依次插入int num, id;char name[32];float score;char sql[128];printf(please input you num:);scanf(%d, num);for (int i 0; i num; i){scanf(%d %s %f, id, name, score);sprintf(sql, insert into stu3 values(%d ,\%s\ ,%f);, id, name, score);printf(%s\n, sql);if (sqlite3_exec(db, sql, NULL, NULL, errmsg) ! SQLITE_OK){fprintf(stderr, create table stu3 err%s\n, errmsg);return -1;}}// 查询// if (sqlite3_exec(db, select id,score from stu3;, callback, hello, errmsg) ! SQLITE_OK)// {// fprintf(stderr, select err:%ss\n, errmsg);// return -1;// }char **result NULL;int hang, lie, k 0;if (sqlite3_get_table(db, select id,score from stu3;, result, hang, lie, errmsg) ! SQLITE_OK){fprintf(stderr, select err:%ss\n, errmsg);return -1;}printf(hang%d:lie%d\n, hang, lie);for (int i 0; i hang 1; i){for (int i 0; i lie; i)printf(%s\n, result[k]);printf(\n);}sqlite3_close(db);return 0;
}注释在数据库编程中最终的编译阶段需要链接他们的库函数