VC操作MySQL:为什么一执行查询程序就错误退出
VC操作MySQL:为什么一执行查询程序就异常退出?
连接数据库的函数如下:
执行查询的函数如下:
------解决方案--------------------
MsgBox 2 个函数, 居然用这多, 包装下嘛, hehe
mysql_query F11 进去看看变量是否异常, 这样问, 别人怎么回答你呢
------解决方案--------------------
MARK
------解决方案--------------------
调试..或者捕捉异常啊.
------解决方案--------------------
一般是数据库类型不对.数据库结构不对.或者数据查询语句不对.
连接数据库的函数如下:
- 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
------解决方案--------------------
调试..或者捕捉异常啊.
------解决方案--------------------
一般是数据库类型不对.数据库结构不对.或者数据查询语句不对.