嵌入式SQL应用

来源:互联网 发布:中国国际地位知乎 编辑:程序博客网 时间:2024/05/22 00:34

1、 实现对visual studio的MySql的配置

  1. 新建一个visual studio的Win32控制台应用程序
  2. 更改配置管理器,改为release和x64
  3. 打开属性管理器

    得到是下面的界面
  4. 点击C/C++目录下的常规,输入include的路径进去

    点击编辑,加入如下的路径:
  5. 在链接器的常规中输入以下路径:


  6. 在输入中输入两个附加依赖项

  7. 将dll添加到project的release的目录中
    将c盘的mysql的目录下的dll添加到下面的工程路径下的release中:

  8. 点击本地Windows调试器,运行代码

2、 实现create_sc_table()或create_course_table()

a) 实现create_course_table()
我们可以通过代码实现这个功能,首先是建立一个MYSQL的对象,然后初始化他:

MYSQL mysql;mysql_init(&mysql);

然后,进行数据库的链接,我们可以查找端口号。

mysql_real_connect(&mysql, "localhost", "root", "password", "database", 3306, 0, 0)

所以,我们需要更改用户名和密码,以及端口号,不过端口号需要自己去查询:

所以,我们还是按照3306来进行链接,链接好了之后,进行数据库的操作。

mysql_query(&mysql, "drop table course;")

这一句,类似于我们的直接在sql中输入drop table course;
然后,我们就可以进行数据的插入

mysql_query(&mysql, "create table course (cno char(1) NOT null primary key,cname char(10) null ,cpno char(1) null ,ccredit int null) engine=innodb;")

这一句话是进行表的建立,是新建一个表格。

mysql_query(&mysql, "insert into course values('1', 'C语言', '',3),('2', '数据库', '1',4),('3', '编译原理', '2',5),('4','数据结构', '3',2),('5', '操作系统','4',3) ;")

这一句是数据的插入。
然后就建立了表格。
可以看下输出为:

这是初始界面,然后,我们输入2,课题看到的是

我们可以看到,结果为:

所以,我们插入的结果是正确的。实现了create_course_table;

3、 实现insert_rows_into_sc_table()或insert_rows_into_course_table()

我们进行对course的数据的插入:

char strquery[100] = "insert into course(cno,cname,cpno,ccredit) values('";

这一句话是我们进行数据的插入的前面的部分,后面要插入的内容是我们自己输入的
所以,我们后面要进行的是字符串的拼接。

printf("Please input cno(eg:1):");scanf_s("%s", icno);strcat_s(strquery, icno);strcat_s(strquery, "','");printf("Please input cname(eg:XXXX):");scanf_s("%s", icname);strcat_s(strquery, icname);strcat_s(strquery, "','");printf("Please input cpno(eg:1):");scanf_s("%s", icpno);strcat_s(strquery, icpno);strcat_s(strquery, "','");printf("Please input iccredit(eg:2):");scanf_s("%s", iccredit);strcat_s(strquery, iccredit);strcat_s(strquery, "');");

这一部分是我们在输入了数据之后,就直接进行了数据的拼接,所以,最终就形成了下面的一句话

insert into course(cno,cname,cpno,ccredit) values('icno’,’icname’,’icpno’,’iccredit’);

所以,我们就可以直接进行数据的插入了
我们可以看下结果为:

插入成功
看下表中的数据为:

所以,我们就完成了这次的实验。

4、工程代码

#include "stdafx.h"#include <stdio.h>#include <string.h>#include <stdlib.h>#include <winsock.h>#include "mysql.h"MYSQL mysql;MYSQL_RES *result;MYSQL_ROW row;int num_fields;int create_student_table();//int create_sc_table();//int create_course_table();//int insert_rows_into_student_table();//int insert_rows_into_sc_table();//int insert_rows_into_course_table();//void pause();int main(int argc, char** argv){    int num = 0;    char fu[2];    mysql_init(&mysql);    if (mysql_real_connect(&mysql, "localhost", "root", "password", "database", 3306, 0, 0))    {            for (;;){                printf("Sample Embedded SQL for C application\n");                printf("Please select one function to execute:\n\n");                printf("  0--exit.\n");                printf("  1--创建学生表     6--添加成绩记录   b--删除课程记录     h--学生课程成绩表 \n");                printf("  2--创建课程表     7--修改学生记录   c--删除成绩记录     j--学生成绩统计表  \n");                printf("  3--创建成绩表     8--修改课程记录   e--显示学生记录     k--课程成绩统计表   \n");                printf("  4--添加学生记录   9--修改成绩记录   f--显示课程记录     m--数据库表名 \n");                printf("  5--添加课程记录   a--删除学生记录   g--显示成绩记录      \n");                printf("\n");                fu[0] = '0';                scanf_s("%s", &fu);                if (fu[0] == '0') exit(0);                if (fu[0] == '1') create_student_table();                if (fu[0] == '2') create_course_table();                if (fu[0] == '3') create_sc_table();                if (fu[0] == '4') insert_rows_into_student_table();                if (fu[0] == '5') insert_rows_into_course_table();                if (fu[0] == '6') insert_rows_into_sc_table();                if (fu[0] == '7') current_of_update_for_student();                if (fu[0] == '8') current_of_update_for_course();                if (fu[0] == '9') current_of_update_for_sc();                if (fu[0] == 'a') current_of_delete_for_student();                if (fu[0] == 'b') current_of_delete_for_course();                if (fu[0] == 'c') current_of_delete_for_sc();                if (fu[0] == 'e') using_cursor_to_list_student();                if (fu[0] == 'f') using_cursor_to_list_course();                if (fu[0] == 'g') using_cursor_to_list_sc();                if (fu[0] == 'h') using_cursor_to_list_s_sc_c();                if (fu[0] == 'j') using_cursor_to_total_s_sc();                if (fu[0] == 'k') using_cursor_to_total_c_sc();                if (fu[0] == 'm') using_cursor_to_list_table_names();                pause();        }    }    else    {        printf("数据库不存在!");    }    system("pause");    /*关闭数据库*/    mysql_close(&mysql);    return 0;}int create_student_table(){    char yn[2];    char tname[21] = "xxxxxxxxxxx";    if (mysql_list_tables(&mysql, "student"))//删除表student    {        printf("The student table already exists,Do you want to delete it?\n");        printf("Delete the table?(y--yes,n--no):");        scanf_s("%s", &yn);        if (yn[0] == 'y' || yn[0] == 'Y'){            if (mysql_query(&mysql, "delete from student;") == 0)//删除student表格            {                printf("Drop table student successfully!\n\n");            }            else            {                printf("ERROR: drop table student \n\n");            }        }    }    mysql_query(&mysql, "SET NAMES GBK;");    /*插入数据*/    if (mysql_query(&mysql, "insert into student values('95001','李斌','16','男','CS'),('95002','赵霞','18','女','IS'),('95003','周淘','17','男','CS'), ('95004', '钱乐','18','女','IS') ,('95005','孙力','16','男','MA');") == 0)    {        printf("Success to insert rows to student table!\n\n");    }    else    {        printf("ERROR: insert rows \n\n");    }    return(0);}int create_course_table(){    char yn[2];    char tname[21] = "xxxxxxxxxxx";    if (mysql_list_tables(&mysql, "course"))//删除表course    {        printf("The course table already exists,Do you want to delete it?\n");        printf("Delete the table?(y--yes,n--no):");        scanf_s("%s", &yn);        if (yn[0] == 'y' || yn[0] == 'Y'){            if (!mysql_query(&mysql, "drop table course;"))            {                printf("Drop table course successfully!\n\n");            }            else            {                printf("ERROR: drop table course \n\n");            }        }    }    //创建表course    //插入数据    if (mysql_query(&mysql, "create table course (cno char(1) NOT null primary key,cname char(10) null ,cpno char(1) null ,ccredit int null) engine=innodb;") == 0)    {        printf("create table course successfully!\n\n");    }    else    {        printf("ERROR: create table course \n\n");    }    mysql_query(&mysql, "SET NAMES GBK;");    if (mysql_query(&mysql, "insert into course values('1', 'C语言', '',3),('2', '数据库', '1',4),('3', '编译原理', '2',5),('4','数据结构', '3',2),('5', '操作系统','4',3) ;") == 0)    {        printf("Success to insert rows to course table!\n\n");    }    else    {        printf("ERROR: insert rows \n\n");    }    return(0);}int insert_rows_into_student_table(){    char csage[] = "18";    char issex[] = "男";    char isno[] = "95002";    char isname[] = "xxxxxx";    char isdept[] = "CS";    char strquery[100] = "insert into student(sno,sname,sage,ssex,sdept) values('";    char yn[2];    while (1){        /*信息的采集,并进行字符串的粘连*/        printf("Please input sno(eg:95001):");        scanf_s("%s", isno);        strcat_s(strquery, isno);        strcat_s(strquery, "','");        printf("Please input name(eg:XXXX):");        scanf_s("%s", isname);        strcat_s(strquery, isname);        strcat_s(strquery, "','");        printf("Please input age(eg:18):");        scanf_s("%s", csage);        strcat_s(strquery, csage);        strcat_s(strquery, "','");        printf("Please input sex(eg:男):");        scanf_s("%s", issex);        strcat_s(strquery, issex);        strcat_s(strquery, "','");        printf("Please input dept(eg:CS、IS、MA...):");        scanf_s("%s", isdept);        strcat_s(strquery, isdept);        strcat_s(strquery, "');");        if (mysql_query(&mysql, strquery) == 0)        {            printf("execute successfully!\n\n");        }        else        {            printf("ERROR: execute \n");        }        printf("Insert again?(y--yes,n--no):");        scanf_s("%s", &yn);        if (yn[0] == 'y' || yn[0] == 'Y'){            continue;        }        else break;    }    if (mysql_errno(&mysql))  // mysql_fetch_row() failed due to an error    {        fprintf(stderr, "Error: %s\n", mysql_error(&mysql));    }    return (0);}int insert_rows_into_course_table(){    char icno[2];    char icname[20];    char icpno[2];    char iccredit[2];    char strquery[100] = "insert into course(cno,cname,cpno,ccredit) values('";    char yn[2];    while (1){        /*信息的采集,并进行字符串的粘连*/        printf("Please input cno(eg:1):");        scanf_s("%s", icno);        strcat_s(strquery, icno);        strcat_s(strquery, "','");        printf("Please input cname(eg:XXXX):");        scanf_s("%s", icname);        strcat_s(strquery, icname);        strcat_s(strquery, "','");        printf("Please input cpno(eg:1):");        scanf_s("%s", icpno);        strcat_s(strquery, icpno);        strcat_s(strquery, "','");        printf("Please input iccredit(eg:2):");        scanf_s("%s", iccredit);        strcat_s(strquery, iccredit);        strcat_s(strquery, "');");        if (mysql_query(&mysql, strquery) == 0)        {            printf("execute successfully!\n\n");        }        else        {            printf("ERROR: execute \n");        }        printf("Insert again?(y--yes,n--no):");        scanf_s("%s", &yn);        if (yn[0] == 'y' || yn[0] == 'Y'){            continue;        }        else break;    }    if (mysql_errno(&mysql))  // mysql_fetch_row() failed due to an error    {        fprintf(stderr, "Error: %s\n", mysql_error(&mysql));    }    return (0);}
0 0
原创粉丝点击