【0816作业】Linux中数据库的增删改查代码、将字典写入到数据库中

一、Linux中数据库的增删改查

1)增加

        ① 代码

int do_insert(sqlite3 *db)
{
    //输入要插入的数据
    int id;
    char name[20]="";
    float score;

    printf("请输入id>>> ");
    scanf("%d",&id);
    getchar();

    printf("请输入name>>> ");
    scanf("%s",name);
    getchar();

    printf("请输入score>>> ");
    scanf("%f",&score);
    getchar();

    //将输入的数据与sql命令拼接起来
    char sql[128]="";
    sprintf(sql,"insert into stu values(%d,\"%s\",%g)",id,name,score);

    //执行命令
    char *errmsg = NULL;
    if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != SQLITE_OK)
    {
        fprintf(stderr,"__%d__sqlite3_exec:%s\n",__LINE__,errmsg);
        return -1;                                                               
    }
    printf("insert into stu success \n");

    return 0;
}

        ② 效果

【0816作业】Linux中数据库的增删改查代码、将字典写入到数据库中_第1张图片

2)删除

        ① 代码

        ② 效果

3)修改

        ① 代码

        ② 效果

4)查询

        ① 代码(2种方法)

int select_callBack(void* arg,int column,char **column_text,char **column_name)
{
    //查询结果的列数
    //printf("column= %d __%d__\n",column,__LINE__);

    //表头
    if(0 == *(int*)arg)
    {
        for(int i=0;i

        ② 效果

【0816作业】Linux中数据库的增删改查代码、将字典写入到数据库中_第2张图片

 

5)总代码

        ① 代码

        ② 效果

二、字典dict.txt上传到数据库中

① 代码

#include 
#include 
#include 
#include 

int do_insert(sqlite3 *db,char *word,char *mean);

int main(int argc, const char *argv[])
{
    //以读的方式打开文件
    FILE* fp=fopen("./dict.txt","r");
    if(NULL == fp)
    {
        perror("fopen");
        return -1;
    }
    printf("fopen success\n");

    //创建并打开一个数据库
    sqlite3 *db = NULL;
    if(sqlite3_open("./dict.db",&db) != SQLITE_OK)
    {
        fprintf(stderr,"sqlite3_open:%s %d __%d__\n",\
                sqlite3_errmsg(db),sqlite3_errcode(db),__LINE__);
        return -1;
    }
    printf("open database my.db success\n");

    //创建一个表格 create table dict(word char,mean char);
    //数据库中sql语句怎么写 这里就怎么写                                      
    char sql[128] = "create table if not exists dict(word char,mean char)";
    char *errmsg = NULL;

    if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != SQLITE_OK)
    {
        fprintf(stderr,"sqlite3_exec:%s %d __%d__\n",errmsg,sqlite3_errcode(db
        return -1;
    }
    printf("create table dict success\n");

    //定义存放数据的数组
    char buf[128]="";
    char word[64]="";
    char mean[64]="";
    char *res=NULL;
    while(1)
    {
        bzero(buf,sizeof(buf));
        bzero(word,sizeof(word));
        bzero(mean,sizeof(mean));

        res=fgets(buf,sizeof(buf),fp);
        if(NULL == res)
        {
            printf("读取完毕\n");
            break;
        }

        char *p=buf;
        char *wordp=word;
        char *meanp=mean;

        while(*p !=' ' || *(p+1) != ' ')
        {
            if(*p=='\'')
            {
                *wordp++ ='\'';
                p++;
                continue;
            }
            *wordp++ = *p++;
            //printf("%c\n",*p);
        }

        while(*p ==' ')
            p++;

        while(*p!='\n')
        {
            *meanp++ = *p++;
        }
        do_insert(db,word,mean);
    }


    //关闭数据库
    if(sqlite3_close(db) != SQLITE_OK)
    {
        fprintf(stderr,"sqlite3_close:%s %d __%d__\n",\
                sqlite3_errmsg(db),sqlite3_errcode(db),__LINE__);
        return -1;
    }
    printf("close database my.db success\n");

    return 0;
}

int do_insert(sqlite3 *db,char *word,char *mean)
{
    char sql[128]="";
    sprintf(sql,"insert into dict values(\"%s\",\"%s\")",word,mean);

    //执行命令
    char *errmsg = NULL;
    if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != SQLITE_OK)
    {
        fprintf(stderr,"__%d__sqlite3_exec:%s\n",__LINE__,errmsg);
        return -1;
    }
    printf("insert into dict success \n");

    return 0;
}

② 结果

你可能感兴趣的:(网络编程,#,作业,数据库,linux)