Green Blanket Ответов: 2

Можно ли выбрать все возможные записи из базы данных по значению textbox


Есть ли способ выбрать возможную запись из базы данных table base по значению textbox и показать все выбранные записи в базе данных?

Например, 1) если я наберу "s" в текстовом поле, то "sephiroth, selth и spith" будут выбраны и показаны в gridview. 2) Если я наберу "se" в текстовом поле, то "sephiroth и selth будут выбраны и показаны на gridview.

[PrimaryKey] [имя___]
[1_________] [Сефирот]
[2_________] [Селт_____]
[3_________] [спит_____]

Я считаю, что этого можно достичь, используя LIKE в моем sql-операторе, но я могу сделать только первый, который выбирает все записи, начинающиеся с "s", но второй, я совершенно не знаю, как это сделать. Буду очень признателен за ваши ответы.

Что я уже пробовал:

На моей разметке у меня есть вот это:

<asp:TextBox ID="txtsearchnow" AutoPostBack="true" OnTextChanged="text_search" runat="server" placeholder="Search"></asp:Label>

Я делаю текстовое поле установить autopostback элемента управления = true, чтобы сделать функцию на очередь textchanged огонь

На моем коде позади:
protected void text_search(object sender, EventArgs e)
{
using(MySqlConnection con = new MySqlConnection(connstring))
{
MySqlCommand com = new MySqlCommand("SELECT * FROM test1 WHERE name=@name",con);
com.Parameters.AddWithValue("@name",txtsearchnow.Text);
MySqlDataAdapter ad = new MySqlDataAdapter(com);
DataTable dt = new DataTable();
dt.clear();
ad.Fill(dt);
gridsearch.DataSource = dt;
gridsearch.DataBind();
ad.Dispose();
}

Я вернул свой код с первой попытки.

Richard Deeming

SELECT * FROM test1 WHERE name Like @name + '%'

2 Ответов

Рейтинг:
14

alexvw

Привет,

Что касается задней части, то это будет ваше семя/параметр: @SearchValue varchar(#)

Вы можете попробовать одно из следующих действий:

Использование wild-карты:

--At the end
Select Name From YourTable Where name Like @SearchValue + '%'

--At the beginning:
Select Name From YourTable Where name Like '%' + @SearchValue

--both sides: (depending on your scenario, this one could be more useful)
Select Name From YourTable Where name Like '%' + @SearchValue + '%'


Использование функции CHARINDEX: (начиная с SQL 2008 и далее)

Select Name From YourTable Where CHARINDEX(ISNULL(@IDNum, MR_IdNum), MR_IdNum) > 0


Что касается фронт-энда:
Лично я бы не стал настраивать текстовое поле как: AutoPostBack="true" OnTextChanged="...", поскольку считаю, что такое поведение не идеально подходит для большинства веб-приложений; слишком много поездок туда и обратно! (опять же, это мое личное мнение).

Я хотел перехватить клавишу Enter, либо с помощью JavaScript или панель настроено на использование скрытой кнопки по умолчанию, которая вызовет запрос и заполнит сетку. Это выглядело бы еще лучше, если бы вы реализовали элемент UpdatePanel (Аякс).

Ваше здоровье!


Рейтинг:
1

Member 13658881

Попробовать это
Удалить текстовое поле.Текст изменен
Добавьте одну кнопку и попробуйте это..

protected void butgo_Click(object sender, EventArgs e)
       {

if (txtname.Text.Trim() != "")
           {
               str = "and name like '%" + txtname.Text.Trim() + "%'";
           }
   string query = "SELECT * FROM test1    where name<>'' " + str + " ";
           SqlCommand cmd = new SqlCommand(query, con);
           SqlDataAdapter da = new SqlDataAdapter(cmd);
           DataTable dt = new DataTable();
           da.Fill(dt);
           if (dt.Rows.Count != 0)
           {
               Gridview1.DataSource = dt;
              Gridview1.DataBind();
           }
           else
           {

               txtname.Text = "";
               bind();
               Response.Write("<script>No Record Found</script>");
           }}


Richard Deeming

Почему я продолжаю это делать повторять[^]? Должен ли кто-то уничтожить базу данных из одного из ваших приложений, прежде чем вы серьезно отнесетесь к этой уязвимости безопасности?

Member 13658881

хорошо я исправлю это в следующий раз