найдите в базе данных таблицу значений и поместите ее в таблицу данных - PullRequest
1 голос
/ 26 января 2010

У меня есть текстовое поле и кнопка поиска. Я пытаюсь найти имена файлов в таблице базы данных и отобразить их в виде данных ...

private void GetSearchResults(string machineID, string searchFileName)
{
    DataTable dt = new DataTable();
    SqlConnection connection = new SqlConnection();
    connection.ConnectionString = ConfigurationManager.ConnectionStrings["SumooHAgentDBConnectionString"].ConnectionString;
    connection.Open();
    SqlCommand sqlCmd = new SqlCommand("SELECT FileID, BuFileName FROM BackedUpFiles WHERE BuFileName Like '%@searchFileName%' AND MachineID=@machineID", connection);
    SqlDataAdapter sqlDa = new SqlDataAdapter(sqlCmd);

    sqlCmd.Parameters.AddWithValue("@machineID", machineID);

    sqlCmd.Parameters.AddWithValue("@searchFileName", searchFileName);

    sqlDa.Fill(dt);
}

все работает нормально, за исключением того, что searchFileName не работает в запросе ...

Я попытался указать только значение для проверки, как

SELECT FileID, BuFileName FROM BackedUpFiles WHERE BuFileName Like '%b%' AND MachineID=@machineID

и я получил значения файла ...

любые предложения .. ??

Ответы [ 3 ]

3 голосов
/ 26 января 2010

Ваша переменная находится внутри строки, которая указывает базе данных искать буквальную строку «@searchFileName».Чтобы использовать значение переменной, попробуйте это

'%' + @searchFileName + '%'
1 голос
/ 26 января 2010

попробуйте это на ваш выбор

SELECT FileID, BuFileName FROM BackedUpFiles where REGEXP_LIKE(upper(BuFileName ),UPPER(@searchFileName)) AND MachineID=@machineID;
1 голос
/ 26 января 2010

Вот что вам нужно:

private void GetSearchResults(string machineID, string searchFileName)
{
    DataTable dt = new DataTable();
    SqlConnection connection = new SqlConnection();
    connection.ConnectionString = ConfigurationManager.ConnectionStrings["SumooHAgentDBConnectionString"].ConnectionString;
    connection.Open();
    SqlCommand sqlCmd = new SqlCommand("SELECT FileID, BuFileName FROM BackedUpFiles WHERE BuFileName Like @searchFileName AND MachineID=@machineID", connection);
    SqlDataAdapter sqlDa = new SqlDataAdapter(sqlCmd);

    sqlCmd.Parameters.AddWithValue("@machineID", machineID);

    sqlCmd.Parameters.AddWithValue("@searchFileName", String.Format("%{0}%",searchFileName);

    sqlDa.Fill(dt);
}

Я сталкивался с этим раньше. По какой-то причине он не знает, как анализировать параметры, если они в кавычках. Я думаю, он думает, что это буквально.

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