----摘自个人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. Linux CentOS 6.6安装JDK1.7

    Linux CentOS 6.6安装JDK1.7 目录 1.下载JDK 2.卸载JDK 3.安装JDK 3.1..rpm后缀格式JDK安装方式 3.2..tar.gz后缀格式JDK安装方式 4.验证安 ...

  2. SQL 行列转换简单示例

    SQLSERVER 2005 以后提供了新的方式进行行列转换,下面是一个实例供参考: if object_id('tb') is not null drop table tbTest go ),季度 ...

  3. Slick – 这是你需要的最后一款 jQuery 传送带插件

    slick 是一款完全响应式的 jQuery 传送带插件,能够根据容器自动适应宽度.在现代浏览器中会使用 CSS3 来实现特殊效果,可以使用扩展方法对项目进行添加.删除和过滤.这是你需要的最后一款 j ...

  4. 15款美丽的设备模板,帮助展示你的 APP

    有什么更好的方式来显示您的应用程序的外观和感觉呢?你看了这些设计示例之后就会有灵感了.无论是在 iPhone,iPad,Android,还是在桌面应用程序或网站,这些设计都增加了一些视觉上的吸引力,并 ...

  5. 百度编辑器 UEditor 报错汇总

    1,编辑文本时使用js将需要编辑内容setContent到编辑器里,总是报(IE8及IE11):'this.body' 为空或不是对象,详细如下,其实报这样的错除多半是加载先后或加载不完全导致的: 消 ...

  6. Listbox与Listbox with key的区别

    标准解释: ListboxVisualization as listbox in which a list of entries is displayed with one short descrip ...

  7. SharePoint Online 创建门户网站系列之定制栏目

    前 言 SharePoint Online自带的库就带有二级页面和详细页面,也就是Allitems页面和DispForm页面,但是实在不够美观,尤其对于门户网站这一企业门面来说,更是无法接受. 下面, ...

  8. Office 365 - SharePoint 2013 Online 中使用Windows PowerShell

    1.如果想要在SharePoint Online中使用Windows PowerShell,首先需要安装SharePoint Online Management Shell(下载地址附后),如下图: ...

  9. SharePoint 2013 搜索报错"Unable to retrieve topology component health. This may be because the admin component is not up and running"

    环境描述 Windows 2012 R2,SharePoint 2013(没有sp1补丁),sql server 2012 错误描述 搜索服务正常,但是爬网一直在Crawling Full,但是爬不到 ...

  10. umeng 渠道统计ios

    1. 使用前提:需要在工程中添加依赖框架:AdSupport.framework 和 Security.framework 2.在AppDelegate.m文件中的-(BOOL)application ...