Вот 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);
Я не уверен, как прогрессировать отсюда, таким образом, любая справка ценится. При необходимости в большем количестве информации, спросите.
Как насчет этого:
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);
Похоже, вам не хватает пробелов
"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%"