C/C++对MySQL操作

昨天晚上在看C/C++对数据库的操作,猛然间觉得十分亲切,因为其中很多函数都和PHP中对MySQL操作相同,这是才想起PHP是C演化而来的。经过一番捣腾,终于完成了一个简单的程序,但是仍然存在着一个严重的问题,就是从数据库中得到的结果在屏幕上显示的是乱码,很让人烦。还望高手们赐教!

1.在机器上装上MySQL ,假设安装在 C:/MySQL/中;

2.这里我们用VC6.0来编写C++程序,但是这个之前要对VC6.0做一些设置,也就是把MySQL目录下的include和lib目录包含到VC6.0的directory选项中。具体的做法是在VC6.0中 tools(工具)>>option(选项)>>directories(目录)这个设置中把 include files 添加一个路径 C:/MySQL/include ,再给library files 添加一个路径C:/MySQL/lib/opt ,这样设置以后你就能够在程序中直接include对数据库操作的相关头文件了。

3.现在可以开始写程序了,代码如下:

//===========================================================//
//                TestMySQL.cpp
// Author : ASpire
// Discrb : for testing C++ in operating mysql
// Time   : 2010-3-18
//===========================================================//
/* include header about mysql */
#include "winsock2.h"
#include "mysql.h"

#include <stdio.h>

#define CONN_HOST "localhost"
#define CONN_USER "user"
#define CONN_PWD "password"
#define CONN_DB "luntan"

//----------------------------------------------------------//

MYSQL mysql;

void exiterr(int exitcode)
{
 fprintf(stderr,"%s",mysql_error(&mysql));
 exit(exitcode);
}

int mysql_test()
{
 MYSQL_RES *res;
 MYSQL_ROW row;
 
 unsigned int i = 0;
 
 /* init mysql handler */
 if(!mysql_init(&mysql))
 {
  exiterr(-1);
 }

 /* connect to mysql */
 if(!mysql_real_connect(&mysql,CONN_HOST,CONN_USER,CONN_PWD,NULL,MYSQL_PORT,NULL,0))
 {
  exiterr(-2);
 }

 /* select db */
 if(mysql_select_db(&mysql,CONN_DB))
 {
  exiterr(-3);
 }

 /* set db charset */
 char *sqlcharset = "SET NAMES 'GBK'";

 if(mysql_query(&mysql,sqlcharset))
 {
  exiterr(-6);
 }

 /* execute a query */
 char *sqlstr = "SELECT * FROM forum_auth";

 if(mysql_query(&mysql,sqlstr))
 {
  exiterr(-4);
 }
 
 /* store result */
 if(!(res = mysql_store_result(&mysql)))
 {
  exiterr(-5);
 }

 /* fetch row and get the result */
 while(row = mysql_fetch_row(res))
 {
  for(i=0;i<mysql_num_fields(res);i++)
  {
   printf("%s",row);
  }
  printf("/t");
 }

 /* free result */
 mysql_free_result(res);

 /* close mysql connection */
 mysql_close(&mysql);

 return 0;
}

//-----------------------------------------------------------//

int main()
{
 mysql_test();
 
 return 0;
}

//-----------------------------------------------------------//

原文地址:https://www.cnblogs.com/cy568searchx/p/2845238.html