日期:2014-05-16  浏览次数:20713 次

用VC通过DLL包连接MySQL,执行存储过程后,再执行其他查询无效?
MYSQL mysql;
mysql_init(&mysql);
mysql_real_connect(&mysql,"localhost","root","","billingdb",0,NULL,CLIENT_MULTI_STATEMENTS);
mysql_query(&mysql,"call pr_add()"); //能执行无返回存储过程正常
...... //往下再执行其他SQL无效
mysql_query(&mysql,"delete from DB_ACCUNT where acc_plat='address'"); //这是再执行查询或删除,修改无效??
.....

/////////////////////////////////////////////////
如果是换成这样这样:
MYSQL mysql;
mysql_init(&mysql);
mysql_real_connect(&mysql,"localhost","root","","billingdb",0,NULL,CLIENT_MULTI_STATEMENTS);
mysql_query(&mysql,"call pr_add()"); //执行无返回存储过程过程正常
mysql_close(&mysql); //执行操作存储过程后关闭!!一次数据库

mysql_init(&mysql); //再重新链接打开数据库
mysql_real_connect(&mysql,"localhost","root","","billingdb",0,NULL,CLIENT_MULTI_STATEMENTS);
mysql_query(&mysql,"delete from DB_ACCUNT where acc_plat='address'"); //这是再执行查询或删除,修改没问题
mysql_close(&mysql);
..... //下来除不再操作存储过程,查询或删除,修改。。都正常

问题是:如果不执行存储操作,,,所有的查询或删除,修改没问题,,, 
  如果不存储操作,后不关闭数据库,重新链接 所有的查询或删除,修改后不执行(查询不返回,增。删。没效) 怪??,,,
问题在哪里? 头疼呀, 是不是每次操作存储过程后,都要断开一次链接,再接通???问题出在哪里,
换了最的libmysql.dll 也不行,,,,在mySQL 第三方查询工具里面, 用SQL 语句操作都没问题??
哪位用过的朋友帮忙看看,问题出在哪里,还是我用的查询有问题??????先谢谢了



------解决方案--------------------
mysql_query(&mysql,"call pr_add()"); //能执行无返回存储过程正常


加一句 mysql_free_result();试试
------解决方案--------------------
mysql_real_connect(&mysql,"localhost","root","","billingdb",0,NULL,CLIENT_MULTI_STATEMENTS);
mysql_query(&mysql,"call pr_add()"); //执行无返回存储过程过程正常

如果是同一个连接,不关闭,必须先把所有的结果集取出来,关闭释放再执行其它的操作。

详见下边的一个示例:
http://www.iihero.com/?id=12