سؤال

لدي قاعدة بيانات منتشرة تتصل باستخدام C ++. جميع استفساراتي حتى الآن هي المعلمة، أي "SELECT USER.NAME FROM USER WHERE USER.ID = ?"وهذا يعمل بشكل جيد. ولكن في استعلام بحث، استخدم مثل في جملة WHERE، ثم يبدو أنني لا أستطيع استخدام المعلمات والأحرف البرية (٪).

استفساري يبدو شيئا مثل هذا "SELECT * FROM DOG WHERE DOG.NAME LIKE '%?%'" وبما أن هناك اثنين "حول المعلمة؟ -Mark، فخلف هذا، فقد بحثت عن الكلاب مع A؟ في SQL Server، ربما سيتم حل هذا عن طريق تسلسل السلسلة "SELECT * FROM DOG WHERE DOG.NAME LIKE '%' + ? + '%'", ، ولكن هذا هو بناء جملة غير صالح في pervasive (انظر أسفل هذه الصفحة: http://ww1.pervasive.com/library/docs/psql/950/sqlref/sqlref-04-55.html).

لقد حاولت أيضا إضافة٪ -Signs إلى المعلمة نفسها، ولكن هذا لا يبدو أن يعمل أيضا.

لا أحد يعرف حل لهذا؟

Edit1:مثال رمز C ++:

CString sqlCommand = "SELECT * FROM DOG WHERE DOG.NAME LIKE ?;";
m_pAdoCommand->CommandText = _bstr_t(sqlCommand);
m_pAdoCommand->Parameters->Append( m_pAdoCommand->CreateParameter("p0", adVarChar, adParamInput, 25, _bstr_t("'%bob%'")) );
m_pAdoRecordset = m_pAdoCommand->Execute(NULL,NULL,adCmdText);

(m_pAdoCommand هو _CommandPtr, ، و m_pAdoRecordset هو _RecordsetPtr. وبعد لقد غيرت اسم جداول SQL في هذا المثال حتى يحققون هنا.)

الرمز أعلاه سيعود إلى صف مع كلب له الاسم '%bob%', ، ولكن أود ذلك لإعادة كل الكلاب التي لها بوب باسمهم.

هل كانت مفيدة؟

المحلول

لماذا لا تضيف أحرف البدل إلى القيمة التي تقوم بتسمية المعلمة؟

لذلك، هذا يعني أن استفسارك يشبه

SELECT * FROM dog WHERE dog.name LIKE ?

وبعد ذلك، تقوم بتعيين القيمة "٪ BOB٪" إلى هذه المعلمة، على سبيل المثال. أراك تقول إنك جربت هذا أيضا، لكنه لا يعمل، وهو أمر غريب للغاية. هل يمكنك إظهار رمز ما قمت به بعد ذلك؟

أرى أيضا أنك وضعت اقتباسات حول المعلمة في إحدى الأمثلة الخاصة بك. هذا لا يبدو فكرة جيدة، حيث لن يتم التعرف على المعلمة كمعلمة بعد الآن. في تلك المرحلة، إنها مجرد سلسلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top