PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mysql lib: win & lin



jonasge
24-12-2002, 13:55
Hallo,

ich habe unter Linux eine Anwendung geschrieben, die auf die mysqlclientlib zugreift.

Das geht eigendlich Perfekt mit dem code(siehe unten)...

Wenn ich jetzt die code anpasse, also die QString und die Q-Sachen in C++ MS umwandle, und die mysqllib
für windows einbinde, und die include-Dateien von mysql for windows,
dann mekert der compiler an der mysql_com.h rum, wenn ich diese
my_socket fd; // For Perl DBI/db auskommentiere, dann kann ich es uebersetzten...

DOch der code unten führt dazu, das der ms debuger kommt, und die mysql lib abstürzt.

Wenn ich jedoch die zweite While -schleife auskommentiere, dann geht es ohne Probleme...


Warum kann man unter win keine zwei While-schleifen ineinander mahcen ??



code: (linux ) (windows ist gleich nur ohne Q-Sachen...)



void capi2name::slotmysql()
{
QString error;
bool allok=true;
int findd=1;
int checkok, iupdate;
char name[80];
const char *chost="";
const char *cuser="";
const char *cpasswd="";
const char *cdb="";
static QString host;
static QString user;
static QString passwd ;
static QString db;
MYSQL mysql;
MYSQL_RES *result;
MYSQL_ROW row;
MYSQL mysqlt;
MYSQL_RES *resultt;
MYSQL_ROW rowt;
// clear box:
lvmain->clear();
//read the host, user, passwd, readme.
KConfig* config = kapp->config();
iupdate = config->readNumEntry("Update", 0);
host = config->readEntry("HOST", "");
user = config->readEntry("USER", "");
passwd = config->readEntry("PASSWD", "");
db = config->readEntry("DB", "");
chost = host.ascii();
cuser = user.ascii();
cpasswd = passwd.ascii();
cdb = db.ascii();
// wenn update == 1 dann nicht updaten.
if (iupdate==1)
{
// angerufene connect
if (! mysql_connect(&mysql, chost, cuser, cpasswd))
{
cerr << "\nError: (connect) " << mysql_error(&mysql) << endl;
error = mysql_error(&mysql);
QMessageBox::warning(this,"Error: Can't connect!","Can't connect to mysql Host.\nPlease check the configuration.\nMysql-Says:\n"+error);
allok=false;
}
if (allok)
{
if (mysql_select_db(&mysql, cdb))
{
error = mysql_error(&mysql);
QMessageBox::warning(this,"Error: Can't select!","Can't select mysql Database.\nPlease check the configuration.\nMysql-Says:\n"+error);
cerr << "\nError: (db select.)" << mysql_error(&mysql) << endl;
allok=false;
}
} // allok == true
if (allok)
{
if (mysql_query(&mysql, "SELECT * FROM angerufene"))
{
error = mysql_error(&mysql);
QMessageBox::warning(this,"Error: Can't open","Can't open mysql table \"angerufene\".\nPlease check the configuration.\nMysql-Says:\n"+error);
cerr << "\nError: (select angerufene)" << mysql_error(&mysql) << endl;
allok=false;
}
result = mysql_store_result(&mysql);
} // allok==true
// angerufene connect ende

// adressbuch connect
if (allok)
{
if (! mysql_connect(&mysqlt, chost, cuser, cpasswd))
{
error = mysql_error(&mysqlt);
QMessageBox::warning(this,"Error: Can't connect!","Can't connect to mysql Host.\nPlease check the configuration.\nMysql-Says:\n"+error);
cerr << "\nError: (connect) " << mysql_error(&mysqlt) << endl;
allok =false;
}
} //allook=true
if (allok)
{
if (mysql_select_db(&mysqlt, cdb))
{
error = mysql_error(&mysqlt);
QMessageBox::warning(this,"Error: Can't select!","Can't select mysql Database.\nPlease check the configuration.\nMysql-Says:\n"+error);
cerr << "\nError: (select db)" << mysql_error(&mysqlt)<< endl;
allok=false;
}
} //allok==true
// adressbuch ende

if (allok)
{
if (mysql_query(&mysqlt, "SELECT * FROM adressbuch"))
{
error = mysql_error(&mysqlt);
QMessageBox::warning(this,"Error: Can't open","Can't open mysql table \"adressbuch\".\nPlease check the configuration.\nMysql-Says:\n"+error);
cerr << "\nError: (select adressbuch)" << mysql_error(&mysqlt)<< endl;
allok= false;
}
}//allok == trie

if (allok)
{
while(row = mysql_fetch_row(result))
{
//cout << "Tabelle: ID " << row[0] << " Rufnr. " << row[1] << " Datum: " << row[2] << " Uhrzeit: " << row[3] << " Name: " << row[5]<< endl;
sprintf(name, "unbekannt");
mysql_query(&mysqlt, "SELECT * FROM adressbuch");
resultt = mysql_store_result(&mysqlt);
findd=1;
while( rowt = mysql_fetch_row(resultt) )
{
if (!strcmp(rowt[7], row[1]))
{
checkok = 1;
sprintf(name, "%s %s", rowt[1], rowt[2]);
findd=2;
break;
}
else if (!strcmp(rowt[8], row[1]))
{
checkok = 1;
sprintf(name, "%s %s", rowt[1], rowt[2]);
findd=2;
break;
}

else if (!strcmp(rowt[9], row[1]))
{
checkok = 1;
sprintf(name, "%s %s", rowt[1], rowt[2]);
findd=2;
break;
}
else if (!strcmp(rowt[10], row[1]))
{
checkok = 1;
sprintf(name, "%s %s (Handy)", rowt[1], rowt[2]);
findd=2;
break;
}

else// (checkok != 1)
{
// cerr <<"in checkok !=1"<< endl;
if (strcmp(row[5],"unbekannt"))
{
sprintf(name, "%s", row[5]);
findd=2;
}
else {
sprintf(name, "unbekannt");
}
}
if (findd==2)
break;
} // innere while
lvmain->insertItem(new QListViewItem(lvmain, row[2], row[3], row[1], name));
} // ausere while
} //allook= true
}// update==1
else
{
QMessageBox::warning(this, "Kcapi2name", "Please open the conf-Dialog!\nAnd set the settings...\n");
}

} // ende slotmysql();


Gruss
Jonas