#include <iostream>
#include <WinSock2.h>
#include <mysql.h>
#include <string>
#include <vector>
#include "action.h"
using namespace std;


MYSQL *con;
st_mysql_res* res = NULL;
MYSQL_FIELD  *	field[200];
MYSQL_ROW		myRow;

CAction * m_pActionList[1000];
int LoadActions();

int main()
{
	con = mysql_init(con);
	if(!mysql_real_connect(con,"127.0.0.1","test","test","account_zf",NULL,NULL,NULL))
	{
		cout<<"Error connected"<<endl;
		system("pause");
		exit(-1);
		return false;
	}
	LoadActions();
	system("pause");
	return 0;
}


int LoadActions()
{
	int iIndex = 0;
	int iRows;
	int iFields;
	MYSQL_ROW myRow;
	MYSQL_FIELD* field [200];

	for (int a = 0; a < 200; a++)
		field[a] = NULL;

	mysql_query(con, "SELECT * FROM `cq_action`;");
	res= mysql_store_result(con);
	if ((iRows = (int)mysql_num_rows(res)) > 0)
	{
		iFields = (WORD)mysql_num_fields(res);
		for(int b = 0; b < iRows; b++)
		{
		/* error happens here*/	myRow = mysql_fetch_row(res);//Unhandled exception at 0x533e5e75 in tester.exe: 0xC0000005: Access violation reading location 0xcdcdcdd1.
			mysql_field_seek(res, 0);
			for(int f = 0; f < iFields; f++)
			{
				field[f] = mysql_fetch_field(res);
				if(field[f]) {
				if(!strcmp(field[f]->name, "id"))
				{
					iIndex++;
					m_pActionList[iIndex] = new class CAction;
					m_pActionList[iIndex]->id = atoi(myRow[f]);
					m_pActionList[iIndex]->index = iIndex;
				}
				else if(!strcmp(field[f]->name, "param"))
				{
					m_pActionList[iIndex]->param = new char[strlen(myRow[f])+1];
					m_pActionList[iIndex]->param[strlen(myRow[f])] = 0;
					memcpy(m_pActionList[iIndex]->param, myRow[f], strlen(myRow[f]));
				}
				else if(!strcmp(field[f]->name, "type"))
					m_pActionList[iIndex]->type = atoi(myRow[f]);
				else if(!strcmp(field[f]->name, "id_next"))
					m_pActionList[iIndex]->idnext = atoi(myRow[f]);
				else if(!strcmp(field[f]->name, "id_nextfail"))
					m_pActionList[iIndex]->idfail = atoi(myRow[f]);
				else if(!strcmp(field[f]->name, "data"))
					m_pActionList[iIndex]->data = atoi(myRow[f]);
				}
				else{
					if(field[f]=NULL)
						cout<<"error"<<endl;
				}
			}
		}
	}

	return 0;
}

idk why is this error happens

//Unhandled exception at 0x533e5e75 in tester.exe: 0xC0000005: Access violation reading location 0xcdcdcdd1.

Edited 5 Years Ago by MixedCoder: n/a

Is there a line at which that is occurring?

yeah

myRow = mysql_fetch_row(res);//Unhandled exception at 0x533e5e75 in tester.exe: 0xC0000005: Access violation reading location 0xcdcdcdd1.

I'm not sure I'm going to be able to help. Print out (I'm not sure how you do that in mysql) the columns of the row and the value of b to make sure you're not overstepping something when you're seeking. It looks like if you're reaching the point that's causing the error, that the DB is returning valid rows, so that's not a concern.

i checked and found that
the DB is returning unvalid rows


you r right i never think of that thnx :)

Edited 5 Years Ago by MixedCoder: n/a

This question has already been answered. Start a new discussion instead.