sqlite中for循环按日期顺序插入的sql语句怎么写呢?

泛地理信息开发者空间
博客专家认证
2023-05-21 16:05:02

比如指定一个时间段,然后循环插入sqlite数据库表中。

...全文
346 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
造次阿 2023-05-21
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <sqlite3.h>

int main() {
    sqlite3 *db;
    int rc;

    // 打开数据库
    rc = sqlite3_open(":memory:", &db);
    if (rc != SQLITE_OK) {
        fprintf(stderr, "无法打开数据库: %s\n", sqlite3_errmsg(db));
        return 1;
    }

    // 创建表
    const char *createTableSQL = "CREATE TABLE students (id INTEGER PRIMARY KEY, name TEXT, date TEXT);";
    rc = sqlite3_exec(db, createTableSQL, 0, 0, 0);
    if (rc != SQLITE_OK) {
        fprintf(stderr, "无法创建表: %s\n", sqlite3_errmsg(db));
        sqlite3_close(db);
        return 1;
    }

    // 模拟要插入的日期数据
    const char *dates[] = {"2023-01-01", "2023-02-15", "2023-03-10", "2023-04-20"};

    // 按日期顺序插入数据
    const char *insertSQL = "INSERT INTO students (name, date) VALUES ('John', ?);";
    sqlite3_stmt *stmt;
    rc = sqlite3_prepare_v2(db, insertSQL, -1, &stmt, 0);
    if (rc != SQLITE_OK) {
        fprintf(stderr, "无法准备插入语句: %s\n", sqlite3_errmsg(db));
        sqlite3_close(db);
        return 1;
    }

    int i;
    for (i = 0; i < 4; i++) {
        // 绑定日期参数
        rc = sqlite3_bind_text(stmt, 1, dates[i], -1, SQLITE_STATIC);
        if (rc != SQLITE_OK) {
            fprintf(stderr, "无法绑定参数: %s\n", sqlite3_errmsg(db));
            sqlite3_finalize(stmt);
            sqlite3_close(db);
            return 1;
        }

        // 执行插入语句
        rc = sqlite3_step(stmt);
        if (rc != SQLITE_DONE) {
            fprintf(stderr, "无法执行插入语句: %s\n", sqlite3_errmsg(db));
            sqlite3_finalize(stmt);
            sqlite3_close(db);
            return 1;
        }

        // 重置语句以进行下一次循环
        sqlite3_reset(stmt);
    }

    // 释放语句对象和关闭数据库连接
    sqlite3_finalize(stmt);
    sqlite3_close(db);

    return 0;
}

OhDurianMonkey 2023-05-21
  • 打赏
  • 举报
回复
1人已打赏

-- 创建表格
CREATE TABLE IF NOT EXISTS my_table (
  id INTEGER PRIMARY KEY,
  date TEXT,
  data TEXT
);

-- 要插入的数据
-- 以下数据按照日期顺序排列
-- 修改数据和日期以适应你的需求
INSERT INTO my_table (date, data) VALUES ('2023-01-01', '数据 1');
INSERT INTO my_table (date, data) VALUES ('2023-01-03', '数据 2');
INSERT INTO my_table (date, data) VALUES ('2023-01-02', '数据 3');

-- 查询并按日期顺序返回数据
SELECT * FROM my_table ORDER BY date;

-- 使用循环按日期顺序插入数据
BEGIN;
-- 修改循环起始日期和结束日期以适应你的需求
FOR date_value IN ('2023-01-01', '2023-01-02', '2023-01-03')
LOOP
  INSERT INTO my_table (date, data) VALUES (date_value, '数据');
END LOOP;
COMMIT;

-- 按日期顺序返回更新后的数据
SELECT * FROM my_table ORDER BY date;

4

社区成员

发帖
与我相关
我的任务
社区描述
现任CSDN博客专家(CSDN博客访问量600万+)。熟练掌握C++、Java和Python等多门开发语言。在遥感图像处理、地理信息系统、导航地图和三维可视化方面具有丰富的开发经验。
pythonc++qt 个人社区
社区管理员
  • clever101
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧