小编Sas*_*wot的帖子

嵌入式MySQL中是否支持Prepared语句

我通常使用实时服务器进行开发,但是我第一次想到我会实现这一目标,看看我是否可以将所有(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)

c++ mysql prepared-statement embedded-database

17
推荐指数
1
解决办法
1090
查看次数