开发者社区> 小波linux> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

C语言数据库编程

简介: ----摘自个人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.
+关注继续查看

----摘自个人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, 0,0, &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;
    char goods_types[100];
    char goods_name[100];
    char goods_price[100];
 
    char appraise[100]; 
    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,0,0,&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;  
    char col_value[5];  
    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,0,0,&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; 
    char col_name[10];
    char  new_value[10];
    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,0,0,&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");
    for(int i=0; i<=rows; i++)//
        
    {      printf("\n");
    for(int j=0; j<cols; j++)//

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

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【C/C++学院】(22)Mysql数据库编程--C语言操作数据库
<p>makefile</p> <p></p> <pre code_snippet_id="613565" snippet_file_name="blog_20150306_1_3096831" name="code" class="cpp">.SUFFIXES: .c .o CC=gcc SRCS=mysql1.c OBJS=$(SRCS:.c=.o) EXEC=mys
1195 0
C语言程序设计三大基本结构之循环结构
循环结构是结构化程序设计中的基本结构之一。循环结构就是在给定条件成立时,反复执行某程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。C语言提供了多种循环语句,由此组成了各种不同形式的循环结构。 常见的形式为: (1)while语句 (2)do-while语句 (3)for语句
0 0
C语言程序设计三大基本结构之选择结构
前言: 文章目录: •  关系运算符与关系表达式 •  逻辑运算符与逻辑表达式 •   if语句 •   switch语句 •   if语句的嵌套 •   switch语句的使用 引言: 一,关系运算符与关系表达式 1. 关系运算符及其优先级 2.关系表达式 3.逻辑运算符及其优先级 4.if语句的三种形式 5.条件运算符 6.switch语句
0 0
C语言程序设计三大基本结构之顺序结构
目录 前言 一、C语句 1.什么是C语句? 2.C语言中基本语句的分类:        (1)简单语句     形式: (2)复合语句  把多个语句用一对花括号括起来的一个语句 (3)空语句   只由一个分号";"组成,什么也不执行 二、数据的输入和输出 1.putchar函数 2.getchar函数 3.printf函数 (1)格式说明符: (2)转义字符: (3)普通字符: 4.scanf函数 ●由于作者水平有限,文章难免存在谬误之处,敬请读者斧正,俚语成篇,恳望指教!
0 0
C语言程序设计——设计一个学生管理系统(完美运行的程序(●‘◡‘●))
C语言程序设计——设计一个学生管理系统(完美运行的程序(●‘◡‘●))
0 0
c语言程序设计 编程题
20.求数字:输出 100(含 100)-200(含 200)以内的满足以下条件的数,条件 为:这个数与 3 的和是 5 的倍数,与 3 的差是 6 的倍数,输出这样的数。 #include <stdio.h> void main() { int i; for (i = 100; i <= 200; i++) if ((i + 3) % 5 == 0 && (i - 3) % 6 == 0) printf("%d,", i); } 21.求数字:找出乘积为 399 的两个相邻奇数。 #include <stdio.h> void main() { int i = 1; whil
0 0
c语言程序设计 编程题
8.求年龄:有 5 个人坐在一起,问第 5 个人多少岁,他说比第 4 个人大 2 岁。问 第 4 个人多少岁,他说比第 3 个人大 2 岁。问第 3 个人多少岁,他说比第 2 个 人大 2 岁。问第 2 个人多少岁,他说比第 1 个人大 2 岁。最后问第 1 个人,他 说是 10 岁。请问第 5 个人多大? #include <stdio.h> int age(int n) { if (n == 1) return 10; return age(n - 1) + 2; } void main() { printf("%d", age(5)); } 9.猴子吃桃问题:猴子第一天摘下若干个
0 0
+关注
小波linux
嵌入式系统软件/硬件工程师
文章
问答
文章排行榜
最热
最新
相关电子书
更多
为什么要学函数式编程?
立即下载
JavaScript面向对象的程序设计
立即下载
低代码开发师(初级)实战教程
立即下载