学习笔记——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属性提高可访问性

相关推荐
dapeng28701 小时前
分布式系统容错设计
开发语言·c++·算法
qq_417695051 小时前
代码热修复技术
开发语言·c++·算法
疯狂吧小飞牛7 小时前
GPG基础指令
linux·服务器·网络
Liu628888 小时前
C++中的工厂模式高级应用
开发语言·c++·算法
小饕8 小时前
苏格拉底式提问对抗315 AI投毒:实操指南
网络·人工智能
AI科技星8 小时前
全尺度角速度统一:基于 v ≡ c 的纯推导与验证
c语言·开发语言·人工智能·opencv·算法·机器学习·数据挖掘
hjxu20168 小时前
【OpenClaw 龙虾养成笔记一】在远程服务器,使用Docker安装OpenClaw
服务器·笔记·docker
斯安8 小时前
车载总线与网络总结
网络
sinat_255487818 小时前
读者、作家 Java集合学习笔记
java·笔记·学习
czxyvX9 小时前
009-数据链路层
网络