我通常使用实时服务器进行开发,但是我第一次想到我会实现这一目标,看看我是否可以将所有(C++)mysql代码作为嵌入式服务器运行.特别是,我非常喜欢准备好的陈述,因为他们(恕我直言)"通常"优于未准备好的品种.
我尝试过使用5.5.22中的libmysqld和5.6.4中的libmysqld并且都不起作用.
建立连接,简单的mysql_query/mysql_real_query命令工作正常,但是一旦我的第一个预处理语句发出mysql_stmt_fetch(),我就会得到讨厌的'命令不同步'错误.
一个非常类似的问题出现在oracles论坛(http://forums.mysql.com/read.php?168,507863,507863#msg-507863),没有解决方案.
我没有看到,也不相信我错过了mysql_real_connect()和mysql_stmt_fetch()之间的任何命令.
对于使用预准备语句的嵌入式服务器的任何示例,我的所有搜索都是空的.我也没有找到一个实际的句子"你不能这样做".
那么......它是否支持?
感谢您的专业知识.
//编辑以便进一步解密(并在必要时指示)我的完整mysql cmd序列如下:
mysql_library_init(); // as embedded
mysql_init();
mysql_options(MYSQL_SET_CHARSET_NAME); //to utf8
mysql_options(MYSQL_OPT_USE_EMBEDDED_CONNECTION);
mysql_real_connect();
mysql_real_query("SET NAMES 'utf8'");
mysql_real_query("SET CHARACTER SET 'utf8'");
mysql_set_character_set("utf8"); // yes, you really do need to set utf8 four times
mysql_autocommit( mAutocommit );
Run Code Online (Sandbox Code Playgroud)
此时,mysql_real_query()调用DO工作.我继续...
//all this would only happen once for each stmt
{
mysql_stmt_init();
mysql_stmt_prepare(theQuery);
mysql_stmt_param_count(); // to assert input bind object (aka the predicates) has the same number of params as theQuery
mysql_stmt_result_metadata()
mysql_num_fields(); // to assert …Run Code Online (Sandbox Code Playgroud)