Member 13802222 Ответов: 2

Как получить конкретную строку столбца из базы данных


Источник данных моего выпадающего списка-это один из столбцов в моей базе данных.я хочу получить строку столбца, которая выбрана в выпадающем списке ...в Gridview.please help. #ASP.NET #в C # GridView в

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

я могу восстановить полный Колум а не конкретные строки
<title>

#Select1
{
width: 197px;
}

<asp:DropDownList ID="DropDownList1" runat="server"

DataSourceID="SqlDataSource1" DataTextField="Album_name"

DataValueField="Album_name">
<asp:listitem>Lamborghini
<asp:listitem>BMW

<asp:SqlDataSource ID="SqlDataSource1" runat="server"

ConnectionString="<%$ ConnectionStrings:iuploadaz %>"

SelectCommand="SELECT [Album_name] FROM [tb_Gallery]">
<asp:ScriptManager ID="ScriptManager1" runat="server">

<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
<asp:AnimationExtender ID="Button1_AnimationExtender" runat="server"

Enabled="True" TargetControlID="Button1">

<asp:GridView ID="gvsearch" runat="server" AutoGenerateColumns="False"

DataSourceID="SqlDataSource1" Width="305px">
<columns>
<asp:BoundField DataField="Album_name" HeaderText="Album_name"

SortExpression="Album_name" />


<asp:ListBox ID="ListBox1" runat="server" DataSourceID="SqlDataSource1"

DataTextField="Album_name" DataValueField="Album_name">

код:
public partial class searchaz : System.Web.UI.Page
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["iuploadaz"].ConnectionString);

protected void Page_Load(object sender, EventArgs e)
{

// Label3.Text = a.ToString();
}

protected void Button1_Click(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand("select * from tb_Gallery", con);
// SqlDataAdapter da = new SqlDataAdapter(cmd);

// DataSet ds = new DataSet();
// da.Fill(ds, "album_name");
// DropDownList1.DataSource = ds;
// DropDownList1.DataTextField = "album_name";
//DropDownList1.DataBind();
SqlDataAdapter da = new SqlDataAdapter("select album_name from tb_Gallery where album_name like '" + DropDownList1.Text + "'", con);
//DataSet ds = new DataSet();
//da.Fill(ds);
//DropDownList1.DataSource = ds;
//DropDownList1.DataTextField = "album_name";
//DropDownList1.DataBind();
//gvsearch.DataSource = ds;
//gvsearch.DataBind();

}
}
}

CHill60

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

Member 13802222

<название>

#Select1
{
ширина: 197px;
}







<asp:DropDownList ID="DropDownList1" runat="сервер"
DataSourceID="SqlDataSource1" DataTextField="Album_name"
DataValueField="Album_name">
<asp:listitem>Lamborghini
<asp:listitem>BMW

<asp:SqlDataSource ID="SqlDataSource1" runat="сервер"
ConnectionString="<%$ ConnectionStrings:iuploadaz %>"
SelectCommand="SELECT [Album_name] FROM [tb_Gallery]">
&ЛТ;как ASP:scriptmanager при ИД="ScriptManager1" атрибут runat="сервер"и GT;

&ЛТ;АСП:кнопка ID="кнопка 1" атрибут runat="сервер" функция onclick="обработчика button1_click" текст="кнопка" /&ГТ;
<asp:AnimationExtender ID="Button1_AnimationExtender" runat="сервер"
Enabled="True" TargetControlID="Button1">

&ЛТ;в ASP:GridView в идентификатор="gvsearch" атрибут runat="сервер" AutoGenerateColumns="ложных"
DataSourceID="SqlDataSource1" Width="305px">
<колонки>
<asp:BoundField DataField="Album_name" HeaderText="Album_name"
SortExpression="Album_name" />


&ЛТ;АСП:ListBox элемент с ID="списке listbox1" атрибут runat="сервер" свойстве datasourceid="sqldatasource1 на"
DataTextField="Album_name" DataValueField="Album_name">




....
код:
общественный разделяемого класса searchaz : система.Веб.Пользовательского интерфейса.Страницы
{
SqlConnection con = новый SqlConnection(ConfigurationManager.ConnectionStrings["iuploadaz"].Параметр connectionString);

охраняемых недействительными в(объект отправителя, EventArgs в электронной)
{

// Label3.Текст = а.Метод toString();
}

охраняемых недействительными обработчика button1_click(объект отправителя, EventArgs в электронной)
{
SqlCommand cmd = new SqlCommand("select * from tb_Gallery", con);
// SqlDataAdapter da = новый SqlDataAdapter(cmd);

// DataSet ds = новый набор данных();
// да.Заполнить(ДС, "album_name");
// DropDownList1.Источник данных = ДС;
// DropDownList1.DataTextField = "имя альбома";
//DropDownList1.DataBind();
SqlDataAdapter da = new SqlDataAdapter("select album_name from tb_Gallery where album_name like '" + DropDownList1.Text + "'", con);
//DataSet ds = новый набор данных();
//да.Заполнить(ДС);
//DropDownList1.Источник данных = ДС;
//DropDownList1.DataTextField = "имя альбома";
//DropDownList1.DataBind();
//gvsearch.Источник данных = ds;
//gvsearch.Привязку();

}
}
}

Wendelius

При добавлении дополнительной информации используйте ссылку "улучшить вопрос" для редактирования вопроса

Member 13802222

спасибо.в порядке.

2 Ответов

Рейтинг:
5

Wendelius

Прежде всего, не объединяйте данные из элементов управления в SQL-запрос. Это оставляет вас открытыми для SQL-инъекция - Википедия[^] . Правильный способ заключается в использовании Класс Объектов Sqlparameter (Системы.Данных.Поставщики sqlclient)[^]

Что касается вашего запроса, я не совсем понимаю, почему вы хотите получить данные, которые у вас уже есть в приведенном ниже запросе

SqlDataAdapter da = new SqlDataAdapter("select album_name from tb_Gallery where album_name like '" + DropDownList1.Text + "'", con);

Но если идея состоит в том, чтобы использовать подобное сравнение, вы, вероятно, захотите иметь где-то подстановочный знак. С параметрами, что-то вроде
SqlDataAdapter da = new SqlDataAdapter("select album_name from tb_Gallery where album_name like @albumname + '%'", con);

Для получения дополнительной информации см. LIKE (Transact-SQL) | Microsoft Docs[^]

ДОПОЛНЕНИЕ
--------
Чтобы использовать параметр, вы должны определить его и предоставить значение для него. Например
...
SqlDataAdapter da = new SqlDataAdapter("select album_name from tb_Gallery where album_name like @albumname + '%'", con);
da.SelectCommand.Parameters.Add(
    "@albumname ", SqlDbType.VarChar, 100).Value = DropDownList1.Text;
....


Member 13802222

Ошибка: необходимо объявить скалярную переменную "@album_name".

Wendelius

Вероятно, вы выполняете запрос без указания значения параметра. Смотрите обновленный ответ.

CHill60

Я думаю, что ОП ошибся, но также должен быть "@albumname "" @albumname"

Wendelius

Хорошая мысль, спасибо!

CHill60

Этот параметр называется @albumname, а не @album_name - возможно, вы ошиблись в решении.

Member 13802222

это сработало, но я не могу понять, почему gridview не появляется на странице

Wendelius

Это уже другой вопрос. Попробуйте опубликовать еще один вопрос и включить весь соответствующий код, связанный с проблемой gridview.

Рейтинг:
1

W∴ Balboos, GHB

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

Лучший способ-это иметь ИДЕНТИЧНОСТЬ [^] столбец - и это называется значением в вашем списке выбора. Затем вы можете выбрать эту конкретную строку и делать с ней все, что хотите.

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

Тогда вы, конечно, можете запросить только то поле или поля, которые вас интересуют.


Member 13802222

спасибо, что ответили.
как я могу пометить данные?

W∴ Balboos, GHB

Если вы говорите о каждой отдельной строке, вы можете добавить новое поле типа INT, а затем, по ссылке, которую я дал вам, преобразовать его в поле идентификатора. Он автоматически заполнится последовательными числами.

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

Примечание: Если вы нашли ответ, который решает ваш вопрос, отметьте его как принятый, чтобы он мог быть должным образом закрыт.