嵌入式数据库

来源:互联网 发布:lcd1602数据口反了 编辑:程序博客网 时间:2024/05/29 11:22
#include <stdio.h>#include <sqlite3.h>#include <string.h>#include <stdlib.h>int print(void* para, int columnCount, char **columnValue, char **columnName) //由用户处理查询的结果{    int j;    for (j = 0; j < columnCount; j++)    {        printf("%s = %s ", columnName[j], columnValue[j]);    }    printf("\n");    return 0;}int main(){    sqlite3 *ppdb;    int ret, i;    char sql[100] = {0};    char name[20] = {0};    int id;    char sex;    ret = sqlite3_open("student.db", &ppdb);  //打开一个数据库;若该数据库文件不存在,则自动创建。打开或者创建数据库的命令会被缓存,直到这个数据库真正被调用的时候才会被执行    if (ret != SQLITE_OK)    {        perror("sqlite3_open");        exit(1);    }    sprintf(sql, "create table if not exists student (name text, id integer, sex text);");    //把格式化的数据写入sql字符串缓冲区    ret = sqlite3_exec(ppdb, sql, NULL, NULL, NULL); //编译和执行零个或多个SQL 语句    if (ret != SQLITE_OK)    {        perror("sqlite3_exec1");        exit(1);    }    for (i = 0; i < 3; i++)    {        memset(sql, 0, sizeof(sql));  //数组清零        scanf("%s %d %c", name, &id, &sex);        sprintf(sql, "insert into student (name, id, sex) values ('%s', %d, '%c');", name, id, sex);        ret = sqlite3_exec(ppdb, sql, NULL, NULL, NULL);        if (ret != SQLITE_OK)        {            perror("sqlite3_exec2");            exit(1);        }        memset(name, 0, sizeof(name));    }    sprintf(sql, "select * from student;");    ret = sqlite3_exec(ppdb, sql, print, NULL, NULL);    if (ret != SQLITE_OK)    {        perror("sqlite3_exec3");        exit(1);    }    return 0;}