OLEDB / ado.net: الحصول على نص الأمر، مع جميع المعلمات محل

StackOverflow https://stackoverflow.com/questions/178857

  •  05-07-2019
  •  | 
  •  

سؤال

هل من الممكن الحصول على نص OleDbCommand مع جميع المعلمات استبدال قيمهم؟ مثلا في التعليمات البرمجية أدناه أنا أبحث عن وسيلة للحصول على نص الاستعلام

SELECT * FROM my_table WHERE c1 = 'hello' and c2 = 'world'

وبعد أن انتهيت من تعيين المعلمات.

var query = "SELECT * FROM my_table WHERE c1 = ? and c2 = ?";
var cmd = new OleDbCommand(query, connection);
cmd.Parameters.Add("@p1", OleDbType.WChar).Value = "hello";
cmd.Parameters.Add("@p2", OleDbType.WChar).Value = "world";
هل كانت مفيدة؟

المحلول

لا: لديك لتكرار خلال مجموعة المعلمات بنفسك، القيام string.Replace () للحصول على ما يعادلها. إنه أمر مؤلم ولا سيما عندما يكون لديك لاستخدام بناء الجملة ? بدلا من بناء الجملة @parametername.

والسبب في ذلك هو أن السلسلة الكاملة ل<م> لا تجميعها. المعلمات وإرسالها إلى الخادم وتعامل على أنها البيانات، ولم يتم تضمين في السلسلة.

وعلى الرغم من ذلك، أنا واحد فهم الألم. كان يمكن أن يكون جميلا لو أنها شملت بعض نوع من طريقة .ComposeSQL() هل يمكن تسمية <م> لأغراض التصحيح ، التي ربما تنتج أيضا تحذيرا مترجم للمساعدة في تجنب استخدامها في الإنتاج.

نصائح أخرى

إذا كنت بحاجة فقط لمعرفة ما الاستعلام أعدم ولا تحتاج للعمل معها برمجيا، يمكنك استخدام SQL التعريف.

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