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...)
PHP-Code:

void capi2name
::slotmysql()
{
QString error;
bool allok=true;
int findd=1;
int   checkokiupdate;
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.
KConfigconfig 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(&mysqlchostcusercpasswd))
{
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(&mysqlcdb))
 {
 
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(&mysqltchostcusercpasswd))
{
 
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(&mysqltcdb))
 {
 
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;
  
allokfalse;
  }
}
//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(lvmainrow[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