学习笔记——SQLite3 编程与 HTML 基础

SQLite3 编程与 HTML 基础

一、SQLite3 编程基础

1. 基本流程

复制代码
#include <sqlite3.h>

// 1. 打开数据库
int sqlite3_open(const char *filename, sqlite3 **ppDb);

// 2. 执行SQL语句
int sqlite3_exec(
    sqlite3 *db,                     // 数据库句柄
    const char *sql,                 // SQL语句
    int (*callback)(void*,int,char**,char**), // 回调函数
    void *arg,                       // 回调函数参数
    char **errmsg                    // 错误信息
);

// 3. 关闭数据库
int sqlite3_close(sqlite3 *db);

2. 完整示例

cpp 复制代码
#include <sqlite3.h>
#include <stdio.h>

// 回调函数 - 显示查询结果
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;  // 必须返回0,否则只调用一次
}

int main(int argc, char** argv)
{
    sqlite3* db = NULL;
    char* errmsg = NULL;
    
    // 1. 打开数据库
    int ret = sqlite3_open("123.db", &db);
    if (ret != SQLITE_OK)
    {
        fprintf(stderr, "sqlite3_open error: %s\n", sqlite3_errmsg(db));
        sqlite3_close(db);
        return 1;
    }
    
    // 2.1 插入数据
    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 error: %s\n", errmsg);
        sqlite3_free(errmsg);
        sqlite3_close(db);
        return 1;
    }
    
    // 2.2 查询数据
    char query_cmd[512] = "select * from user;";
    ret = sqlite3_exec(db, query_cmd, show, NULL, &errmsg);
    if (ret != SQLITE_OK)
    {
        fprintf(stderr, "sqlite3_exec error: %s\n", errmsg);
        sqlite3_free(errmsg);
        sqlite3_close(db);
        return 1;
    }
    
    // 3. 关闭数据库
    sqlite3_close(db);
    return 0;
}

3. 重要注意事项

  • sqlite3_exec 的回调函数会被调用多次,每次处理一条记录

  • 回调函数必须返回0,否则只会调用一次

  • 错误信息需要使用 sqlite3_free() 释放

  • 每次操作后都应检查返回值

二、HTML 基础

1. 基本结构

复制代码
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>页面标题</title>
</head>
<body>
    页面内容...
</body>
</html>

2. 常用标签

超链接 <a>
复制代码
<!-- 1. 链接外部网站 -->
<a href="http://www.baidu.com">百度</a>

<!-- 2. 链接本地文件 -->
<a href="1.html">本地页面</a>

<!-- 3. 图片链接 -->
<a href="1.html">
    <img src="abc.jpg" alt="图片描述">
</a>
图片 <img>
复制代码
<!-- 单标签 -->
<img src="abc.jpg" alt="图片描述" width="100" height="200">
<img src="abc.jpg" alt="图片描述" width="50%" height="50%">

属性说明:

  • src:图像来源(必需)

  • alt:替代文本(图片无法显示时显示)

  • width, height:宽高(像素或百分比)

表单 <form>
复制代码
<form action="submit.php" method="post">
    <!-- 表单元素 -->
</form>

表单属性:

  • action:数据提交的目标地址

  • method:提交方式

    • get:数据附加在URL后面(默认)

    • post:数据打包发送(更安全)

输入框 <input>
复制代码
<!-- 文本输入框 -->
<input type="text" name="username" placeholder="请输入用户名" required>

<!-- 密码框 -->
<input type="password" name="password">

<!-- 提交按钮 -->
<input type="submit" value="提交">

<!-- 重置按钮 -->
<input type="reset" value="重置">

<!-- 普通按钮 -->
<input type="button" value="点击" οnclick="function()">

<!-- 图片按钮 -->
<input type="image" src="button.jpg">

<!-- 隐藏字段 -->
<input type="hidden" name="token" value="abc123">

<!-- 邮箱输入 -->
<input type="email" name="email">

<input> 常用属性:

  • type:输入框类型

  • name:参数名称(传递给服务器的变量名)

  • value:默认值

  • maxlength:最大长度

  • placeholder:提示信息

  • required:必填项

3. 学习资源

三、总结

SQLite3 编程要点

  1. 三部曲:打开 → 执行 → 关闭

  2. 错误处理:每次操作后检查返回值

  3. 资源管理:及时关闭数据库和释放错误信息

  4. 回调函数:正确处理查询结果

HTML 学习要点

  1. 语义化:使用合适的标签

  2. 属性:了解常用属性的作用

  3. 表单:重点掌握数据提交方式

  4. 兼容性:注意不同浏览器的支持差异

开发建议

  1. 始终检查SQLite操作的返回值

  2. HTML标签属性使用双引号

  3. 表单设计考虑用户体验

  4. 图片添加alt属性提高可访问性

相关推荐
wa的一声哭了2 小时前
赋范空间 赋范空间的完备性
python·线性代数·算法·机器学习·数学建模·矩阵·django
im_AMBER2 小时前
Leetcode 91 子序列首尾元素的最大乘积
数据结构·笔记·学习·算法·leetcode
Tisfy2 小时前
LeetCode 840.矩阵中的幻方:模拟(+小小位运算)
算法·leetcode·矩阵
Word码2 小时前
LeetCode1089. 复写零(双指针精讲)
算法
Aliex_git2 小时前
Vue 2 - 模板编译源码理解
前端·javascript·vue.js·笔记·前端框架
saadiya~2 小时前
实战笔记:在 Ubuntu 离线部署 Vue + Nginx 踩坑与避雷指南
vue.js·笔记·nginx
Swift社区2 小时前
LeetCode 461 - 汉明距离
算法·leetcode·职场和发展
CoderCodingNo2 小时前
【CSP】CSP-XL 2025辽宁复赛真题-第三题, 小L打比赛(match)
数据结构·算法
被遗忘在角落的死小孩2 小时前
SSD 存储安全协议 TCG KPIO 笔记
笔记·安全