wordpress 网址 建站5人免费crm
- 作者: 多梦笔记
- 时间: 2026年02月18日 14:49
当前位置: 首页 > news >正文
wordpress 网址 建站,5人免费crm,网络推广代理怎么做,wordpress 获取当前位置目录 一. 数据库的概念 二. 常用的数据库 三. SQL基础 四. SQL语句的使用 一. 数据库的概念 数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。 数据库是存放数据的仓库。它的存储空…目录 一. 数据库的概念 二. 常用的数据库 三. SQL基础 四. SQL语句的使用 一. 数据库的概念 数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。 数据库是存放数据的仓库。它的存储空间很大可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放是有一定的规则的否则查询的效率会很低。当今世界是一个充满着数据的互联网世界充斥着大量的数据。即这个互联网世界就是数据世界。数据的来源有很多比如出行记录、消费记录、浏览的网页、发送的消息等等。 二. 常用的数据库 大型数据库 Oracle中型数据库 Server是微软开发的数据库产品主要支持windows平台小型数据库 : mySQL是一个小型关系型数据库管理系统。开放源码 (嵌入式不需要存储太多数据) mySQL与SQLite区别 MySQL和SQLite是两种不同的数据库管理系统它们在多个方面有所不同。 1. 性能和规模MySQL通常用于大型应用程序和网站它可以处理大量数据和高并发访问。SQLite则更适合于小型应用程序或移动设备因为它是一个轻量级的数据库引擎不需要独立的服务器进程可以直接访问本地文件。 2. 部署和配置MySQL需要单独的服务器进程来运行需要配置和管理数据库服务器。而SQLite是一个嵌入式数据库可以直接嵌入到应用程序中不需要单独的服务器进程。 3. 功能和特性MySQL提供了更多的功能和高级特性比如存储过程、触发器、复制和集群支持等。SQLite则是一个轻量级的数据库引擎功能相对较少但对于简单的数据存储和检索已经足够。 4. 跨平台支持SQLite在各种操作系统上都能够运行而MySQL需要在特定的操作系统上安装和配置数据库服务器。 总之MySQL适用于大型应用程序和网站需要处理大量数据和高并发访问而SQLite适用于小型应用程序或移动设备对性能和规模要求没有那么高。 三. SQL基础 SQLite的源代码是C其源代码完全开放。它是一个轻量级的嵌入式数据库。 SQLite有以下特性 零配置一无需安装和管理配置 储存在单一磁盘文件中的一个完整的数据库 数据库文件可以在不同字节顺序的机器间自由共享 支持数据库大小至2TB1024G 1TB//嵌入式足够 足够小全部源码大致3万行c代码250KB 比目前流行的大多数数据库对数据的操作要快 四. SQL语句的使用 1.打开数据库 int sqlite3_open(char *path, sqlite3 db); 功能打开sqlite数据库如果数据库不存在则创建它 参数path 数据库文件路径db 指向sqlite句柄的指针 返回值成功返回SQLITE_OK0失败返回错误码(非零值)2.返回错误信息 char *sqlite3_errmsg(sqlite3 *db); 功能: 获取错误信息 返回值返回错误信息 使用: fprintf(stderr,sqlite3_open failed %s\n,sqlite3_errmsg(db));3.关闭数据库 int sqlite3_close(sqlite3 *db); 功能关闭sqlite数据库 返回值成功返回SQLITE_OK失败返回错误码4.执行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失败返回错误码 回调函数 typedef 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后才能继续下次回调 不使用回调函数执行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失败返回错误码#include stdio.h #include sqlite3.hint callback(void *buf, int num, char **value, char name);int main(int argc, char const *argv[]) {sqlite3 *db;// 1.打开数据库if (sqlite3_open(./stu.db, db) ! SQLITE_OK){// 打印错误信息fprintf(stderr, open err:%s\n, sqlite3_errmsg(db));return -1;}// 数据库的操作char *errmsg NULL;if (sqlite3_exec(db, create table if not exists stu(id int ,name char, score float);, NULL, NULL, errmsg) ! 0){fprintf(stderr, create err:%s\n, errmsg);return -1;}printf(create table okk\n);// 插入数据/if (sqlite3_exec(db, insert into stu values(1,huanhuan,99.99), NULL, NULL, errmsg) ! 0){fprintf(stderr, insert err:%s\n, errmsg);return -1;}printf(insert okk\n);/int num;printf(请输入学生人数);scanf(%d, num);int id;char name[32] {0};float score;char sql[128] {0};for (int i 0; i num; i){printf(请输入学生学号 姓名 成绩:);scanf(%d %s %f, id, name, score);sprintf(sql, insert into stu values(%d,%s,%f), id, name, score);if (sqlite3_exec(db, sql, NULL, NULL, errmsg) ! 0){fprintf(stderr, insert err:%s\n, errmsg);return -1;}printf(insert okk\n);}// 查询数据//if (sqlite3_exec(db, select * from stu ;, callback, hello, errmsg) ! 0){fprintf(stderr, select err:%s\n, errmsg);return -1;}printf(select okk\n);// 专门用于查询数据的函数:sqlite3_get_table// row:行// column:列char **result NULL;int row 0, column 0;sqlite3_get_table(db, select * from stu ;, result, row, column, errmsg);int k 0;printf(row:%d column:%d\n,row,column);for (int i 0; i row; i){for (int j 0; j column; j)printf(%s , result[k]);putchar(10);}// 关闭sqlite3_close(db);return 0; }int callback(void *buf, int num, char **value, char name) {// 每查询到一条符合条件的数据就会调用一次函数static int i 1;printf(%s:%d\n, (char *)buf, i);// num:列数// value:值// name:列名for (int j 0; j num; j){printf(%s , name[j]);}putchar(10);for (int j 0; j num; j){printf(%s , value[j]);}putchar(10);printf(*************************************\n);return 0; // 必须存在,不然sqlite_exec函数会报错 } 59
相关文章
-
wordpress 网站同步常用的网络推广方式有哪些
wordpress 网站同步常用的网络推广方式有哪些
- 站长
- 2026年02月18日
-
wordpress 网站静态页面wordpress seo模板
wordpress 网站静态页面wordpress seo模板
- 站长
- 2026年02月18日
-
wordpress 网站换域名石家庄网站建设外贸
wordpress 网站换域名石家庄网站建设外贸
- 站长
- 2026年02月18日
-
wordpress 微网站模板企业网站建设和实现 论文
wordpress 微网站模板企业网站建设和实现 论文
- 站长
- 2026年02月18日
-
wordpress 未登录提示外贸网站推广平台蓝颜seo牛
wordpress 未登录提示外贸网站推广平台蓝颜seo牛
- 站长
- 2026年02月18日
-
wordpress 文章代码块福州seo网站推广优化
wordpress 文章代码块福州seo网站推广优化
- 站长
- 2026年02月18日
