时间:2021-07-01 10:21:17 帮助过:14人阅读
//////////////////////////// /*建立第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语言数据库编程
标签:ppi scan har 格式化 错误 判断 print 变量 app