Рейтинг:
5
Karthik_Mahalingam
пробовать
protected void searchname_date()
{
List<string> lstSelectedItems = new List<string>();
if (ListBox1.Items.Count > 0)
for (int i = 0; i < ListBox1.Items.Count; i++)
if (ListBox1.Items[i].Selected)
lstSelectedItems.Add(ListBox1.Items[i].Text);
string inQuery = string.Join("','", lstSelectedItems);
inQuery = "'" + inQuery + "'";
SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
string Query = "SELECT * FROM [dsr_data] where (date_time between @from and @to ) And session_name in ({0})";
Query = string.Format(Query, inQuery);
SqlCommand cmd = new SqlCommand(Query, cnn);
cmd.Parameters.AddWithValue("@from", TextBox1.Text);
cmd.Parameters.AddWithValue("@to", TextBox4.Text);
DataTable dtAdmin = new DataTable();
SqlDataAdapter da;
da = new SqlDataAdapter(Query, cnn);
da.Fill(dtAdmin);
if (dtAdmin.Rows.Count > 0)
GVmydsr.DataSource = dtAdmin;
else
GVmydsr.DataSource = null;
GVmydsr.DataBind();
}
Примечание:Форматирование строки sql запроса таково
уязвимый к
SQL-инъекция[
^] атаки
всегда использовать
Параметризованные запросы для предотвращения атак SQL-инъекций в SQL Server[
^]
ADI@345
все еще сталкиваясь с той же проблемой, показывается только последняя запись элемента списка
Karthik_Mahalingam
какую ценность вы получаете в "inQuery "
ADI@345
охраняемых недействительными searchname_date()
{
Список<строка> У lstSelectedItems = новый список<строка&ГТ;();
if (ListBox1.Предметы.Count > 0)
{
for (int i = 0; i < ListBox1.Предметы.Граф; i++)
{
if (ListBox1.Элементы[я].Выбранный)
{
lstSelectedItems.Добавить(Список Listbox1.Пункты[i].текст);
string inQuery = строка.Join (" ' ,'", lstSelectedItems);
inQuery = "'" + inQuery + "'";
SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].Параметр connectionString);
строка запроса = "выбрать * из [dsr_data], где (дата_время период с '" + текстовое поле textbox1.Текст + "' и '" + TextBox4.Текст + "') и session_name='" + inQuery + "'";
Строка запроса.Формат(запрос, запрос);
DataTable dtAdmin = новый DataTable();
SqlDataAdapter da;
da = новый SqlDataAdapter(запрос, cnn);
da.Fill(dtAdmin);
если (dtAdmin.Строк.Count > 0)
{
GVmydsr.Источник данных = dtAdmin;
Гвмыдср.Привязку();
}
еще
{
GVmydsr.Источник данных = значение null;
Гвмыдср.Привязку();
}
}
}
}
}
ОШИБКА :-
Deepali-это одно из имен элемента списка.
Неправильный синтаксис рядом с "Дипали".
Описание: необработанное исключение возникло во время выполнения текущего веб-запроса. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.
Сведения Об Исключении: System.Данных.Sqlclient как.Ситуацию sqlexception: неправильный синтаксис рядом с 'же Дипали Ханне'.
Karthik_Mahalingam
protected void searchname_date()
{
List<string> lstSelectedItems = new List<string>();
if (ListBox1.Items.Count > 0)
for (int i = 0; i < ListBox1.Items.Count; i++)
if (ListBox1.Items[i].Selected)
lstSelectedItems.Add(ListBox1.Items[i].Text);
string inQuery = string.Join("','", lstSelectedItems);
inQuery = "'" + inQuery + "'";
SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
string Query = "SELECT * FROM [dsr_data] where (date_time between @from and @to ) And session_name in ({0})";
Query = string.Format(Query, inQuery);
SqlCommand cmd = new SqlCommand(Query, cnn);
cmd.Parameters.AddWithValue("@from", TextBox1.Text);
cmd.Parameters.AddWithValue("@to", TextBox4.Text);
DataTable dtAdmin = new DataTable();
SqlDataAdapter da;
da = new SqlDataAdapter(Query, cnn);
da.Fill(dtAdmin);
if (dtAdmin.Rows.Count > 0)
GVmydsr.DataSource = dtAdmin;
else
GVmydsr.DataSource = null;
GVmydsr.DataBind();
}
ADI@345
сэр , на самом деле что происходит , когда мы выбираем два элемента из списка, он прекрасно работает с одним элементом, но с двумя элементами
Выберите * из [dsr_data], где date_time между '11/1/2017' и '11/30/2017' и session_name='abc','efg'
этот запрос не дает никаких выходных данных в sql server..
Karthik_Mahalingam
SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
string Query = "SELECT * FROM [dsr_data] where (date_time between @from and @to ) And session_name in ({0})";
Query = string.Format(Query, inQuery);
SqlCommand cmd = new SqlCommand(Query, cnn);
cmd.Parameters.AddWithValue("@from", TextBox1.Text);
cmd.Parameters.AddWithValue("@to", TextBox4.Text);
ADI@345
Да, я забыл использовать в предложении ..теперь это работает.. спасибо
Karthik_Mahalingam
добро пожаловать