2010-12-01 20 views
12

मैं एक SQL क्वेरीसी # SQLite Parameterized तरह का प्रयोग करें

SELECT * FROM [TABLE] WHERE hostname LIKE '%myhostname%'; 

जैसे यह सादा एसक्यूएल में ठीक काम करता है करने के लिए कोशिश कर रहा हूँ, लेकिन जब मैं सी # में System.Data.SQLite उपयोग करते हैं, यह केवल एक साथ काम करता है शाब्दिक, पैरामीटर नहीं, जैसे कि

string sel = "SELECT * FROM [TABLE] WHERE hostname LIKE '%@host%'"; 
... 
command.Parameters.AddWithValue("@host", "myhostname"); 

इससे कोई परिणाम नहीं मिलता है।

उत्तर

21

आप ऐसा नहीं कर सकते हैं। पैरामीटर पूर्ण मान होना चाहिए - यह सिर्फ SQL में एक स्ट्रिंग प्रतिस्थापन नहीं है। आप इसके बजाय ऐसा कर सकते हैं:

string sel = "SELECT * FROM [TABLE] WHERE hostname LIKE @host"; 
... 
command.Parameters.AddWithValue("@host", "%myhostname%"); 
+4

'स्ट्रिंग sel =" का चयन करें * [तालिका] जहां होस्टनाम की तरह ' % '+ @ होस्ट +'% '";' भी काम करेगा। – Donnie

+0

धन्यवाद मार्क - इससे एक टन मदद मिली। डोनी - मैंने पहले यह कोशिश की और यह मेरे लिए काम नहीं कर रहा था। – AdamC

+0

बस रूबी में स्क्लाइट 3 के साथ एक ही स्थिति का सामना करना पड़ा, और आपका समाधान वहां एक चैंप की तरह काम करता था। उपरोक्त, जो कि किसी कारण से मेरी स्क्रीन पर टट्टू की किक-लाइन से मुलाकात की गई थी? :/ –

5

ऐसा करने का सबसे आसान तरीका '||' का उपयोग करना है

उपयोग:

const string qry = "SELECT SiteNum FROM WorkTable WHERE WTName LIKE @wtName || '%' "; 

बजाय:

const string qry = "SELECT SiteNum FROM WorkTable WHERE WTName LIKE @wtName%"; 

मैं पहले से ही जवाब दे दिया है here

+0

के बजाय '||' के साथ concatenation का उपयोग करना था इसके लिए धन्यवाद! मैं खोज पैरामीटर मान में "%" अक्षरों को रखने के लिए कसरत करने का एक तरीका ढूंढ रहा था। मैं देखता हूं कि @ थंडरफोर्ज ने स्वीकार किए गए उत्तर पर टिप्पणी की है कि मूल रूप से यह कहकर कि आपने यहां क्या कहा है, लेकिन मैंने यह नहीं देखा होगा कि पहले आपका जवाब देखे बिना। –

संबंधित मुद्दे