热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

sqlite学习笔记10:C语言中使用sqlite之查询和更新数据

前面说到的sqlite_exec()中的第三个参数,SQLite将为sql参数内执行的每个SELECT语句中处理的每个记录调用这个回调函数。本节添加了两个函数,selectFromTable和updateTable.实例程序如下:#include#include#includesqlitesqli

前面说到的 sqlite_exec() 中的第三个参数, SQLite 将为 sql 参数内执行的每个 SELECT 语句中处理的每个记录调用这个回调函数。

本节添加了两个函数,selectFromTable和updateTable.


实例程序如下:

#include 
#include 
#include "sqlite/sqlite3.h"

#define DB_NANE "sqlite/test.db"

sqlite3 *db = NULL;
char* sql = NULL;
char *zErrMsg = NULL;
const char* data = "Callback function called";/* 改为全局的 */
int ret = 0;

typedef enum{
    false,
    true
} bool;

/*
typedef int (*sqlite3_callback)(
void*,    Data provided in the 4th argument of sqlite3_exec()
int,      The number of columns in row
char**,   An array of strings representing fields in the row
char**    An array of strings representing column names
);
*/
static int callback(void *NotUsed, int argc, char **argv, char **azColName)
{
    int i = 0;
    for(i=0; i 
bool selectFromTable()/*新加*/
{
    /* Create SQL statement */
    sql = "SELECT * from COMPANY";
    
    /* Execute SQL statement */
    ret = sqlite3_exec(db, sql, callback, (void*)data, &zErrMsg);
    if( ret != SQLITE_OK ){
        fprintf(stderr, "Error SQL: %s\n", zErrMsg);
        sqlite3_free(zErrMsg);
        return false;
    }
    
    fprintf(stdout, "successfully operation done\n");
    
    return true;
}

bool updateTable()/* 新加 */
{
    /* Create merged SQL statement */
    sql = "UPDATE COMPANY set SALARY = 25000.00 where ID=1; " \
    "SELECT * from COMPANY";
    
    /* Execute SQL statement */
    ret = sqlite3_exec(db, sql, callback, (void*)data, &zErrMsg);
    if( ret != SQLITE_OK ){
        fprintf(stderr, "SQL error: %s\n", zErrMsg);
        sqlite3_free(zErrMsg);
        
        return false;
    }
    
    fprintf(stdout, "Successfully operation done \n");
    
    return true;
}



bool closeDB()
{
    int ret = 0;
    ret = sqlite3_close(db);
    if ( ret == SQLITE_BUSY ){
        return false;
    }
    
    return true;
}

int main(int argc, char* argv[])
{
    connectDB();
    /*createTable();*/
    /*insertRecords();*/
    selectFromTable();
    updateTable();
    selectFromTable();
    closeDB();
    
    return 0;
}



推荐阅读
  • 本文讨论了在处理分页数据时常见的低级错误,并提供了优化后的代码示例,以减少重复代码并提高可读性和维护性。 ... [详细]
  • 使用C#向mysql的date字段插入空值时,报错,怎么办?
    使用的是ado.net的参数化查询方式,不知道是怎么回事? ... [详细]
  • 查询技巧:获取数据库中第二高薪水的方法
    本文将介绍如何使用SQL查询语句从Employee表中提取出第二高的薪水(Salary)。例如,在给定的Employee表中,通过SQL查询可以正确返回200作为第二高的薪水。 ... [详细]
  • 本文探讨了如何利用Pandas库在Python中执行复杂的多条件左连接操作,特别是当需要基于不同列的不同键进行连接时的方法。 ... [详细]
  • 本文详细介绍如何在Spring Boot项目中集成和使用JPA,涵盖JPA的基本概念、Spring Data JPA的功能以及具体的操作步骤,帮助开发者快速掌握这一强大的持久化技术。 ... [详细]
  • 设计模式系列-原型模式
    一、上篇回顾上篇创建者模式中,我们主要讲述了创建者的几类实现方案,和创建者模式的应用的场景和特点,创建者模式适合创建复杂的对象,并且这些对象的每个组成部分的详细创建步骤可以是动态的变化的,但 ... [详细]
  • 抽象工厂模式 c++
    抽象工厂模式包含如下角色:AbstractFactory:抽象工厂ConcreteFactory:具体工厂AbstractProduct:抽象产品Product:具体产品https ... [详细]
  • 代码生成器实战教程:提升编程效率的利器
    本系列文章旨在通过一系列实践案例,详细介绍如何利用代码生成器提高开发效率。本文将引导您完成从下载安装到实际应用的全过程。 ... [详细]
  • UMPlatForm.NET 5.1 版本数据字典管理功能解析
    本文介绍了 UMPlatForm.NET 5.1 版本中的数据字典管理模块,探讨了该模块如何支持平台的数据共享与管理,以及如何通过用户和角色权限来增强系统的安全性。 ... [详细]
  • 本文探讨了SQLAlchemy ORM框架中如何利用外键和关系(relationship)来建立表间联系,简化复杂的查询操作。通过示例代码详细解释了relationship的定义、使用方法及其与外键的相互作用。 ... [详细]
  • 本文介绍了Android SDK Platform Tools的核心功能及其重要性。作为Android SDK的一个关键组成部分,Platform Tools提供了开发者与Android设备进行交互所需的各种工具。 ... [详细]
  • 本文档提供了详细的MySQL安装步骤,包括解压安装文件、选择安装类型、配置MySQL服务以及设置管理员密码等关键环节,帮助用户顺利完成MySQL的安装。 ... [详细]
  • 本文探讨了HTA(HTML Application)环境中HTML5 IndexedDB的可用性问题,并提供了一种替代方案,即通过使用COM ActiveX对象来实现数据存储功能。 ... [详细]
  • 本文介绍了多种将多行数据合并为单行的方法,包括使用动态SQL、函数、CTE等技术,适用于不同的SQL Server版本。 ... [详细]
  • SQLite是一种轻量级的关系型数据库管理系统,尽管体积小巧,却能支持高达2TB的数据库容量,每个数据库以单个文件形式存储。本文将详细介绍SQLite在Android开发中的应用,包括其数据存储机制、事务处理方式及数据类型的动态特性。 ... [详细]
author-avatar
手浪用户2602915623
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有