C# بناء معلمة استعلام SQL مثل %
-
21-08-2019 - |
سؤال
أنا أحاول بناء SQL للحصول على استعلام معلمة في C# استعلام والتي سوف تحتوي على LIKE %%
الأوامر.
هنا هو ما أحاول أن تحقق (يرجى ملاحظة أن قاعدة بيانات فايربيرد)
var SQL = string.format("SELECT * FROM {0} WHERE {1} LIKE '%?%'", TABLE, NAME);
cmd.Parameters.AddWithValue(NAME, "JOHN");
الآن لقد حاولت كل واحد التقليب للحصول على المعلمة للعمل ، لقد حاولت ،
إضافة
%
شخصية المعلمة ،cmd.Parameters.AddWithValue(NAME, "%" + "JOHN" + "%");
أو
cmd.Parameters.AddWithValue(NAME, "'%" + "JOHN" + "%'");
أنا لا يمكن أن يبدو للحصول على هذا العمل ، كيف يمكنني استخدام المعلمة عن مثل الاستعلام إلى العمل.
اقتراحات هي موضع ترحيب!
المحلول
لا يمكنك الحصول على المعلمات داخل سلسلة حرفية في الاستعلام.جعل كامل قيمة المعلمة ، إضافة البدل إلى السلسلة:
var SQL = string.format("SELECT * FROM {0} WHERE {1} LIKE ?", TABLE, NAME);
Cmd.Parameters.AddWithValue(NAME, "%" + "JOHN" + "%");
نصائح أخرى
var SQL = string.Format("SELECT * FROM {0} WHERE {1} LIKE '%' + ? + '%'", TABLE, NAME);
Cmd.CommandText = SQL;
Cmd.Parameters.Add("?", SqlDbType.VarChar, 50).Value = "JOHN";
في الماضي عندما تفعل هذا, لقد ببساطة دمج في sql, التأكد من أن استبدال علامات الاقتباس المفردة مع علامات استفهام للتعامل مع حقن sql.على سبيل المثال:
var SQL = string.format("SELECT * FROM {0} WHERE {1} LIKE '%{2}%'",
TABLE,
NAME,
JOHN.Replace("'","?"));
لا تنتمي إلى StackOverflow