Использование значения ICollection в параметризованном параметре sqlite SELECT - PullRequest
0 голосов
/ 22 мая 2010

Я пытаюсь получить все записи из базы данных sqlite, которые имеют то же имя, что и ключи в Hashtable.

Мое утверждение выглядит следующим образом.

// the keys from the hashtable are names equivalent 
// to name entrys in the SomeTable Names Collumn
Hashtable names;

String query = "SELECT Id, Name FROM SomeTable WHERE Name LIKE (@Names)";
SQLiteCommand command = new SQLiteCommand(query, _databaseConnection);
command.Parameters.AddWithValue("@Names", names.Keys);
SQLiteDataReader reader = reader.ExecuteReader();

while(reader.Read())
{
     Console.WriteLine("Name: {0}, ID: {1}", reader[1].ToString(), reader[0].ToString());
}

Я абсолютно уверенв базе данных есть аналогичные значения, но я ничего не получаю, а читатель не выполняет.Разве невозможно добавить ICollection в качестве значения параметра, поэтому мне нужно запустить ридер только один раз?

Ответы [ 2 ]

0 голосов
/ 22 мая 2010

ТАК, чтобы закончить это.Благодаря ссылке, полученной от Carlson63000, у меня что-то заработало

0 голосов
/ 22 мая 2010

Вы не хотите, чтобы предложение LIKE в этом выборе, вы хотите, чтобы предложение IN.

например, в конечном счете, вы хотели бы выполнить запрос, такой как:

SELECT Id, Name FROM SomeTable WHERE Name IN ('case23', 'carson63000', 'fred')

К сожалению, кажется, что добавить это в качестве параметра непросто.

Я нашел более старый вопрос " Параметризация предложения SQL IN? ", который может дать некоторые идеи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...