Параметры команды не поддерживаются текущим провайдером. Что мне делать? - PullRequest
1 голос
/ 15 октября 2010

Я пытаюсь запросить каталог службы индексирования Microsoft, и я нашел кучу действительно полезных статей об этом (например, этот ), но в каждом найденном примере они просто используют конкатенацию строк строить запросы, и на разных уровнях это кажется неправильным.

Я явно хочу использовать параметризованные запросы, но похоже, что поставщик MS Indexing их не поддерживает, как описано в следующем исключении:

Интерфейс ICommandWithParameters не поддерживается поставщиком 'MSIDXS'. Параметры команды не поддерживаются текущим провайдером.

Вот упрощенный пример моего кода. Все, что я хочу сделать, это запустить действительно простой запрос и защитить от неправильного ввода.

OleDbCommand cmd = new OleDbCommand("select DocTitle, Path from scope() where @friendlyName = '@value'", ActiveConnection());
cmd.Parameters.Add(new OleDbParameter("@friendlyName", friendlyName));
cmd.Parameters.Add(new OleDbParameter("@value", value));

OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataSet results = new DataSet();
da.Fill(results);

Если я действительно вынужден использовать конкатенацию строк, каков наилучший способ очистки входных данных? Как я узнаю, что покрыл все дела?

1 Ответ

0 голосов
/ 15 октября 2010

Должны ли параметры иметь имена?Похоже, что этот пример MSDN может соответствовать всем требованиям.

public void CreateMyOleDbCommand(OleDbConnection connection,
string queryString, OleDbParameter[] parameters) {
OleDbCommand command = new OleDbCommand(queryString, connection);
command.CommandText = 
    "SELECT CustomerID, CompanyName FROM Customers WHERE Country = ? AND City = ?";
command.Parameters.Add(parameters);

for (int j=0; j<parameters.Length; j++)
{
    command.Parameters.Add(parameters[j]) ;
}

string message = "";
for (int i = 0; i < command.Parameters.Count; i++) 
{
    message += command.Parameters[i].ToString() + "\n";
}
Console.WriteLine(message);

}

http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbcommand.parameters.aspx

...