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

前端之家收集整理的这篇文章主要介绍了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 = 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,&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,SALARY) "  \
    "VALUES (2,'Allen',25,'Texas',15000.00 ); "     \
    "INSERT INTO COMPANY (ID,SALARY)" \
    "VALUES (3,'Teddy',23,'Norway',20000.00 );" \
    "INSERT INTO COMPANY (ID,SALARY)" \
    "VALUES (4,'Mark','Rich-Mond ',65000.00 );";
    
    /* Execute sql statement */
    ret = sqlite3_exec(db,"sql error: %s\n",zErrMsg);
        sqlite3_free(zErrMsg);
        return false;
    }
    
    fprintf(stdout,"successfully records created\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();
    closeDB();
    
    return 0;
}
原文链接:https://www.f2er.com/sqlite/200313.html

猜你在找的Sqlite相关文章