Windows环境用C语言查询 MySQL 数据库

1. VS2022  控制台工程,Debug X86模式,字符集选用Multi-Byte

2. 把MySQL的头文件和库文件路径加进工程。

3. 把MySQL的库目录中的动态链接库libmysql.dll 复制到工程的当前工作目录下

4. 返回值中有NULL要注意转换

头文件路径:

 

 库文件路径:

 

 

运行结果:

 

 测试程序:MySQLTest.cpp

// MySQLTest.cpp : This file contains the 'main' function. Program execution begins and ends there.
//1. VS2022  控制台工程,Debug X86模式,字符集选用Multi-Byte
//2. 把MySQL的头文件和库文件路径加进工程。
//3. 把MySQL的库目录中的动态链接库libmysql.dll 复制到工程的当前工作目录下
//4. 返回值中有NULL要注意转换
//  
// XGZ 2022-07-16 SZ

#include <WinSock2.h>
#include <mysql.h>
#include <string>
#include <vector>

using namespace std;

#pragma comment(lib,"libmysql.lib")

int main()
{
    MYSQL* conn;     
    MYSQL_ROW row;   
    MYSQL_RES* res; 
    int    nrow;
    int    ncolum;

    vector <string> data1;

    conn = mysql_init(NULL);
    if (!conn)         
    {
        printf("\n <ERR> mysql_init failed!");
        return -1;
    }
    //本地连接到test数据库
    conn = mysql_real_connect(conn, "127.0.0.1", "root", "root", "test", 0, NULL, 0);
    if (conn)
    {
        printf("\n<OK>mysql_real_connect success!");
    }
    else
    {
        printf("\n<ERR>mysql_real_connect failed!");
        return -1;
    }
    //查询test数据库user表
    mysql_query(conn, "select * from user");
    res = mysql_store_result(conn);
    if (NULL == res)
    {
        return 0;
    }

    ncolum = mysql_num_fields(res);  //xgz 查表结果的列数 
    nrow = 0;                        //xgz 返回的行数可以直接用函数获取 nrow = mysql_num_rows(res);
    //保存读到的数据
    while (row = mysql_fetch_row(res))
    {
        for (int rols = 0; rols < ncolum; rols++)
        {
            if(NULL == row[rols])
            {
                data1.push_back("NULL");  //xgz 如果返回值是NULL,就换成字符串NULL
            }
            else
            {
                data1.push_back(row[rols]);
            }
        }
        nrow++;
    }

    //处理(打印)读取的数据
    printf("\n=== Result row= %d, colum=%d ===\n",nrow,ncolum);
    for (int i = 0; i < nrow; i++)
    {
        for (int j = 0; j < ncolum; j++)
        {
            printf("\t%s", data1.at(i * ncolum + j).c_str());
        }
        printf("\n");
    }
  
    return 0;
}

 

posted @ 2022-07-16 08:54  XGZ21  阅读(208)  评论(0编辑  收藏  举报