sqlite学习笔记11:C语言中使用sqlite之删除记录

最后一节,这里记录下如何删除数据。

前面所有的代码都继承在这里了,在Ubuntu14.04和Mac10.9上亲测通过。

#include <stdio.h>
#include <stdlib.h>
#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 < argc; i++){
        printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
    }
    printf("\n");

    return 0;
}

bool connectDB()
{
    ret = sqlite3_open(DB_NANE, &db);

    if( ret != SQLITE_OK){
        fprintf(stderr, "Error open database: %s\n", sqlite3_errmsg(db));
        sqlite3_free(zErrMsg);

        return false;
    }

    fprintf(stdout, "Successfully opened database\n");
    return true;
}

bool createTable()
{
    /* Create SQL statement */
    sql = "CREATE TABLE COMPANY("      "ID INT PRIMARY KEY     NOT NULL,"     "NAME           TEXT    NOT NULL,"     "AGE            INT     NOT NULL,"     "ADDRESS        CHAR(50),"     "SALARY         REAL );";

    /* Execute SQL statement */
    ret = sqlite3_exec(db, sql, callback, 0, &zErrMsg);
    if( ret != SQLITE_OK ){
        fprintf(stderr, "Error SQL: %s\n", zErrMsg);
        sqlite3_free(zErrMsg);

        return false;
    }

    fprintf(stdout, "Successfully table created\n");

    return true;
}

bool insertRecords()
{
    /* Create SQL statement */
    sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) "      "VALUES (1, 'Paul', 32, 'California', 20000.00 ); "     "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) "      "VALUES (2, 'Allen', 25, 'Texas', 15000.00 ); "         "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)"     "VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );"     "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)"     "VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );";

    /* Execute SQL statement */
    ret = sqlite3_exec(db, sql, callback, 0, &zErrMsg);
    if( ret != SQLITE_OK ){
        fprintf(stderr, "SQL error: %s\n", zErrMsg);
        sqlite3_free(zErrMsg);
        return false;
    }

    fprintf(stdout, "successfully records created\n");

    return true;
}

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 deleteTable()/*新加*/
{
    /* Create merged SQL statement */
    sql = "DELETE from COMPANY where ID=2; "     "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 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();*/
    deleteTable();
    selectFromTable();
    closeDB();

    return 0;
}

sqlite学习笔记11:C语言中使用sqlite之删除记录,布布扣,bubuko.com

时间: 2024-10-10 09:54:36

sqlite学习笔记11:C语言中使用sqlite之删除记录的相关文章

lua学习笔记11:lua中的小技巧

lua中的小技巧,即基础lua语言本身的特种,进行一个些简化的操作 一 巧用or x = x or v 等价于: if not x then x = v end 如果x为nil或false,就给他赋值为 二 三元运算符实现 a and b or c 类似C语言: a ? b : c and 的运算由优先级高于or lua学习笔记11:lua中的小技巧,布布扣,bubuko.com

C语言学习笔记:15_c语言中的进制操作.c

/* * 15_c语言中的进制操作.c * * Created on: 2015年7月5日 * Author: zhong */ #include <stdio.h> #include <stdlib.h> /** * c语言中的进制表示 * 前面加0b表示二进制 * 加0x表示十六进制 * 数字前加0表示八进制 * * printf按进制打印 * %d %i 以十进制打印 * %o 以八进制打印 * %x 以十六进制打印 * * %p 打印变量地址 * %f 打印小数 * %s

【EF学习笔记11】----------查询中常用的扩展方法

先来看一下我们的表结构: 首先毫无疑问的要创建我们的上下文对象: using (var db = new Entities()) { //执行操作 } Average 平均值: //查询平均分 Console.WriteLine("平均分:"+db.Student.Average(v=>v.Score)); Max 最大值: //查询最高分 Console.WriteLine("最高分:"+db.Student.Max(v=>v.Score)); Min

sqlite学习笔记8:C语言中使用sqlite之创建表

前面已经说了如何打开和关闭数据库,这次要说得是如何执行SQL语句,来创建一张表. 要用的的函数: sqlite3_exec(sqlite3* db, const char *sql, sqlite_callback callback, void *data, char **errmsg) 参数: db:已经打开的数据库实例 sql:SQL语句,是一个字符串 callback:是一个回调函数 data:做为回调函数的第一个参数 errmsg:用于带回错误信息 该回调函数有两种返回值类型. 1.返回

sqlite学习笔记9:C语言中使用sqlite之插入数据

前面创建了一张表,现在给他插入一些数据,插入数据跟创建表差不多,仅仅是SQL语言不一样而已,完整代码如下: #include <stdio.h> #include <stdlib.h> #include "sqlite/sqlite3.h" #define DB_NANE "sqlite/test.db" sqlite3 *db = NULL; char* sql = NULL; char *zErrMsg = NULL; int ret =

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

前面说到的 sqlite_exec() 中的第三个参数, SQLite 将为 sql 参数内执行的每个 SELECT 语句中处理的每个记录调用这个回调函数. 本节添加了两个函数,selectFromTable和updateTable. 实例程序如下: #include <stdio.h> #include <stdlib.h> #include "sqlite/sqlite3.h" #define DB_NANE "sqlite/test.db&quo

sqlite学习笔记7:C语言中使用sqlite之打开数据库

数据库的基本内容前面都已经说得差点儿相同了.接下看看如何在C语言中使用sqlite. 一 接口 sqlite3_open(const char *filename, sqlite3 **ppDb) 打开数据库,假设数据库不存在则新建一个数据库,并打开 sqlite3_close(sqlite3*) 关闭数据库.假设关闭之前还存在没有运行完的语句,将会返回SQLITE_BUSY 二 实例 1 文件夹结构 Projects{ main.c// 代码所在文件 sqlite{// 官网下载下来的sqli

sqlite学习笔记7:C/C++中使用sqlite之打开数据库

数据库的基本内容前面都已经说得差不多了,接下看看怎样在C语言中使用sqlite. 一 接口 sqlite3_open(const char *filename, sqlite3 **ppDb) 打开数据库,如果数据库不存在则新建一个数据库,并打开 sqlite3_close(sqlite3*) 关闭数据库,如果关闭之前还存在没有执行完的语句,将会返回SQLITE_BUSY 二 实例 1 目录结构 Projects{ main.c// 代码所在文件 sqlite{// 官网下载下来的sqlite压

Perl语言学习笔记 11 Perl模块

1.模块来源:随Perl发行版本一起打包.从CPAN下载 2.阅读模块文档:perldoc CGI 3.安装模块 makemaker方式: 指定安装目录: Module::build方式: cpan方式: 4.File::basename模块 5.仅选用模块的部分函数 导入引用列表即可 10.不引入任何函数 通过全名的方式使用: 11.File:Spec模块 12.CGI.pm 13.数据库与DBI DBI:数据库接口(Database Interface) 还需安装对应版本的数据库驱动程序DB