поиск данных в базе данных

Вот aspx.cs файл для моего веб-приложения:

защищенный пустой Button1_Click (возражают отправителю, EventArgs e) {

    SqlDataReader myDataReader = null;
    string connectionString = "Data Source=[my source];Initial Catalog=[catalog name];Integrated Security=True";
    using (SqlConnection connection = new SqlConnection(connectionString))
    {

        SqlCommand returnResults = new SqlCommand("SELECT " + categoryName + " FROM Teacher WHERE " + categoryName + " LIKE '%" + searchText + "%'", connection);

        connection.Open();
      myDataReader = returnResults.ExecuteReader(CommandBehavior.CloseConnection);

        while (myDataReader.Read())
        {
            Console.Write(myDataReader.GetInt32(0) + "\t");
            Console.Write(myDataReader.GetString(2) + " " + myDataReader.GetString(1) + "\t");
            Console.Write(myDataReader.GetString(3) + "\t");
            if (myDataReader.IsDBNull(4))
                Console.Write("N/A\n");
            else
                Console.Write(myDataReader.GetInt32(4) + "\n");
        }


        myDataReader.Close();
        connection.Close();

    }


}

   protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{

    categoryName = DropDownList1.SelectedItem.Value;

}
protected void SearchBox_TextChanged(object sender, EventArgs e)
{

    searchText = SearchBox.Text;
}

Моя база данных имеет таблицу приблизительно с 24 столбцами. DropDownList, который я создал, имеет опцию выбрать каждое из этих имен столбцов. Существует SearchBox внизу, где пользователь может ввести ключевое слово для поиска.

Я хочу сохранить выбор DropDownList как "categoryName", и я хочу сохранить вход SearchBox как "searchText". Когда я запускаю приложение, я получаю эту ошибку:

Описание: необработанное исключение произошло во время выполнения текущего веб-запроса. Рассмотрите отслеживание стека для получения дополнительной информации об ошибке и где это произошло в коде.

Детали исключения: Система. Данные. SqlClient. SqlException: Неправильный синтаксис около ключевого слова 'ОТ'.

Исходная Ошибка: Строка 48: myDataReader=returnResults. ExecuteReader (CommandBehavior. CloseConnection);

Я не уверен, как прогрессировать отсюда, таким образом, любая справка ценится. При необходимости в большем количестве информации, спросите.

1
задан marc_s 12 July 2010 в 18:33
поделиться

2 ответа

Как насчет этого:

SqlCommand returnResults = new SqlCommand("SELECT categoryName FROM Teacher WHERE categoryName LIKE '%" + searchText + "%'", connection);

Это при условии, что categoryName - это столбец, который вы хотите получить в ответ, а также тот, по которому вы хотите вести поиск. Ваш первоначальный запрос делал несколько вещей неправильно: использовал переменную вместо имени столбца, а значение LIKE не было заключено в кавычки.

Если искомый столбец динамический и выбирается с помощью выпадающего списка, а значение хранится в переменной categoryName:

SqlCommand returnResults = new SqlCommand("SELECT " + categoryName + " FROM Teacher WHERE " + categoryName + " LIKE '%" + searchText + "%'", connection);
2
ответ дан 2 September 2019 в 23:07
поделиться

Похоже, вам не хватает пробелов

"SELECT" + categoryName + "FROM Teacher WHERE" + searchText + " LIKE " + "%" + searchText + "%", connection)

вернет что-то вроде

SELECTmycolumnnameFROM Teacher WHEREmycolumn LIKE %john%

Я думаю, вам нужно сделать так

"SELECT " + categoryName + " FROM Teacher WHERE " + searchText + " LIKE """ + "%" + searchText + "%""", connection);

чтобы получить

SELECT mycolumnname FROM Teacher WHERE mycolumn LIKE "%john%"

0
ответ дан 2 September 2019 в 23:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: