ITPub博客

首页 > 应用开发 > > CodeBlocks——C++连接mysql数据库

CodeBlocks——C++连接mysql数据库

作者:germo 时间:2019-09-05 13:34:21 0 删除 编辑

C++连接MySQL数据库

C++不像PHP那样智能,没有集成的wamp环境,因此,C++连接数据库也就没有那么方便。上网查了些资料,终于连接成功了,记录下过程 。

1.在电脑上安装mysql

这一步网上有人说必须选择custmo模式,不过我安装时没有选择,也连接成功了。貌似没有那个必要。

2.下载mysql头文件

这个 必须要有,下载好后,把里面的.文件放到codeblocks的Include文件夹下。这上步的目的是在写程序中,可以引用mysql.h等头文件。

3.在codeblocks中的project -> build options ->setting and link ,添加,找到libmysql.lib,mysqlclient.lib,mysqld.lib这三个文件,把这三个文件的路径全部加过去,目的是使codeblocks能够找到并编译。如果是默认安装的话,这三个文件所在的位置是C:\Program Files\MySQL\MySQL Server 5.1\lib,每个人的位置可能不一样。

4.这时试着连接数据库,如果不能够连接成功,则可能会出现“没有找到libmysql.dll,因此这个应用程序未能启动。重新安装应用程序可能会修复此问题。”解决方法:

4.1:将C:\mysql\lib\opt目录下的libmysql.dll拷贝到 C:\WINDOWS\system32目录下

4.2:将libmysql.dll拷贝到.exe所在的文件下

最后附一个连接成功的代码:

[cpp]view plaincopy

#include   

#include   

#include   

#include   

  

using namespace std;  

  

/*数据库连接用宏*/  

#define HOST "localhost"  

#define USERNAME "root"  

#define PASSWORD " "  

#define DATABASE "test"  

  

void query_sql(char* sql)  

{  

MYSQL my_connection;/*这是一个数据库连接*/  

int res; /*执行sql語句后的返回标志*/  

MYSQL_RES *res_ptr;/*指向查询结果的指针*/  

MYSQL_FIELD *field;/*字段结构指针*/  

MYSQL_ROW result_row;/*按行返回的查询信息*/  

int row, column; /*查询返回的行数和列数*/  

int i, j;  

/*初始化mysql连接my_connection*/  

    mysql_init(&my_connection);  

/*建立mysql连接*/  

if (NULL != mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD,  

DATABASE, 0, NULL, 0))/*连接成功*/  

    {  

printf("数据库查询query_sql连接成功!\n");  

/*设置查询编码为gbk,以支持中文*/  

mysql_query(&my_connection,"set names gbk");  

        res = mysql_query(&my_connection, sql);  

  

cout <<"res = " << res << endl;  

  

if (res)   /*执行失败*/  

        {  

printf("Error: mysql_query !\n");  

            cout << mysql_error(&my_connection) << endl;  

/*关闭连接*/  

            mysql_close(&my_connection);  

        }  

else     /*现在就代表执行成功了*/  

        {  

/*将查询的結果给res_ptr*/  

            res_ptr = mysql_store_result(&my_connection);  

/*如果结果不为空,就把结果print*/  

if (res_ptr)  

            {  

/*取得結果的行数和*/  

                column = mysql_num_fields(res_ptr);  

                row = mysql_num_rows(res_ptr);  

printf("查询到 %d 行 \n", row);  

/*输出結果的字段名*/  

for (i = 0; field = mysql_fetch_field(res_ptr); i++)  

printf("%10s ", field->name);  

printf("\n");  

/*按行输出結果*/  

for (i = 1; i < row+1; i++)  

                {  

                    result_row = mysql_fetch_row(res_ptr);  

for (j = 0; j < column; j++)  

printf("%10s ", result_row[j]);  

printf("\n");  

                }  

            }  

/*不要忘了关闭连接*/  

            mysql_close(&my_connection);  

        }  

    }  

else  

    {  

printf("数据库连接失败");  

    }  

}  

  

int main()  

{  

char *query;  

query="select * from student";  

    query_sql(query);  

return 0;  

}  

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1868/viewspace-3147448/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-07-17

  • 博文量
    209
  • 访问量
    8229