----摘自个人C语言数据库项目报告

3.4逻辑结构的SQL语句实现

创建基本表:

3.4-1建立商品表:

create table goods(goods_id int primary key,goods_types varchar,goods_name varchar,goods_price varchar,appraise text);

3.4-2建立卖家表:

create table seller(seller_id int primary key,seller_name varchar,seller_sex varcahr,phone int,address text)

3.4-3建立买家表:

create table buyer(buyer_id int primary key,buyer_name varchar,buyer_sex varchar,buyer_phone int,buyer_address text

3.4-4建立账单视图表:

Create view bill as select buyer_id,buyer_name,buyer_address,goods_id,goods_name,goods_price from buyer,goods;

3.4-5建立店铺基本表:

create table store(store_id int primary key, store_name text);

3.4-6建立卖家具体详情视图表:

create view seller_message as select seller_id, seller_name,seller_sex,goods_name,store_name,store_address from seller,store,goods;

 

3.4-7插入数据:

本系统有用户自定义插入数据,无需在C语言里面写入要插入的数据,用了本书上的sqlite3_mprintf格式化输入函数来实现。

Sql=sqlite3_mprintf(“insert into  表名 values(%格式化)“, 格式化的变量); 此处%d整型无需引号,%s字符型加单引号。

例如本系统中插入数据:char *pSQL=sqlite3_mprintf("insert into store values(%d,'%s' )",store_id,store_name);

3.4-8查找数据:

自定义查找:sqlite3_mprintf(“select 列名 from 表名 where 列名= 格式化”,格式变量);

例如本系统中查找数据:

char  *pSQL= sqlite3_mprintf("select store_id, store_name from store where store_id =  %d ",col_value);

3.4-9删除数据:

自定义删除:sqlite3_mprintf(“delete from 表名 where 列名=格式化”,格式化变量);

例如本系统中自定义删除数据:char *pSQL=sqlite3_mprintf("delete from goods where goods_id = %s ",col_value) ;

删除表:drop table 表名。

项目中代码:

//////////////////////////// /*建立第1张表 goods*//////////////////////////////////////////////////////////////////
void create_goods()
{
    int rc;    //rc为返回值,判断函数是否执行成功  rc=0函数执行成功,rc !=0函数执行失败
    sqlite3 *db;  //SQLite数据库指针   sqlite3结构体  *db指向sqlite3结构体的指针
    char *pFileName = "Taobao_Shopping.db";  //数据库文件名
    char * zErr;   /* 定义返回错误信息的变量*/

    rc = sqlite3_open(pFileName, &db); /*打开数据库*/
    if(rc)                             /*假,关闭数据库*/
    {
        printf("open database failed");
        sqlite3_close(db);
    }
    char *pSQL="create table goods(goods_id int primary key,goods_types text,goods_name text,goods_price text,appraise text)";

    rc = sqlite3_exec(db, pSQL, ,, &zErr);   /* sqlite执行接口实现表的创建*/

    if(rc!=SQLITE_OK)
    {
        if (zErr!=NULL)
        {
            printf("SQL error:%s\n\n",zErr);
            sqlite3_free(zErr);  /* 释放错误信息所占用的空间*/
        }
    }
    sqlite3_close(db);
    system("pause");system("cls");printf("提示:\n商品表已建立!"); goods();
}

////////////////////////////////////////录入商品信息//////////////////////////////////////////////////////////////////////////

void goods_write()
{
    //数组存储字符串
    int  goods_id;
    ];
    ];
    ];

    ];
    int rc;
    sqlite3 *db;  //SQLite数据库指针
    char *pFileName = "Taobao_Shopping.db";  //数据库文件名
    rc = sqlite3_open(pFileName, &db); /*打开数据库*/
    if(rc)                             /*假,关闭数据库*/
    {
        printf("open database failed");
        sqlite3_close(db);
    }
    char * zErr;   /* 定义返回错误信息的变量*/

    printf("\n\n请依次录入以下信息\n\n商品编号,商品种类,商品名称,商品价格,商品评论\n\n");

    scanf("%d%s%s%s %s",&goods_id,&goods_types,&goods_name,&goods_price ,&appraise);

    //格式化输入函数,以变量列表的方式插入到SQL语句中
    char *pSQL=sqlite3_mprintf("insert into goods values('%d','%s', '%s','%s', '%s');",goods_id,goods_types,goods_name,goods_price ,appraise);

    rc = sqlite3_exec(db,pSQL,,,&zErr); /*执行完成数据的插入*/

    if(rc) //rc=0
    {printf("商品信息录入失败!\n");}
    else
    {printf("\n商品信息录入成功!\n\n");}
    sqlite3_close(db);
    system("pause");
    system("cls");
    goods();
}
///////////////////////////////////////////////////////////////////商品自定义删除/////////////////////////////////////////////////////////////
void goods_del1()
{ 

    int rc;
    sqlite3 *db;
    char *pFileName = "Taobao_Shopping.db";
    char * zErr;
    ];
    rc = sqlite3_open(pFileName, &db); /*打开数据库*/
    if(rc)                             /*假,关闭数据库*/
    {
        printf("open database failed");
        sqlite3_close(db);
    }
    printf("请输入要删除的商品编号\n");

    scanf("%s",&col_value);
    char *pSQL=sqlite3_mprintf("delete from goods where goods_id = %s ",col_value) ;
    rc = sqlite3_exec(db,pSQL,,,&zErr);
    if(rc)
    {printf("删除商品信息失败!\n\n");}
    else
        printf("\n删除商品信息成功!\n\n");
    system("pause");
    system("cls");
    goods_del();

}
////////////////////////////////////////////商品表修改////////////////////////////////////////////////////////////
void goods_update()
{

    int rc;
    sqlite3 *db;
    char *pFileName = "Taobao_Shopping.db";
    char * zErr;
    ];
    ];
    int  goods_id;

    rc = sqlite3_open(pFileName, &db); /*打开数据库*/
    if(rc)                             /*假,关闭数据库*/
    {
        printf("open database failed");
        sqlite3_close(db);
    }
    printf("请输入原来的列名,要修改的列名的列值,以及本商品编号\n");    //修改所在行的数值
    scanf("%s%s%d",&col_name,&new_value,&goods_id);

    //scanf()里面的格式化字符型跟整形 输入到sqlite3_mprintf()格式化输入 字符型跟整形  goods_id定义为数组不能正确执行结果。或者是goods_id定义为字符型解决问题

    char *pSQL=sqlite3_mprintf("update goods set '%s' = '%s' where goods_id = %d", col_name,new_value,goods_id);///%s字符型加单引号,数字可以不加

    rc = sqlite3_exec(db,pSQL,,,&zErr);
    if(rc)
    {printf("修改商品信息失败!\n\n");
    } else
        printf("\n修改商品信息成功!\n\n");
    sqlite3_close(db);
    system("pause");
    system("cls");
    goods();

}
//////////////////////////////////////////查询商品表信息//////////////////////////////////////////////////////////////////
void goods_find1()
{
    int rc;
    sqlite3 *db;  //SQLite数据库指针   sqlite3结构体  *db指向sqlite3结构体的指针
    char *pFileName = "Taobao_Shopping.db";
    char * zErr;   /* 定义返回错误信息的变量*/
    char **result;
    int  rows, cols;
    int col_value;
    rc = sqlite3_open(pFileName, &db); /*打开数据库*/
    if(rc)                             /*假,关闭数据库*/
    {
        printf("open database failed");
        sqlite3_close(db);
    }
    printf("请输入商品编号\n");// 根据goods_id 查询那一行的数据

    scanf("%d",&col_value);

    char  *pSQL= sqlite3_mprintf("select goods_id,goods_types,goods_name,goods_price ,appraise from goods where goods_id =  %d ",col_value);

    rc = sqlite3_get_table(db, pSQL, &result, &rows, &cols, &zErr);//sqlite3_get table()无回调函数

    printf("查询结果:\n");
    ; i<=rows; i++)//行

    {      printf("\n");
    ; j<cols; j++)//列

        printf("%11s  ",result[i*cols + j]);//第i行第j列元素值 包括表头

    printf("\n");
    }
    system("pause");
    system("cls");
    goods_find();

}

C语言数据库编程的更多相关文章

  1. 运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程,把获取的信息存入数据库

    运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程 有关前两篇的链接: 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本.内核.当前时间 运 ...

  2. 使用C语言调用mysql数据库编程实战以及技巧

    今天编写使用C语言调用mysql数据库编程实战以及技巧.为其它IT同行作为參考,当然有错误能够留言,共同学习. 一.mysql数据库的C语言经常使用接口API 1.首先当然是链接数据库mysql_re ...

  3. 提高你的数据库编程效率:Microsoft CLR Via Sql Server

    你还在为数据库编程而抓狂吗?那些恶心的脚本拼接,低效的脚本调试的日子将会与我们越来越远啦.现在我们能用支持.NET的语言来开发数据库中的对象,如:存储过程,函数,触发器,集合函数已及复杂的类型.看到这 ...

  4. VB.NET数据库编程基础教程

    关键词:作者罗姗   众所周知,VB.NET自身并不具备对数据库进行操作的功能,它对数据库的处理是通过.NET FrameWork SDK中面向数据库编程的类库和微软的MDAC来实现的.其中,ADO. ...

  5. Java数据库编程、XML解析技术

    数据库编程 JDBC概述 是Java Database Connecive,即数据库连接技术的简称,它提供了连接各种常用数据库的能力. 是一种用于执行SQL语句的Java API,可以为多种关系数据库 ...

  6. Mysql C语言API编程入门讲解

    原文:Mysql C语言API编程入门讲解 软件开发中我们经常要访问数据库,存取数据,之前已经有网友提出让鸡啄米讲讲数据库编程的知识,本文就详细讲解如何使用Mysql的C语言API进行数据库编程.   ...

  7. .Net程序员学用Oracle系列(3):数据库编程规范

    <.Net程序员学用Oracle系列:导航目录> 本文大纲 1.书写规范 1.1.大小写风格 1.2.缩进风格 1.3.换行 1.4.其它 2.命名规范 2.1.数据库对象命名 2.2.变 ...

  8. JAVA数据库编程、JAVA XML解析技术

    JDBC概述 JDBC是JAVA中提供的数据库编程API curd :数据库增删改 链接字符串:String url = "mysql :/localhost :3306/jdbc/&quo ...

  9. Vc数据库编程基础1

    Vc数据库编程基础1 一丶数据库 什么是数据库 数据库简单连接就是存储数据的容器. 而库则是一组容器合成的东西. 也就是存储数据的.我们编程中常常会用到数据库. 什么是数据管理系统 数据库管理系统就是 ...

随机推荐

  1. 最短的数字判断代码 js

    转自  http://www.cnblogs.com/snandy/p/3590186.html 我们知道JavaScript提供了typeof运算符,因此最容易想到的是用typeof来判断是否是nu ...

  2. Android活动启动模式

    在android中,android活动是以栈的方式进行存储,在栈中的活动不断被重新激活至前台和不断被终止也不断被排序.因此对于栈中的活动管理也是一个比较麻烦的事情. android给我们提供了两类活动 ...

  3. 瞬间读懂什么是互联网思维、大数据、O2O、众筹、红海

     1.什么叫大数据? 某必胜客店的电话铃响了,客服人员拿起电话. 客服:必胜客.您好,请问有什么需要我为您服务? 顾客:你好,我想要一份…… 客服:先生,烦请先把您的会员卡号告诉我. 顾客:16846 ...

  4. java栈和堆区别

    1, 垃圾回收机制仅仅作用于堆内存,与栈内存无关; 2, 栈:stack 栈的存取速度比堆快,效率高 保存局部变量和对象的引用值 3, 堆:保存较大的变量 4, 栈有一个很重要的特殊性,就是存在栈中的 ...

  5. 初识Hibernate 缓存

    生活就像一杯咖啡,让你我慢慢的品尝,品尝它的苦涩和甘甜...... 一.什么是Hibernate缓存. 解析:白话来说就是缓存数据的容器 官方标准点缓存:是计算机领域的概念,它介于应用程序和永久性数据 ...

  6. javascript模板库jsrender加载并缓存外部模板文件

    前一篇说了jsrender嵌套循环的使用,在SPA的应用中,广泛使用的一个点就是view模板,使用了SPA之后,每个业务页面不再是独立的html,仅仅是一个segment,所以通常这些segment会 ...

  7. SNMPv3/pygal制图/smtplib发邮件

    SNMPv3 SNMPv3在路由器端的配置 这个我都没配置过,还得现学现卖这个链接说的是SNMPv3的基本配置 这个链接说的是SNMPv3的view命令,用于管理员可以看到哪些层级的内容 1) 配置 ...

  8. jQuery8种不同的瀑布流懒加载loading效果

    优化图片加载插件jQuery8种不同的瀑布流懒加载loading效果  在线预览 下载地址 实例代码 <ul class="grid effect-1" id="g ...

  9. jQuery超酷下拉插件6种效果演示

    原始的下拉框很丑啦, 给大家一款jQuery超酷下拉插件6种效果 效果预览 下载地址 实例代码 <div class="container"> <section ...

  10. CSS常用标签

    CSS常用标签 一 CSS文字属性 color : #999999; /*文字颜色*/ font-family : 宋体,sans-serif; /*文字字体*/ font-size : 9pt; / ...