VC操作MySQL:为什么一执行查询程序就错误退出

VC操作MySQL:为什么一执行查询程序就异常退出?
连接数据库的函数如下:

C/C++ code

int dbConnDB(MYSQL *conn)
{
        conn = mysql_init (NULL);

        if (conn == NULL)
        {
                _tcsncpy(gszDBError, _T("MySQL数据库初始化错误!"), (sizeof(gszDBError)-1)/sizeof(TCHAR)*sizeof(CHAR));
                return (ERR_DB_INIT);
        }


#if defined (MYSQL_VERSION_ID) && MYSQL_VERSION_ID >= 32200 // 3.22 and up
        if (mysql_real_connect (conn, hname, uname, pwd, dbname, atoi(portnum), NULL, 0) == NULL)
        {
                _tcsncpy(gszDBError, _T("连接MySQL数据库失败1!"), (sizeof(gszDBError)-1)/sizeof(TCHAR)*sizeof(CHAR));
                return (ERR_DB_CONN);
        }
#else
        if (mysql_real_connect (conn, hname, uname, pwd, atoi(portnum), NULL, 0) == NULL)
        {
                _tcsncpy(gszDBError, _T("连接MySQL数据库失败2!"), (sizeof(gszDBError)-1)/sizeof(TCHAR)*sizeof(CHAR));
                return (ERR_DB_CONN);
        }
        if (dbname != NULL)
        {
                if (mysql_select_db (conn, dbname != 0)
                {
                        _tcsncpy(gszDBError, _T("选择数据库失败!"), (sizeof(gszDBError)-1)/sizeof(TCHAR)*sizeof(CHAR));
                        return (ERR_DB_CONN);
                        mysql_close (conn);
                        return (ERR_DB_SELECTDB);
                }
    }
#endif
        return(0);
}


int dbCloseDB(MYSQL *conn)
{
    mysql_close(conn);
    return(0);
}




执行查询的函数如下:
C/C++ code

int dbAddTransportMedium(TransportMedium *tm)
{
    char sQry[QRYSIZE];
    MYSQL conn;
    int ret=0;

    //conn = &rconn;
    if(dbConnDB(&conn) != 0)
    {
        memset(gszDBError, 0, sizeof(gszDBError));
        sprintf(gszDBError, "DBError: %u (%s)", mysql_errno(&conn), mysql_error(&conn));
        return(ERR_DB_CONN);
    }
MessageBox(NULL, "CONN OK", "ADD TM", MB_OK);
    memset(sQry, 0, sizeof(sQry));
    //sprintf(sQry, "INSERT INTO transport_medium(transport_medium) VALUES (\''%s\'')",
    //    tm->eTransportMedium.szContent);

    sprintf(sQry, "DELETE FROM transport_medium");
MessageBox(NULL, sQry, "ADD TM", MB_OK);
    //ret = mysql_real_query(conn, sQry, (unsigned int)strlen(sQry));
    mysql_query(&conn, sQry);//[color=#FF0000]到这里异常退出[/color]
MessageBox(NULL, "after query", "ADD TM", MB_OK);//[color=#FF0000]这个消息框没弹出来[/color]
    if( ret != 0)
    {
        memset(sQry, 0, sizeof(sQry));
        sprintf(sQry, "ADD TM failed - %d", ret);
MessageBox(NULL, sQry, "ADD TM", MB_OK);
        //memset(gszDBError, 0, sizeof(gszDBError));
        //sprintf(gszDBError, "DBError: %ld (%s)", mysql_errno(&conn), mysql_error(&conn));
        dbCloseDB(&conn);
        return(ERR_DB_WRITE);
    }

MessageBox(NULL, "ADD TM OK", "ADD TM", MB_OK);
    dbCloseDB(&conn);
    return(0);
}



------解决方案--------------------
MsgBox 2 个函数, 居然用这多, 包装下嘛, hehe 

mysql_query F11 进去看看变量是否异常, 这样问, 别人怎么回答你呢
------解决方案--------------------
MARK
------解决方案--------------------
调试..或者捕捉异常啊.
------解决方案--------------------
一般是数据库类型不对.数据库结构不对.或者数据查询语句不对.