自学嵌入式day42,html

一、SQLite3 数据库操作

SQLite3 是一个轻量级数据库库,在 C 语言中常用 sqlite3_open, sqlite3_exec, 和 sqlite3_close 函数来管理数据库。以下是关键步骤:

  1. 打开数据库 (sqlite3_open)

    用于创建或连接数据库文件。示例代码中:

    c 复制代码
    sqlite3* db = NULL;
    int ret = sqlite3_open("123.db", &db);
    if (ret != SQLITE_OK) {
        fprintf(stderr, "sqlite3_open %s\n", sqlite3_errmsg(db));
        sqlite3_close(db);
        return 1;
    }
    • sqlite3_open 的第一个参数是数据库文件名(如 "123.db"),第二个参数是数据库句柄指针。
    • 返回值 ret 检查是否成功(SQLITE_OK 表示成功),失败时用 sqlite3_errmsg 获取错误信息。
    • 错误处理包括关闭数据库(sqlite3_close)并退出。
  2. 执行 SQL 语句 (sqlite3_exec)

    用于执行插入、查询等操作。示例中插入数据:

    c 复制代码
    char* errmsg = NULL;
    char sql_cmd[512] = "insert into user values(6,'lvbu',31);";
    ret = sqlite3_exec(db, sql_cmd, NULL, NULL, &errmsg);
    if (ret != SQLITE_OK) {
        fprintf(stderr, "sqlite3_exec %s\n", errmsg);
        sqlite3_free(errmsg);
        sqlite3_close(db);
        return 1;
    }
    • sql_cmd 是 SQL 命令字符串。
    • 第三个参数是回调函数指针,用于处理查询结果(在查询示例中用到)。
    • 错误时使用 sqlite3_free 释放错误消息内存。
  3. 处理查询结果(回调函数)

    当执行查询(如 SELECT)时,需定义回调函数来处理结果集。您提供的 show 函数示例:

    c 复制代码
    int show(void* arg, int col, char** result, char** title) {
        static int flag = 0;
        int i = 0;
        if (0 == flag) {
            flag = 1;
            for (i = 0; i < col; i++) {
                printf("%s\t\t", title[i]);
            }
            printf("\n");
        }
        for (i = 0; i < col; i++) {
            printf("%s\t\t", result[i]);
        }
        printf("\n");
        return 0;
    }
    • 回调函数在每次获取一条记录时被调用,调用次数等于结果集的行数。

    • col 是列数,title 是列名数组,result 是当前行的数据数组。

    • 返回值必须为 0,否则回调只执行一次(可能中断处理)。

    • sqlite3_exec 中指定回调:

      c 复制代码
      char sql_cmd[512] = "select * from user ;";
      ret = sqlite3_exec(db, sql_cmd, show, NULL, &errmsg);
  4. 关闭数据库 (sqlite3_close)

    操作完成后必须关闭数据库以释放资源:

    c 复制代码
    sqlite3_close(db);
  • 始终检查函数返回值并进行错误处理。
  • 使用回调函数时,确保其正确处理多行数据。
  • 避免 SQL 注入:在真实应用中,使用参数化查询而非拼接字符串。
二、HTML 基础

  1. HTML 基本结构

    示例代码:

    html 复制代码
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title>中文测试。。。</title>
        </head>
        <body>
            这里是测试body测试内容。。。
        </body>
    </html>
    • <!DOCTYPE html> 声明文档类型。
    • <html> 是根元素,包含 <head>(元数据)和 <body>(内容)。
    • <meta charset="utf-8"> 确保中文字符正确显示。
  2. 超链接 (<a> 标签)

    用于链接到外部网站、本地文件或图片:

    html 复制代码
    <a href="http://www.baidu.com">baidu</a>
    <br><a href="1.html">111</a>
    <br><a href="1.html"><img src="abc.jpg"></a>
    • href 属性指定目标 URL 或文件路径。
    • <br> 是换行标签。
    • 图片可作为链接内容(如第三行)。
  3. 图片 (<img> 标签)

    是单标签(无需闭合),常用属性:

    html 复制代码
    <img src="abc.jpg" alt="美女" width="100" height="200">
    <img src="abc.jpg" alt="美女" width="50%" height="200%">
    • src:图片来源路径。
    • alt:图片无法显示时的替代文本。
    • widthheight:指定尺寸(像素或百分比)。
  4. 表单 (<form> 标签)

    用于收集用户输入数据:

    html 复制代码
    <form action="submit.php" method="post">
        <!-- 输入元素 -->
    </form>
    • action:表单数据提交的目标 URL。

    • method:提交方式,get(数据附加到 URL)或 post(数据在请求体中),默认为 get

    • Input 元素 :表单的核心组件,示例属性:

      html 复制代码
      <input type="text" name="username" placeholder="请输入用户名" required>
      <input type="password" name="pwd">
      <input type="submit" value="提交">
      <input type="reset" value="重置">
      <input type="hidden" name="token" value="abc123">
      • type:输入类型,如 text(文本)、password(密码)、submit(提交按钮)、reset(重置按钮)、hidden(隐藏字段)。
      • name:参数名称,用于服务器识别。
      • value:默认值。
      • placeholder:提示文本。
      • required:必填字段(HTML5 特性)。
      • maxlength:最大输入长度。
相关推荐
剩下了什么4 小时前
MySQL JSON_SET() 函数
数据库·mysql·json
山峰哥4 小时前
数据库工程与SQL调优——从索引策略到查询优化的深度实践
数据库·sql·性能优化·编辑器
较劲男子汉5 小时前
CANN Runtime零拷贝传输技术源码实战 彻底打通Host与Device的数据传输壁垒
运维·服务器·数据库·cann
java搬砖工-苤-初心不变5 小时前
MySQL 主从复制配置完全指南:从原理到实践
数据库·mysql
山岚的运维笔记7 小时前
SQL Server笔记 -- 第18章:Views
数据库·笔记·sql·microsoft·sqlserver
roman_日积跬步-终至千里7 小时前
【LangGraph4j】LangGraph4j 核心概念与图编排原理
java·服务器·数据库
汇智信科7 小时前
打破信息孤岛,重构企业效率:汇智信科企业信息系统一体化运营平台
数据库·重构
野犬寒鸦8 小时前
从零起步学习并发编程 || 第六章:ReentrantLock与synchronized 的辨析及运用
java·服务器·数据库·后端·学习·算法
晚烛8 小时前
CANN + 物理信息神经网络(PINNs):求解偏微分方程的新范式
javascript·人工智能·flutter·html·零售
晚霞的不甘9 小时前
揭秘 CANN 内存管理:如何让大模型在小设备上“轻装上阵”?
前端·数据库·经验分享·flutter·3d