VS2017连接Mysql

前言

这次数据库实验作业要求使用EMbedded SQL,课本上的教程还停留在10年前的水平,,其实最麻烦的无非就是环境配置的问题,在此为大家填一下坑~

操作步骤

  1. 右键项目名称,选择属性:
    这里写图片描述
  2. 在配置属性->VC++目录里面,分别将mysql安装目录下的include文件夹和lib文件夹添加到包含目录和库目录里面。
    这里写图片描述
    这里写图片描述
  3. 接着在链接器的输入里面,找到附加依赖项,手动编辑添加libmysql.lib文件。
    这里写图片描述
    这里写图片描述
  4. 然后将mysql安装目录下的lib文件夹里的libmysql.lib文件拷贝到项目的根目录。
    这里写图片描述
    这里写图片描述
  5. 最后还需要将活动解决方案平台设置为x64,因为我的mysql安装的是64位版本,否则会出现不兼容。
    这里写图片描述

测试代码

#include "stdafx.h"
#include <stdio.h>  
#include <mysql.h>  

#define _UNICODE

void sqlselect(MYSQL *, const char *);     //测试查询数据 

MYSQL *mysql = NULL;

int main()
{
    //初始化MySQL连接句柄
    mysql = mysql_init((MYSQL *)0);

    mysql_real_connect
    (
        mysql,
        "localhost", //数据库地址
        "root", //数据库用户名
        "******", //数据库密码
        "jxgl", //数据库名称
        0, //数据库端口,0表示默认端口(即3306)
        NULL, //如果unix_socket不是NULL,字符串指定套接字或应该被使用的命名管道。注意host参数决定连接的类型
        0 //通常是0
    );

    if (!mysql) //连接失败
    {
        printf("Connection error:%d, %s\n", mysql_errno(mysql), mysql_error(mysql));
    }

    const char *command = "select * from course"; //查询指令

    // 改变编码格式
    mysql_set_character_set(mysql, "GB2312");

    sqlselect(mysql, command); //查询数据  

    mysql_close(mysql); //关闭连接  

    system("pause");
    return 0;
}

void sqlselect(MYSQL *mysql, const char *command)
{

    int flag = mysql_real_query(mysql, command, strlen(command));

    if (flag)
    {
        printf("Select error:%d, %s\n", mysql_errno(mysql), mysql_error(mysql));
        return;
    }

    MYSQL_RES *res = mysql_store_result(mysql); //读取将查询结果   
    MYSQL_FIELD *field = mysql_fetch_fields(res); //获取所有列名
    int field_count = mysql_field_count(mysql); //获取列数

                                                //输出所有列名
    for (int i = 0; i < field_count; i++)
    {

        printf("%s\t", field[i].name);
    }

    printf("\n");

    //遍历输出每一行数据  
    MYSQL_ROW row;
    while (row = mysql_fetch_row(res))
    {
        for (int i = 0; i < field_count; i++)
        {
            printf("%s\t", row[i]);
        }
        printf("\n");
    }
}

实测是可以运行的,如果遇到了其他问题,不是mysql.h的锅,请自行搜索解决方案~

猜你喜欢

转载自blog.csdn.net/bkjs626/article/details/80621514