底下是自己写的一段小代码。假设有62条记录,在查询完毕后,还会输出几条乱码,感觉应该是指针方面的问题,但找了半天还是修改失败,望指教……多谢了……#include#include...
底下是自己写的一段小代码。假设有62条记录,在查询完毕后,还会输出几条乱码,感觉应该是指针方面的问题,但找了半天还是修改失败,望指教……多谢了……
#include
#include
#include "mysql.h"
#include
#pragma comment(lib,"libmysql.lib")
using std::cout;
using std::endl;
using std::string;
MYSQL mysql;
long long* getfield(char* sql)
{
MYSQL_ROW m_row;
MYSQL_RES *m_res;
long long* p = NULL;
unsigned long long num = 0;
unsigned long i = 0;
mysql_query(&mysql,sql)
m_res = mysql_store_result(&mysql);
num = mysql_num_rows(m_res);
p = new long long [num];
memset(p, '\0', sizeof(long long) * num);
while(m_row = mysql_fetch_row(m_res))
{
p[i++] = atoi(m_row[0]);
}
return p;
}
int prepare()
{
char host[32] = "localhost";
char user[32] = "root";
char passwd[32] = "";
char dbname[32] = "test";
char log[512];
//初始化数据库
if(mysql_init(&mysql) == NULL)
{
return 1;
}
else
{
printf("Init success.\n");
}
//连接数据库
if(mysql_real_connect(&mysql,host,user,passwd,dbname,0,NULL,0) == NULL)
{
sprintf(log,"Fail to connect to database:%s.",mysql_error(&mysql));
return 1;
}
else
{
printf("Connect to database:%s.\n",dbname);
}
return 0;
}
void main()
{
prepare();
long long *p = NULL;
p = getfield("select id from user where id>1");
int i = 0;
while(p[i])
{cout << p[i++] << endl;}
delete []p;
p = NULL;
system("pause");
}
那个,呃……prepare()那个函数可以不用看,用来初始化数据库连接的,确认过没问题,主要是getfield(char* sql)那个函数有问题……希望多帮帮忙哈……多谢多谢……
展开