#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.

Recommended Answers

All 4 Replies

Is there a line at which that is occurring?

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 :)

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.