嵌入式MySQL应用——在C语言中嵌入SQL命令
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了嵌入式MySQL应用——在C语言中嵌入SQL命令,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5231字,纯文字阅读大概需要8分钟。
内容图文
实验环境:
1、 操作系统:window10
2、 MySQL 5.7
实验内容与完成情况:
1 实现create_course_table()子程序的功能:
1.1 创建表
create_course_table()函数代码:
int create_course_table() {
char yn[2];
result = mysql_list_tables(&mysql, "course");
unsigned int rows = mysql_num_rows(result);
mysql_free_result(result);
if (rows > 0) { //删除已存在的表
printf("The course table already exists, do you want to delete it?\n");
printf("Delete the table? (y--yes,n--no):");
scanf("%s", &yn);
if (yn[0] == 'y' || yn[0] == 'Y') { //询问是否删除已存在的表
if (!mysql_query(&mysql, "drop table course")) {
printf("Drop table course successfully!%d\n\n");
}
else {
printf("ERROR: drop table course%d\n\n");
}
}
}
//创建表course
if (mysql_query(&mysql, "create table course(cno char(10) not null primary key,\
cname char(100) null,cpno char(10) null,ccredit int null)engine=innodb;") == 0) {
printf("create table course successfully!%d\n\n");
}
else {
printf("ERROR: create table course%d\n\n");
}
return 0;
}
初始时,数据库xxgl中没有course表:
现在我们进行表的创建。指令如下:
创建后数据库中有course表:
1.2 替换已有表
当数据库xxgl中已有course表时,调用创建课程表函数可以替换已有表。指令如下:
2. 实现insert_rows_into_course_table()子程序的功能
insert_rows_into_course_table()函数代码:
int insert_rows_into_course_table() {
//记录各个字段取值的变量
char cno[] = "1";
char cname[50] = "课程";
char cpno[] = "2";
char ccredit[] = "3";
char yn[2];
char strquery[200]= "insert into course(cno,cname,cpno,ccredit) values('"; //记录插入对应记录所需的mysql语句
//记录当前要插入记录的各个字段的值
printf("Please input cno(eg:1):");scanf("%s", cno);strcat(strquery, cno);
strcat(strquery, "','");
printf("Please input cname(eg:数据库系统):");scanf("%s", cname);strcat(strquery, cname);
strcat(strquery, "','");
printf("Please input cpno(eg:2):");scanf("%s", cpno);strcat(strquery, cpno);
strcat(strquery, "','");
printf("Please input ccredit(eg:3):");scanf("%s", ccredit);strcat(strquery, ccredit);
strcat(strquery, "');");
if (mysql_query(&mysql, strquery) == 0) {
printf("execute successfully!%d\n\n");
}
else {
printf("ERROR:execute%d\n");
}
printf("Insert again? (y--yes,n--no):"); //是否一次插入多条记录
scanf("%s", &yn);
if (yn[0] == 'y' || yn[0] == 'Y') {
insert_rows_into_course_table();
}
return 0;
}
向已有的课程表中插入一些记录,指令如下:
插入后数据库xxgl中的表有如下所示的对应记录:
源代码:
#include<mysql.h>
#include<stdio.h>
#include<stdlib.h>
#include<winsock.h>
#include<iostream>
using namespace std;
MYSQL mysql;//声明为全局变量,待会在主函数,功能函数中都能对它访问
#pragma warning(disable:4996)
MYSQL_RES* result;
int create_course_table();
int insert_rows_into_course_table();
int main(int argc, char** argv, char** envp)
{
int num = 0;
char fu[2];
mysql_init(&mysql);//获得或初始化一个MYSQL结构
if (mysql_real_connect(&mysql, "localhost", "root", "ncs54896", "xxgl", 3306, 0, 0)) {
mysql_query(&mysql, "set names \'GBK\'"); //解决汉字显示为乱码的问题
for (;;) {
printf("Sample Embedded SQL for C application\n");
printf("Please select one function to excute:\n\n");
printf("0--exit.\n"); //不同序号对应的数据库操作
printf("1--创建课程表\n");
printf("2--添加课程记录\n\n");
fu[0] = '0';
scanf("%s", &fu);
if (fu[0] == '0')exit(0);
if (fu[0] == '1')create_course_table();
if (fu[0] == '2')insert_rows_into_course_table();
}
}
else {
printf("Error,数据库不存在!\n");
}
mysql_close(&mysql);//访问完毕,关闭mysql
result = mysql_store_result(&mysql);
mysql_free_result(result);
system("pause");
return 0;
}
int create_course_table() {
char yn[2];
result = mysql_list_tables(&mysql, "course");
unsigned int rows = mysql_num_rows(result);
mysql_free_result(result);
if (rows > 0) { //删除已存在的表
printf("The course table already exists, do you want to delete it?\n");
printf("Delete the table? (y--yes,n--no):");
scanf("%s", &yn);
if (yn[0] == 'y' || yn[0] == 'Y') { //询问是否删除已存在的表
if (!mysql_query(&mysql, "drop table course")) {
printf("Drop table course successfully!%d\n\n");
}
else {
printf("ERROR: drop table course%d\n\n");
}
}
}
//创建表course
if (mysql_query(&mysql, "create table course(cno char(10) not null primary key,\
cname char(100) null,cpno char(10) null,ccredit int null)engine=innodb;") == 0) {
printf("create table course successfully!%d\n\n");
}
else {
printf("ERROR: create table course%d\n\n");
}
return 0;
}
int insert_rows_into_course_table() {
//记录各个字段取值的变量
char cno[] = "1";
char cname[50] = "课程";
char cpno[] = "2";
char ccredit[] = "3";
char yn[2];
char strquery[200]= "insert into course(cno,cname,cpno,ccredit) values('"; //记录插入对应记录所需的mysql语句
//记录当前要插入记录的各个字段的值
printf("Please input cno(eg:1):");scanf("%s", cno);strcat(strquery, cno);
strcat(strquery, "','");
printf("Please input cname(eg:数据库系统):");scanf("%s", cname);strcat(strquery, cname);
strcat(strquery, "','");
printf("Please input cpno(eg:2):");scanf("%s", cpno);strcat(strquery, cpno);
strcat(strquery, "','");
printf("Please input ccredit(eg:3):");scanf("%s", ccredit);strcat(strquery, ccredit);
strcat(strquery, "');");
if (mysql_query(&mysql, strquery) == 0) {
printf("execute successfully!%d\n\n");
}
else {
printf("ERROR:execute%d\n");
}
printf("Insert again? (y--yes,n--no):"); //是否一次插入多条记录
scanf("%s", &yn);
if (yn[0] == 'y' || yn[0] == 'Y') {
insert_rows_into_course_table();
}
return 0;
}
内容总结
以上是互联网集市为您收集整理的嵌入式MySQL应用——在C语言中嵌入SQL命令全部内容,希望文章能够帮你解决嵌入式MySQL应用——在C语言中嵌入SQL命令所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。