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.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语言数据库编程的更多相关文章
- 运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程,把获取的信息存入数据库
运用Python语言编写获取Linux基本系统信息(三):Python与数据库编程 有关前两篇的链接: 运用Python语言编写获取Linux基本系统信息(一):获得Linux版本.内核.当前时间 运 ...
- 使用C语言调用mysql数据库编程实战以及技巧
今天编写使用C语言调用mysql数据库编程实战以及技巧.为其它IT同行作为參考,当然有错误能够留言,共同学习. 一.mysql数据库的C语言经常使用接口API 1.首先当然是链接数据库mysql_re ...
- 提高你的数据库编程效率:Microsoft CLR Via Sql Server
你还在为数据库编程而抓狂吗?那些恶心的脚本拼接,低效的脚本调试的日子将会与我们越来越远啦.现在我们能用支持.NET的语言来开发数据库中的对象,如:存储过程,函数,触发器,集合函数已及复杂的类型.看到这 ...
- VB.NET数据库编程基础教程
关键词:作者罗姗 众所周知,VB.NET自身并不具备对数据库进行操作的功能,它对数据库的处理是通过.NET FrameWork SDK中面向数据库编程的类库和微软的MDAC来实现的.其中,ADO. ...
- Java数据库编程、XML解析技术
数据库编程 JDBC概述 是Java Database Connecive,即数据库连接技术的简称,它提供了连接各种常用数据库的能力. 是一种用于执行SQL语句的Java API,可以为多种关系数据库 ...
- Mysql C语言API编程入门讲解
原文:Mysql C语言API编程入门讲解 软件开发中我们经常要访问数据库,存取数据,之前已经有网友提出让鸡啄米讲讲数据库编程的知识,本文就详细讲解如何使用Mysql的C语言API进行数据库编程. ...
- .Net程序员学用Oracle系列(3):数据库编程规范
<.Net程序员学用Oracle系列:导航目录> 本文大纲 1.书写规范 1.1.大小写风格 1.2.缩进风格 1.3.换行 1.4.其它 2.命名规范 2.1.数据库对象命名 2.2.变 ...
- JAVA数据库编程、JAVA XML解析技术
JDBC概述 JDBC是JAVA中提供的数据库编程API curd :数据库增删改 链接字符串:String url = "mysql :/localhost :3306/jdbc/&quo ...
- Vc数据库编程基础1
Vc数据库编程基础1 一丶数据库 什么是数据库 数据库简单连接就是存储数据的容器. 而库则是一组容器合成的东西. 也就是存储数据的.我们编程中常常会用到数据库. 什么是数据管理系统 数据库管理系统就是 ...
随机推荐
- 设计模式——Spring IoC中用到的模板方法模式
基本概念 什么是模板方法(Template method):父类定义了骨架(调用哪些方法及顺序),某些特定方法由子类实现. 最大的好处:代码复用,减少重复代码.除了子类要实现的特定方法,其他方法及方法 ...
- [Tool] SourceTree初始化GitFlow遇到错误(git command not found)的解决方案
[Tool] SourceTree初始化GitFlow遇到错误(git command not found)的解决方案 问题情景 使用SourceTree,可以方便开发人员快速的套用GitFlow开发 ...
- CSS的盒子模型
1.边框:包裹内容的容器 统一设置:border: border-width border-style border-color 上:border-top 下:border-bottom 左:bord ...
- github-ssh
# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: ...
- RapidFloatingActionButton框架正式出炉
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4474748.html RapidFloatingActionB ...
- 使用fastboot工具刷入recovery.img、boot.img、system.img等
在Android SDK目录的platform-tools目录下有fastboot.exe刷机工具(注:需要将机器进入fastboo模式) 刷recovery.img: fastboot flash ...
- 【即时通讯】XMPP调试与简单使用
上篇讲了[即时通讯]即时通讯及XMPP概述及环境配置,接下来我们就要进行调试,看看是否可用! 在测试之前我们需要先事先保存一些东西,以便后面使用 —— 登录openfire后台 ——获取服务器名和端口 ...
- 【代码笔记】iOS-使图片两边不拉伸,中间拉伸
代码: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. // ...
- 【原】Github系列之一:一起做仿天气类应用中的实时模糊效果LiveBlur
从本文开始,我将专门开辟一个Github Code系列,开源自己写的一部分有意思而且实用的demo,共同学习.以前都发布在git OSChina上,后面有空会陆陆续续整理到Github上.OSChin ...
- UIWindow 实现遮盖导航条的蒙版
使用代码构建应用的主界面 我们先来介绍一下,如何使用代码来构建项目的主界面,以及主界面的一般架构方式 概述 刚创建的 iOS 项目默认是使用 Main.storeboard 作为项目的主界面的 若你不 ...