поиск данных в базе данных - PullRequest
1 голос
/ 12 июля 2010

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

защищенный void 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». Когда я запускаю приложение, я получаю эту ошибку:

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

Сведения об исключении: System.Data.SqlClient.SqlException: неправильный синтаксис рядом с ключевым словом «FROM».

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

Я не уверен, как продвинуться отсюда, поэтому любая помощь приветствуется. Если вам нужна дополнительная информация, пожалуйста, спросите.

Ответы [ 2 ]

2 голосов
/ 12 июля 2010

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

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);
0 голосов
/ 12 июля 2010

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

"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%"

...