में समर्थित तैयार कथन हैं, मैं आमतौर पर एक लाइव सर्वर के साथ विकसित होता हूं, लेकिन पहली बार मुझे लगा कि मैं छलांग लगाऊंगा और देख सकता हूं कि क्या मैं अपने सभी (सी ++) mysql कोड को एम्बेडेड सर्वर के रूप में काम कर सकता हूं। विशेष रूप से, मैं तैयार बयानों का बहुत शौकिया हूं क्योंकि वे (आईएमएचओ) "आम तौर पर" गैर-तैयार विविधता से बेहतर हैं।एम्बेडेड MySQL
मैंने 5.5.22 से libmysqld और libmysqld 5.6.4 से और न तो काम करने का प्रयास किया है।
कनेक्शन बनाया गया है, सरल mysql_query/mysql_real_query आदेश ठीक काम करते हैं, लेकिन जैसे ही मेरा पहला तैयार कथन एक mysql_stmt_fetch() को इंगित करता है, मुझे नफरत 'सिंक से बाहर आदेश' त्रुटि मिलती है।
संकल्प के बिना ऑरक्ल फ़ोरम (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);
इस बिंदु पर
, mysql_real_query() कॉल काम करते हैं। मैं जारी ...
//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 the output bind object has the same number of params as theQuery
mysql_free_result(metadata);
mysql_stmt_bind_param(); // called IF there are input params
mysql_stmt_bind_result(); // pretty much always called for the output params
}
// and at last
mysql_stmt_execute();
//mysql_stmt_store_result(); //{OPTIONAL: use if you want to buffer the fetch - I dont}
mysql_stmt_fetch(); // ERROR! commands out of sync.
// and for completeness,
mysql_stmt_free_result();
mysql_stmt_close();
// and the shutdown
mysql_close();
mysql_library_end();
आपकी मदद के लिए धन्यवाद। मेरा प्रश्न तैयार बयानों के मूल्य पर नहीं है, लेकिन यह एम्बेडेड mysql लाइब्रेरी (यानी कोई बाहरी सर्वर) के साथ काम करने से संबंधित जानकारी पर नहीं है। मेरे लिए, वे काम नहीं कर रहे हैं। दूसरी बात, mysql_stmt_store_result को कॉल करना प्रासंगिक नहीं है। आपके संदर्भ के लिए देखें: http://dev.mysql.com/doc/refman/5.5/en/mysql-stmt-store-result.html यदि आप fetch (जो मैं नहीं हूं) को बफर नहीं कर रहा हूं, तो आप नहीं करते स्टोर स्टोर करने की आवश्यकता है (जो मैं नहीं)। कम से कम, देखने के लिए, मैंने आपके सुझाव की कोशिश की और स्टोर कमांड पर सिंक से बाहर होता है। –